人工魚群算法Matlab實(shí)現(xiàn)_第1頁
人工魚群算法Matlab實(shí)現(xiàn)_第2頁
人工魚群算法Matlab實(shí)現(xiàn)_第3頁
人工魚群算法Matlab實(shí)現(xiàn)_第4頁
人工魚群算法Matlab實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、人工魚群算法Matlal實(shí)現(xiàn)人工魚群算法Matlab實(shí)現(xiàn)1基本思想人工魚群算法是一種基于模擬魚群行為的優(yōu)化算法,是由李曉磊等在2002年提出的一種新型的尋優(yōu)算法。在一片水域中,魚生存的數(shù)目最多的地方就是本水域中富含營養(yǎng)物質(zhì)最多的地方,依據(jù)這一特點(diǎn)來模仿魚群的覓食等行為,從而實(shí)現(xiàn)全局尋優(yōu),這就是魚群算法的基本思想。在魚類的活動(dòng)中,可以分為覓食行為、聚群行為、追尾行為和隨機(jī)行為這四種行為,如何利用簡單有效的方式來構(gòu)造實(shí)現(xiàn)這些行為將是算法實(shí)施的主要問題。覓食行為主要就是循著食物多的方向游動(dòng)的一種行為,在尋優(yōu)中則是向較優(yōu)方向進(jìn)行的迭代方式,如魚群模式中的視覺概念;在聚群行為中,借鑒的思想對(duì)每條人工魚規(guī)

