資源簡介
人工魚群算法,Matlab源代碼,絕對沒問題,可以跑的
代碼片段和文件信息
function?AF
clc;clear?all;?close?all;
format?long
Visual?=?2.5;
Step?=?0.3;
N?=?50;
Try_number?=?50;
a1?=?-10;?b1?=?10;?a2?=?-10;?b2?=?10;?d?=?[];?h?=?1e-1;
Friend_number?=?50;?k?=?0;?m?=?50;
X1?=?rand(N1)*(b1-a1)+a1;
X2?=?rand(N1)*(b2-a2)+a2;
X?=?[X1?X2];?%?人工魚數量
for?i?=?1:N
????www?=?[X(i1)X(i2)];
????d(i)?=?maxf(www);
end
[wi]?=?max(d);
maxX?=?[X(i1)X(i2)];?%?初始公告板記錄
maxY?=?w;?%?初始化公告板記錄
figurex?=?[];?figurey?=?[];?figurez?=?[];
figurex(numel(figurex)+1)?=?maxX(1);
figurey(numel(figurey)+1)?=?maxX(2);
figurez(numel(figurez)+1)?=?maxY;
kkk?=?0;
while(k ????for?i?=?1:N
????????XX?=?[X(i1)X(i2)];?%?人工魚當前狀態Xi
????????nf?=?0;
????????Xc?=?0;
????????for?j?=?1:N?%?聚群行為開始
????????????XXX?=?[X(j1)?X(j2)];
????????????if?(norm(XXX-XX) ????????????????nf?=?nf+1;
????????????????Xc??=?Xc+XXX;
????????????end
????????end
????????Xc?=?Xc/nf;
????????if(maxf(Xc)?>?maxf(XX))
????????????XXnext1?=?XX+rand*Step*(Xc-XX)/norm(Xc-XX);
????????????if(XXnext1(1)?>?b1)
????????????????XXnext1(1)?=?b1;
????????????end
????????????if(XXnext1(1)?????????????????XXnext1(1)?=?a1;
????????????end
????????????if(XXnext1(2)?>?b2)
????????????????XXnext1(2)?=?b2;
????????????end
????????????if(XXnext1(2)?????????????????XXnext1(2)?=?a2;
????????????end
????????else
????????????XXnext1?=?gmjprey(XXTry_numberVisualStep);
????????????if(XXnext1(1)?>?b1)
????????????????XXnext1(1)?=?b1;
????????????end
????????????if(XXnext1(1)?????????????????XXnext1(1)?=?a1;
????????????end
????????????if(XXnext1(2)?>?b2)
????????????????XXnext1(2)?=?b2;
????????????end
????????????if(XXnext1(2)?????????????????XXnext1(2)?=?a2;
????????????end
????????end?%?聚群行為結束
????????
????????%?maxX?=?XX;?%?追尾行為開始
????????%?maxY?=?maxf(XX);
????????for?j?=?1:Friend_number
????????????XXX?=?[X(j1)X(j2)];
????????????if(norm(XXX-XX)
- 上一篇:matlab圖像處理gui
- 下一篇:33節點的遺傳算法無功優化MATLAB程序
評論
共有 條評論