人工魚群算法matlab實現(xiàn)_第1頁
人工魚群算法matlab實現(xiàn)_第2頁
人工魚群算法matlab實現(xiàn)_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、functionlhl_AFclc;clearall;closeall;formatlongVisual=2.5;%Step=0.3;%N=10;%Try_number=50;%delta=0.618;%人工魚的感知距離人工魚的移動最大步長人工魚的數(shù)量迭代的最大次數(shù)擁擠度因子a1=-10;b1=10;a2=-10;b2=10;d=;%存儲50個狀態(tài)下的目標函數(shù)值;k=0;m=50;%迭代次數(shù)X1=rand(N,1)*(b1-a1)+a1;%在-1010之間,隨機生成50個數(shù);X2=rand(N,1)*(b2-a2)+a2;X=X1X2;%X=ones(N,2);%fori=1:N%X(i,1)

2、=-10;%X(i,2)=10;%end%人工魚數(shù)量,兩個狀態(tài)變量X1和X2;咐算50個初始狀態(tài)下的;fori=1:Nwww=X(i,1),X(i,2);d(i)=maxf(www);end%:告牌用于記錄人工魚個體的歷史最好狀態(tài)w,i=max(d);%求出初始狀態(tài)下的最大值w和最大值的位置i;maxX=X(i,1),X(i,2);%初始公告板記錄,最大值位置;maxY=w;%初始化公告板記錄,最大值;figurex=;figurey=;figurez=;figurex(numel(figurex)+1)=maxX(1);%將maxX(1)放入figurex中,figurey(numel(fi

3、gurey)+1)=maxX(2);%numel返回數(shù)組或者向量中所含元素的總數(shù),matlab數(shù)組下標默認是從1開始的figurez(numel(figurez)+1)=maxY;while(k<m)fori=1:NXX=X(i,1),X(i,2);%拿出其中一條魚來看他的四種行為判斷%種行為:聚群行為:伙伴多且不擠,就向伙伴中心位置移動姍聚行為是伙伴的中心點,凸規(guī)劃下,中心點一定還在約束內(nèi)姍聚行為不是一種maxf(Xc)的比較,就是看伙伴位置nf1=0;Xc=0;label_swarm=0;%群聚行為發(fā)生標志forj=1:NXX_1=X(j,1),X(j,2);if(norm(XX_1

4、-XX)<Visual)%norm函數(shù)求向量XXX-XX的范數(shù),由于二維向量,2或者省略都可以nf1=nf1+1;Xc=Xc+XX_1;endendXc=Xc-XX;%需要去除XX本身;nf1=nf1-1;Xc=Xc/nf1;%此時Xc表示XX感知范圍其他伙伴的中心位置;if(maxf(Xc)/nf1>delta*maxf(XX)&&(norm(Xc-XX)=0)XXR1=rand*Step*(Xc-XX)/norm(Xc-XX);XXnext1=XX+XXR1;if(XXnext1(1)>b1)XXnext1(1)=b1;endif(XXnext1(1)&l

5、t;a1)XXnext1(1)=a1;endif(XXnext1(2)>b2)XXnext1(2)=b2;endif(XXnext1(2)<a2)XXnext1(2)=a2;endlabel_swarm=1;temp_y_XXnext1=maxf(XXnext1);elselabel_swarm=0;temp_y_XXnext1=-inf;end%種行為:追尾行為:周圍伙伴有最大值且附近不擠,向其伙伴方向移動%追尾行為追尋伙伴行為,還是在約束內(nèi)temp_maxY=-inf;%按照理論來說這塊應該初始化為-無窮小,label_follow=0;%追尾行為發(fā)生標記forj=1:NXX_

6、2=X(j,1),X(j,2);if(norm(XX_2-XX)<Visual)&&(maxf(XX_2)>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)<Visual)nf2=nf2+1;endendnf2=nf2-1;%去掉他本身if(temp_maxY/nf2)>delta*maxf(XX)&&(norm(temp_maxX-XX)=0)%附近有Yj最大的伙伴,并且