2、定了這樣兩個(gè)規(guī)則:1盡量向鄰近伙伴的中心移動(dòng);2)避免過分擁擠,這樣就能基本實(shí)現(xiàn)人工魚的聚群能力;追尾行為就是一種向臨近的最活躍者追逐的行為,在尋優(yōu)算法中可以理解為是向附近的最優(yōu)化伙伴前進(jìn)的過程;隨機(jī)行為就是人工魚在其視野內(nèi)隨機(jī)移動(dòng)的行為,在尋優(yōu)算法中這種行為有助于解跳出局部最優(yōu)。2算法剖析假設(shè)在一個(gè)n維的目標(biāo)搜索空間中,有N條組成一個(gè)群體的人工魚,每天人工魚個(gè)體的狀態(tài)可表示為向量沒=(x1,x2,,xj,其中Xi(i=1,n)為欲尋優(yōu)的變量:人工魚當(dāng)前所在位置的食物濃度表示為Y=f(X),其中f()為目標(biāo)函數(shù);人工魚個(gè)體間距離表示為d=|XiXjll(這是二范數(shù));visual表示人工魚的感

3、知范圍,step為人工魚移動(dòng)步長,6為擁擠度因子;trynumber表示人工魚每次覓食最大試探次數(shù)。2.覓1食行為指魚循著食物多的方向游動(dòng)的一種行為,人工魚百在其視野內(nèi)隨機(jī)選擇一個(gè)狀態(tài)Xj,分別計(jì)算它們的目標(biāo)函數(shù)值進(jìn)行比較,如果發(fā)現(xiàn)Yj比逅優(yōu)(Y和逅分別為Xj和兀的適應(yīng)度值),lXi向Xj的方向移動(dòng)一步;否則,兀繼續(xù)在其視野內(nèi)選擇狀態(tài)Xj,判斷是否滿足前進(jìn)條件,反復(fù)嘗試trynumber次后,仍沒有滿足前進(jìn)條件,則隨機(jī)移動(dòng)一步使Xg到達(dá)一個(gè)新的狀態(tài)。表達(dá)式如下:Xj=Xg+rand()*visual(1)(2)(3)XjXiXnext=Xi+rand()*step*|XjXi|1Xnext=X

4、i+rand()*step其中rand()是介于0和1之間的隨機(jī)數(shù)。人工魚的視覺描述框架圖如下所示:偽代碼段如下:fori=1:Nforj=1:Try_numberXj=x(i)+VisuaL*rand();%人工魚Xi按式在其視野內(nèi)隨機(jī)選擇一個(gè)狀態(tài)Xjiff(Xj)f(x(i)%比較Xj和Xi的適應(yīng)度X_next=刈i)+rand()*step*(Xj-x(i)/norm(Xj-x(i);%人工魚Xi按式(2)朝著Xj方向移動(dòng)一步,norm()函數(shù)表示二范數(shù)break;elseX_next=x(i)+step*rand();endendend2.2聚群行為魚在游動(dòng)過程中為了保證自身的生存和躲

5、避危害會(huì)自然地聚集成群。人工魚百搜索其視野內(nèi)(dijvisual)的伙伴數(shù)目/子及中心位置Xc,若Yc/nf*(求極小值時(shí)使用小于號(hào),在求極大值時(shí)則相反;乙和逅分別為Xc和兀的適應(yīng)度值)表明伙伴中心位置狀態(tài)較優(yōu)且不太擁擠,則Xi朝伙伴的中心位置移動(dòng)一步,否則執(zhí)行覓食行為;框架圖如下所示:偽代碼段如下:nf=0;X_inside=0;fori=1:Nforj=1:Nifnorm(x(j)-x(i)Visual%求人工魚Xi與其他人工魚之間的距離nf=nf+1;%統(tǒng)計(jì)在視野范圍內(nèi)的魚數(shù)量X_inside=X_inside+x(j);%將視野范圍內(nèi)的魚進(jìn)行累加endX_inside=X_inside

6、-x(i);%需要去除Xi本身;因?yàn)樵谝婚_始計(jì)算時(shí),i=j,把中心的魚也進(jìn)行了一次計(jì)算nf=nf-1;Xc=X_inside/nf;%此時(shí)Xc表示Xi感知范圍其他伙伴的中心位置;iff(Xc)/nf6*f(x(i)x_next=x(i)+rand*Step*(Xc-x(i)/norm(Xc-x(i);else進(jìn)行覓食行動(dòng)endendend2.3追尾行為指魚向其視野區(qū)域內(nèi)的最優(yōu)方向移動(dòng)的一種行為。人工魚百搜索其視野內(nèi)(dijvisual)適應(yīng)度最高的個(gè)體Xj,其適應(yīng)度值為旳,并探索人工魚Xj視野內(nèi)的伙伴數(shù)目nf若Yj/nf6乙,表明Xj狀態(tài)較優(yōu)且不太擁擠,貝lXi朝Xj位置移動(dòng)一步,否則執(zhí)行覓食

7、行為;框架圖如下所示:偽代碼段如下:Y_max=inf;nf=O;fori=1:N%搜索人工魚Xi視野范圍內(nèi)的最高適應(yīng)度個(gè)體Xjforj=1:Nifnorm(x(j)-x(i)Visual&f(x(j)Y_max%求人工魚Xi與其他人工魚之間的距離X_max=x(j);Y_max=f(x(j);endend%搜索人工魚Xj視野范圍內(nèi)的伙伴數(shù)量forj=1:Nif(norm(x(j)-X_max)Visual)nf=nf+1;endendnf=nf-1;%去掉他本身ifY_max/nfdelta*f(x(i)x_nex=x(i,:)+rand*Step.*(temp_maxX-x(i,:)./n

8、orm(temp_maxX-x(i,:);else進(jìn)行覓食行為;endend2.4算法總述綜上所述,算法在運(yùn)算過程中,會(huì)同時(shí)進(jìn)行聚群和追尾行為。而覓食行為屬于這兩種行為中發(fā)現(xiàn)聚群對(duì)象或者追尾對(duì)象附近擁擠度過大時(shí),人工魚選擇的行為方式,若在覓食過程中,未發(fā)現(xiàn)比自身適應(yīng)度高的人工魚,則按步長step隨機(jī)移動(dòng)。最后對(duì)聚群行為和追尾行為得到的適應(yīng)度值進(jìn)行比較,選擇優(yōu)秀的人工魚作為下一代的個(gè)體。其總框架圖如下:分析擁擠度因子61擁擠度因子的取值在求極小值問題中:6=anmax,ae(0,1在求極大值問題中:6=a爲(wèi)觀e(0,1其中a為極值接近水平,nmax為期望在該鄰域內(nèi)聚集的最大人工魚數(shù)目。擁擠度因子

9、的作用機(jī)理對(duì)追尾行為的描述圖中afO為人工魚af1-5在各自視野內(nèi)的最優(yōu)人工魚,其實(shí)物濃度為Yj,C1為以af0為圓心,以視野范圍為半徑的圓,即能探知af0的最遠(yuǎn)距離,人工魚越靠近afO,狀態(tài)越優(yōu)。求極大值情況下:當(dāng)磯子1時(shí),所有人工魚af1-5都執(zhí)行追尾行為,向af0游動(dòng);16=anmaxnf6nf=anmax1當(dāng)a=1的時(shí)候,可以明顯看出來nf1時(shí),若C2的食物濃度為爲(wèi)的等濃度食物圈,則C2與C1間的人工魚af1、af2、af3執(zhí)行追尾行動(dòng),向afO游動(dòng),人工魚af4、af5執(zhí)行覓食行為。此時(shí)dnf越大執(zhí)行追尾行動(dòng)的人工魚越少,反之越多。3.2擁擠度因子的影響以極大值為例(極小值的情況正好

10、和極大值相反),6越大,表明允許的擁擠程度越小,人工魚擺脫局部最優(yōu)的能力越強(qiáng);但是收斂的速度會(huì)有所減緩,這主要因?yàn)槿斯~在逼近極值的同時(shí),會(huì)因避免過分擁擠而隨機(jī)走開或者受其它人工魚的排斥作用,不能精確逼近極值點(diǎn)??梢?,6的引入避免了人工魚過度擁擠而陷入局部極值,另一方面,該參數(shù)會(huì)使得位于極值點(diǎn)附近的人工魚之間存在相互排斥的影響,而難以向極值點(diǎn)精確逼近,所以,對(duì)于某些局部極值不是很嚴(yán)重的具體問題,可以忽略擁擠的因素,從而在簡化算法的同時(shí)也加快了算法的收斂速度和提高結(jié)果的精確程度。4算法實(shí)現(xiàn)%sum(sin(x)./x)極小值clearall;closeall;clc;Visual=25;%人工魚

11、的感知距離Step=3;%人工魚的移動(dòng)最大步長N=30;%人工魚的數(shù)量dim=10;%人工魚維度Try_number=50;%迭代的最大次數(shù)delta=27;%擁擠度因子%測試函數(shù)f=(x)sum(x.A2);f=(x)sum(xS2);ub=100;%邊界上限lb=-100;%邊界下限d=;%存儲(chǔ)50個(gè)狀態(tài)下的目標(biāo)函數(shù)值;Iteration=1;%Max_iteration=500;%迭代次數(shù)%初始化人工魚種群x=lb+rand(N,dim).*(ub-lb);%計(jì)算10個(gè)初始狀態(tài)下的適應(yīng)度值;fori=1:Nfitness_fish(i)=f(x(i,:);endbest_fitness,

12、I=min(fitness_fish);%求出初始狀態(tài)下的最優(yōu)適應(yīng)度;best_x=刈I,:);%最優(yōu)人工魚;whileIteration=Max_iterationfori=1:N%聚群行為nf_swarm=0;Xc=0;label_swarm=0;%群聚行為發(fā)生標(biāo)志%確定視野范圍內(nèi)的伙伴數(shù)目與中心位置forj=1:Nifnorm(x(j,:)-x(i,:)Visualnf_swarm=nf_swarm+1;%統(tǒng)計(jì)在感知范圍內(nèi)的魚數(shù)量Xc=Xc+x(j,:);%將感知范圍內(nèi)的魚進(jìn)行累加endendXc=Xc-x(i,:);%需要去除本身;因?yàn)樵谝婚_始計(jì)算時(shí),i=j,把中心的魚也進(jìn)行了一次計(jì)算

13、nf_swarm=nf_swarm-1;Xc=Xc/nf_swarm;%此時(shí)Xc表示視野范圍其他伙伴的中心位置;%判斷中心位置是否擁擠if(f(Xc)/nf_swarmub;lb_flac=x_swarmub;lblag2=x_prey_randf(x_prey_rand)x_swarm=x(i,:)+rand*Step.*(x_prey_rand-x(i,:)./norm(x_prey_rand-x(i,:);ub_flag2=x_swarmub;lb_flag2=x_swarmub;lblag2=x_swarmlb;x_swarm=(x_swarm.*(ub_flag2+lblag2)+u

14、b.*ub_flag2+lb.*lblag2;x_swarmitness=f(x_swarm);endend%追尾行為fitness_follow=inf;label_follow=0;%追尾行為發(fā)生標(biāo)記%搜索人工魚Xi視野范圍內(nèi)的最高適應(yīng)度個(gè)體Xjforj=1:Nif(norm(x(j,:)-x(i,:)Visual)&(f(x(j,:)fitnessfollow)best_pos=x(j,:);fitness_follow=f(x(j,:);endend%搜索人工魚Xj視野范圍內(nèi)的伙伴數(shù)量nf_follow=0;forj=1:Nifnorm(x(j,:)-best_pos)Visualnf

15、_follow=nf_follow+1;endendnf_follow=nf_follow-1;%去掉他本身%判斷人工魚Xj位置是否擁擠if(fitnessollow/nfollow)delta*f(x(i,:)&(fitness_followub;lb_flag2=x_followub;lblag2=x_prey_randf(x_prey_rand)x_follow=x(i,:)+rand*Step.*(x_prey_rand-x(i,:)./norm(x_prey_rand-x(i,:);ub_flag2=x_followub;lb_flag2=xollowub;lb_flag2=x_fo

16、llowlb;x_follow=(xollow.*(ub_flag2+lblag2)+ub.*ub_flag2+lb.*lblag2;x_follow_fitness=f(x_follow);x_follow_fitness=f(xollow);endend%兩種行為找最優(yōu)ifx_follow_fitnessx_swarm_fitnessx(i,:)=x_follow;elsex(i,:)=x_swarm;endend%更新信息fori=1:Nif(f(x(i,:)best_fitness)best_fitness=f(x(i,:);best_x=x(i,:);endendConvergence_curve(Iteration)=best_fitness;Iteration=Iteration+1;ifmod(Iteration,50)=0display(迭代次數(shù):,num2str(Iteration),最優(yōu)適應(yīng)度:,num2str(best_fitness);display(最優(yōu)人工魚:,num2str(best_x);endendfigure(Position,284214660290)subplot(1,2,1);x=-100:1:100;y=x;L=length(x);fori=1:Lforj=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論