欢迎来到天天文库
浏览记录
ID:37751410
大小:20.65 KB
页数:6页
时间:2019-05-30
《人工鱼群算法matlab实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、functionlhl_AFclc;clearall;closeall;formatlongVisual=2.5;%人工鱼的感知距离Step=0.3;%人工鱼的移动最大步长N=10;%人工鱼的数量Try_number=50;%迭代的最大次数delta=0.618;%拥挤度因子a1=-10;b1=10;a2=-10;b2=10;d=[];%存储50个状态下的目标函数值;k=0;m=50;%迭代次数X1=rand(N,1)*(b1-a1)+a1;%在-10~10之间,随机生成50个数;X2=rand(N,1)*(b2-a2)+a2;X=[X1X2];%X=ones(N,2);%fori=1
2、:N%X(i,1)=-10;%X(i,2)=10;%end%人工鱼数量,两个状态变量X1和X2;%计算50个初始状态下的;fori=1:Nwww=[X(i,1),X(i,2)];d(i)=maxf(www);end%公告牌用于记录人工鱼个体的历史最好状态[w,i]=max(d);%求出初始状态下的最大值w和最大值的位置i;maxX=[X(i,1),X(i,2)];%初始公告板记录,最大值位置;maxY=w;%初始化公告板记录,最大值;figurex=[];figurey=[];figurez=[];figurex(numel(figurex)+1)=maxX(1);%将maxX(1)放
3、入figurex中,figurey(numel(figurey)+1)=maxX(2);%numel返回数组或者向量中所含元素的总数,matlab数组下标默认是从1开始的figurez(numel(figurez)+1)=maxY;while(k4、orj=1:NXX_1=[X(j,1),X(j,2)];if(norm(XX_1-XX)delta*maxf(XX))&&(norm(Xc-XX)~=0))XXR1=rand*Step*(Xc-XX)/norm(Xc-XX);XXnext1=XX+XXR1;if(XXnext1(1)>b1)X5、Xnext1(1)=b1;endif(XXnext1(1)b2)XXnext1(2)=b2;endif(XXnext1(2)6、无穷小,label_follow=0;%追尾行为发生标记forj=1:NXX_2=[X(j,1),X(j,2)];if((norm(XX_2-XX)temp_maxY))temp_maxX=XX_2;temp_maxY=maxf(XX_2);endendnf2=0;forj=1:NXX_2=[X(j,1),X(j,2)];if(norm(XX_2-temp_maxX)delta*maxf(XX)&&(norm(temp_max7、X-XX)~=0))%附近有Yj最大的伙伴,并且不太拥挤XXR2=rand*Step*(temp_maxX-XX)/norm(temp_maxX-XX);%rand不是随机反向,是随机步长XXnext2=XX+XXR2;if(XXnext2(1)>b1)XXnext2(1)=b1;endif(XXnext2(1)b2)XXnext2(2)=b2;endif(XXnext2(2
4、orj=1:NXX_1=[X(j,1),X(j,2)];if(norm(XX_1-XX)delta*maxf(XX))&&(norm(Xc-XX)~=0))XXR1=rand*Step*(Xc-XX)/norm(Xc-XX);XXnext1=XX+XXR1;if(XXnext1(1)>b1)X
5、Xnext1(1)=b1;endif(XXnext1(1)b2)XXnext1(2)=b2;endif(XXnext1(2)6、无穷小,label_follow=0;%追尾行为发生标记forj=1:NXX_2=[X(j,1),X(j,2)];if((norm(XX_2-XX)temp_maxY))temp_maxX=XX_2;temp_maxY=maxf(XX_2);endendnf2=0;forj=1:NXX_2=[X(j,1),X(j,2)];if(norm(XX_2-temp_maxX)delta*maxf(XX)&&(norm(temp_max7、X-XX)~=0))%附近有Yj最大的伙伴,并且不太拥挤XXR2=rand*Step*(temp_maxX-XX)/norm(temp_maxX-XX);%rand不是随机反向,是随机步长XXnext2=XX+XXR2;if(XXnext2(1)>b1)XXnext2(1)=b1;endif(XXnext2(1)b2)XXnext2(2)=b2;endif(XXnext2(2
6、无穷小,label_follow=0;%追尾行为发生标记forj=1:NXX_2=[X(j,1),X(j,2)];if((norm(XX_2-XX)temp_maxY))temp_maxX=XX_2;temp_maxY=maxf(XX_2);endendnf2=0;forj=1:NXX_2=[X(j,1),X(j,2)];if(norm(XX_2-temp_maxX)delta*maxf(XX)&&(norm(temp_max
7、X-XX)~=0))%附近有Yj最大的伙伴,并且不太拥挤XXR2=rand*Step*(temp_maxX-XX)/norm(temp_maxX-XX);%rand不是随机反向,是随机步长XXnext2=XX+XXR2;if(XXnext2(1)>b1)XXnext2(1)=b1;endif(XXnext2(1)b2)XXnext2(2)=b2;endif(XXnext2(2
此文档下载收益归作者所有