7、不太擁擠XXR2=rand*Step*(temp_maxX-XX)/norm(temp_maxX-XX);%rand不是隨機反向,是隨機步長XXnext2=XX+XXR2;if(XXnext2(1)>b1)XXnext2(1)=b1;endif(XXnext2(1)<a1)XXnext2(1)=a1;endif(XXnext2(2)>b2)XXnext2(2)=b2;endif(XXnext2(2)<a2)XXnext2(2)=a2;endlabel_follow=1;temp_y_XXnext2=maxf(XXnext2);elselabel_follow=0;tem

8、p_y_XXnext2=-inf;end%種行為:覓食行為:與前兩個行為不同,覓食和隨機行為都是找附近的狀態(tài),而不是找附近的同伴9覓食和隨機行為可能出現(xiàn)超出約束,所以,XX_3和XX_4是不一樣的9覓食行為和群聚行為、追尾行為是不一樣的,覓食行為是一種根據(jù)狀態(tài)來判斷的行為,群聚和追尾是根據(jù)伙伴來判斷的行為label_prey=0;%判斷覓食行為是否找到優(yōu)于當前的狀態(tài)forj=1:Try_numberR1V=Visual*(-1+2*rand(2,1)');XX_3=XX+R1V;if(XX_3(1)>b1)%下面這四個是一套,如果超出約束條件,就選值為邊界條件XX_3(1)=b1

9、;endif(XX_3(1)<a1)XX_3(1)=a1;endif(XX_3(2)>b2)XX_3(2)=b2;endif(XX_3(2)<a2)XX_3(2)=a2;endif(maxf(XX)<maxf(XX_3)XXR3=rand*Step*(XX_3-XX)/norm(XX_3-XX);XXnext3=XX+XXR3;if(XXnext3(1)>b1)%下面這四個是一套,如果超出約束條件,就選值為邊界條件XXnext3(1)=b1;endif(XXnext3(1)<a1)XXnext3(1)=a1;endif(XXnext3(2)>b2)XX

10、next3(2)=b2;endif(XXnext3(2)<a2)XXnext3(2)=a2;endlabel_prey=1;break;endendtemp_y_XXnext3=max(XXnext3);if(label_prey=0)temp_y_XXnext3=-inf;end%選擇if(label_swarm=0)&&(label_follow=0)&&(label_prey=0)%聚群和追尾魚太多太擁擠,都不發(fā)生;覓食覓不到更好的,造成三種行為都不發(fā)生。%如果前三種行為都沒有發(fā)生出現(xiàn),必然是發(fā)生隨機行為R2S=Step*(-1+2*rand(2,1

11、)');temp_XX=XX+R2S;if(XX(1)>b1)%下面這四個是一套,如果超出約束條件,就選值為邊界條件XX(1)=b1;endif(XX(1)<a1)XX(1)=a1;endif(XX(2)>b2)XX=b2;endif(XX(2)<a2)XX=a2;endelse%三種行為找最優(yōu)if(temp_y_XXnext1>temp_y_XXnext2)if(temp_y_XXnext1>temp_y_XXnext3)temp_XX=XXnextl;elsetemp_XX=XXnext3;endelseif(temp_y_XXnext2>

12、temp_y_XXnext3)temp_XX=XXnext2;elsetemp_XX=XXnext3;endendendXX=temp_XX;X(i,1)=XX(1);X(i,2)=XX(2);%end%至此,所有人工魚,完成一次行為判斷和移動%這塊是更新公告牌信息fori=1:NXXX=X(i,1),X(i,2);if(maxf(XXX)>maxY)maxY=maxf(XXX);maxX=XXX;figurex(numel(figurex)+1)=maxX(1);figurey(numel(figurey)+1)=maxX(2);figurez(numel(figurez)+1)=maxY;endendx=X(:,1)'y=X(:,2)'plot(x,y,'*r');axis(-1010-1010);k=k+1endmaxXmaxYplot3(figurex,f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論