版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流人工魚(yú)群算法matlab實(shí)現(xiàn).精品文檔.function lhl_AFclc;clear all; close all;format longVisual = 2.5; %人工魚(yú)的感知距離Step = 0.3; %人工魚(yú)的移動(dòng)最大步長(zhǎng)N = 10; %人工魚(yú)的數(shù)量Try_number = 50;%迭代的最大次數(shù)delta=0.618; %擁擠度因子a1 = -10; b1 = 10; a2 = -10; b2 = 10; d = ;%存儲(chǔ)50個(gè)狀態(tài)下的目標(biāo)函數(shù)值;k = 0; m = 50;%迭代次數(shù)X1 = rand(N,1)*(b1-a1
2、)+a1; %在-1010之間,隨機(jī)生成50個(gè)數(shù);X2 = rand(N,1)*(b2-a2)+a2;X = X1 X2; %X = ones(N,2);%for i = 1:N% X(i,1)=-10;% X(i,2)=10;%end% 人工魚(yú)數(shù)量,兩個(gè)狀態(tài)變量X1和X2;%計(jì)算50個(gè)初始狀態(tài)下的;for i = 1:N www = X(i,1),X(i,2); d(i) = maxf(www); end%公告牌用于記錄人工魚(yú)個(gè)體的歷史最好狀態(tài)w,i = max(d); % 求出初始狀態(tài)下的最大值w和最大值的位置i;maxX = X(i,1),X(i,2); % 初始公告板記錄,最大值位置;
3、maxY = w; % 初始化公告板記錄,最大值;figurex = ; figurey = ; figurez = ;figurex(numel(figurex)+1) = maxX(1); % 將maxX(1)放入figurex中,figurey(numel(figurey)+1) = maxX(2); % numel返回?cái)?shù)組或者向量中所含元素的總數(shù),matlab數(shù)組下標(biāo)默認(rèn)是從1開(kāi)始的figurez(numel(figurez)+1) = maxY;while(k<m) for i = 1:N XX = X(i,1),X(i,2); %拿出其中一條魚(yú)來(lái)看他的四種行為判斷%第一種行為
4、:聚群行為:伙伴多且不擠,就向伙伴中心位置移動(dòng)%群聚行為是伙伴的中心點(diǎn),凸規(guī)劃下,中心點(diǎn)一定還在約束內(nèi)%群聚行為不是一種maxf(Xc)的比較,就是看伙伴位置 nf1=0; Xc=0; label_swarm =0; %群聚行為發(fā)生標(biāo)志 for j = 1:N XX_1 = X(j,1), X(j,2); if (norm(XX_1-XX)<Visual) % norm函數(shù)求向量XXX-XX的范數(shù),由于二維向量,2或者省略都可以 nf1 = nf1+1; Xc = Xc+XX_1; end end Xc=Xc-XX; %需要去除XX本身; nf1=nf1-1; Xc = Xc/nf1;
5、%此時(shí)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; end if(XXnext1(1) < a1) XXnext1(1) = a1; end if(XXnext1(2) > b2) XXnext1(2) = b2; end if(XXnext1(2) < a2) XXnex
6、t1(2) = a2; end label_swarm =1; temp_y_XXnext1=maxf(XXnext1); else label_swarm =0; temp_y_XXnext1=-inf; end%第二種行為:追尾行為 :周圍伙伴有最大值且附近不擠,向其伙伴方向移動(dòng)%追尾行為追尋伙伴行為,還是在約束內(nèi) temp_maxY = -inf; %按照理論來(lái)說(shuō)這塊應(yīng)該初始化為-無(wú)窮小, label_follow =0;%追尾行為發(fā)生標(biāo)記 for j = 1:N XX_2 = X(j,1),X(j,2); if(norm(XX_2-XX)<Visual) && (
7、maxf(XX_2)>temp_maxY) temp_maxX = XX_2; temp_maxY = maxf(XX_2); end end nf2=0; for j = 1:N XX_2 = X(j,1),X(j,2); if(norm(XX_2-temp_maxX)<Visual) nf2=nf2+1; end end nf2=nf2-1;%去掉他本身 if(temp_maxY/nf2)>delta*maxf(XX) && (norm(temp_maxX-XX)=0) %附近有Yj最大的伙伴,并且不太擁擠 XXR2=rand*Step*(temp_max
8、X-XX)/norm(temp_maxX-XX);%rand不是隨機(jī)反向,是隨機(jī)步長(zhǎng) XXnext2 = XX+XXR2; if(XXnext2(1) > b1) XXnext2(1) = b1; end if(XXnext2(1) < a1) XXnext2(1) = a1; end if(XXnext2(2) > b2) XXnext2(2) = b2; end if(XXnext2(2) < a2) XXnext2(2) = a2; end label_follow =1; temp_y_XXnext2=maxf(XXnext2); else label_foll
9、ow =0; temp_y_XXnext2=-inf; end %第三種行為:覓食行為:與前兩個(gè)行為不同,覓食和隨機(jī)行為都是找附近的狀態(tài),而不是找附近的同伴%覓食和隨機(jī)行為可能出現(xiàn)超出約束,所以,XX_3和XX_4是不一樣的%覓食行為和群聚行為、追尾行為是不一樣的,覓食行為是一種根據(jù)狀態(tài)來(lái)判斷的行為,群聚和追尾是根據(jù)伙伴來(lái)判斷的行為 label_prey =0; %判斷覓食行為是否找到優(yōu)于當(dāng)前的狀態(tài) for j = 1:Try_number R1V=Visual*(-1+2*rand(2,1)'); XX_3 = XX+R1V; if(XX_3(1) > b1) % 下面這四個(gè)是
10、一套,如果超出約束條件,就選值為邊界條件 XX_3(1) = b1; end if(XX_3(1) < a1) XX_3(1) = a1; end if(XX_3(2) > b2) XX_3(2) = b2; end if(XX_3(2) < a2) XX_3(2) = a2; end if(maxf(XX)<maxf(XX_3) XXR3=rand*Step*(XX_3-XX)/norm(XX_3-XX); XXnext3 = XX+XXR3; if(XXnext3(1) > b1) % 下面這四個(gè)是一套,如果超出約束條件,就選值為邊界條件 XXnext3(1)
11、 = b1; end if(XXnext3(1) < a1) XXnext3(1) = a1; end if(XXnext3(2) > b2) XXnext3(2) = b2; end if(XXnext3(2) < a2) XXnext3(2) = a2; end label_prey =1; break; end end temp_y_XXnext3=max(XXnext3); if(label_prey =0) temp_y_XXnext3=-inf; end%行為選擇 if(label_swarm=0) && (label_follow=0) &
12、;& (label_prey =0) %聚群和追尾魚(yú)太多太擁擠,都不發(fā)生;覓食覓不到更好的,造成三種行為都不發(fā)生。 %如果前三種行為都沒(méi)有發(fā)生出現(xiàn),必然是發(fā)生隨機(jī)行為 R2S=Step*(-1+2*rand(2,1)'); temp_XX = XX+R2S; if(XX(1) > b1) % 下面這四個(gè)是一套,如果超出約束條件,就選值為邊界條件 XX(1) = b1; end if(XX(1) < a1) XX(1) = a1; end if(XX(2) > b2) XX(2) = b2; end if(XX(2) < a2) XX(2) = a2; e
13、nd else %三種行為找最優(yōu) if(temp_y_XXnext1 > temp_y_XXnext2) if(temp_y_XXnext1 > temp_y_XXnext3) temp_XX = XXnext1; else temp_XX = XXnext3; end else if(temp_y_XXnext2 > temp_y_XXnext3) temp_XX = XXnext2; else temp_XX = XXnext3; end end end XX=temp_XX; X(i,1) = XX(1); X(i,2) = XX(2); end %至此,所有人工魚(yú),完成一次行為判斷和移動(dòng) %這塊是更新公告牌信息 for i = 1:N XXX = 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; end end x=X(:,1)' y=X(:,2)' plo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林鐵道職業(yè)技術(shù)學(xué)院《汽車電氣設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)宣傳材料中的漢字書(shū)寫藝術(shù)
- 2025年岳麓版選擇性必修1化學(xué)下冊(cè)月考試卷
- 2025年滬科新版九年級(jí)物理上冊(cè)月考試卷
- 2025年人教五四新版選擇性必修3物理上冊(cè)月考試卷
- 2025年滬科版高三地理下冊(cè)月考試卷含答案
- 家庭教育對(duì)孩子時(shí)間管理能力的培養(yǎng)
- 2024年航天航空工程分包勞務(wù)合同
- 二零二五年度酒吧股份購(gòu)買及市場(chǎng)拓展支持合同2篇
- 人教版二年級(jí)語(yǔ)文上冊(cè)全冊(cè)教案
- 污水管網(wǎng)技術(shù)標(biāo)
- 2023年河南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 《輸液港的護(hù)理》課件
- 新修訂反洗錢法律知識(shí)培訓(xùn)課件
- 精彩的儲(chǔ)運(yùn)部年終總結(jié)
- 山西省太原市重點(diǎn)中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
- Python開(kāi)發(fā)工程師招聘筆試題及解答(某大型國(guó)企)
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(kù)(附含答案)
- 妊娠期高血糖診治指南
- 2024壓鑄機(jī)安全技術(shù)規(guī)范
- 綿陽(yáng)小升初數(shù)學(xué)試題-(綿中英才學(xué)校)
評(píng)論
0/150
提交評(píng)論