資源描述:
《人工魚群算法實(shí)現(xiàn)最佳路徑選擇源碼》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、無約束連續(xù)函數(shù)優(yōu)化的人工魚群算法通用MATLAB源碼(2008-11-1509:49:29)標(biāo)簽:雜談?題目:無約束連續(xù)函數(shù)優(yōu)化的人工魚群算法通用MATLAB源碼此源碼是對人工魚群算法的一種實(shí)現(xiàn),用于無約束連續(xù)函數(shù)的優(yōu)化求解,對于含有約束的情況,可以先使用罰函數(shù)等方法,把問題處理成無約束的模型,再使用本源碼進(jìn)行求解,本源碼由GreenSim團(tuán)隊(duì)原創(chuàng),轉(zhuǎn)載請注明,有意購買源碼或代寫相關(guān)程序,請與GreenSim團(tuán)隊(duì)聯(lián)系(主頁http://blog.sina.com.cn/greensim)。function[BESTX,B
2、ESTY,ALLX,ALLY]=FSOUCP(K,N,V,Delta,L,LB,UB)%%FishSwarmOptimizationforUnconstrainedContinuousProblem%%FSOUCP.m%%無約束連續(xù)函數(shù)的人工魚群優(yōu)化算法%?GreenSim團(tuán)隊(duì)原創(chuàng)作品,轉(zhuǎn)載請注明%?Email:greensim@163.com%?GreenSim團(tuán)隊(duì)主頁:http://blog.sina.com.cn/greensim%?[color=red]歡迎訪問GreenSim——算法仿真團(tuán)隊(duì)→[url=http
3、://blog.sina.com.cn/greensim]http://blog.sina.com.cn/greensim[/url][/color]%%此函數(shù)實(shí)現(xiàn)人工魚群算法,用于求解無約束連續(xù)函數(shù)最小化問題%%對于最大化問題,請先將其加負(fù)號轉(zhuǎn)化為最小化問題%%輸入?yún)?shù)列表%K???????迭代次數(shù)%N???????魚群規(guī)模%V???????人工魚的感知范圍%Delta???擁擠程度的判決門限,取值0~1之間%L???????覓食行為的試探次數(shù)%LB??????決策變量的下界,M×1的向量%UB??????決策變量的上
4、界,M×1的向量%%輸出參數(shù)列表%BESTX???K×1細(xì)胞結(jié)構(gòu),每一個(gè)元素是M×1向量,記錄每一代的最優(yōu)人工魚的狀態(tài)%BESTY???K×1矩陣,記錄每一代的最優(yōu)人工魚的評價(jià)函數(shù)值%ALLX????K×1細(xì)胞結(jié)構(gòu),每一個(gè)元素是M×N矩陣,記錄每一代人工魚的位置%ALLY????K×N矩陣,記錄每一代人工魚的評價(jià)函數(shù)值%%測試函數(shù)設(shè)置%測試函數(shù)用單獨(dú)的子函數(shù)編寫好,在子函數(shù)FIT.m中修改要調(diào)用的測試函數(shù)名即可%注意:決策變量的下界LB和上界UB,要與測試函數(shù)保持一致%%參考設(shè)置%[BESTX,BESTY,ALLX,AL
5、LY]=FSOUCP(50,30,0.5,0.3,20,LB,UB)%%第一步:M=length(LB);%決策變量的個(gè)數(shù)%蟻群位置初始化X=zeros(M,N);fori=1:M???x=unifrnd(LB(i),UB(i),1,N);???X(i,:)=x;end%輸出變量初始化ALLX=cell(K,1);%細(xì)胞結(jié)構(gòu),每一個(gè)元素是M×N矩陣,記錄每一代的個(gè)體ALLY=zeros(K,N);%K×N矩陣,記錄每一代評價(jià)函數(shù)值BESTX=cell(K,1);%細(xì)胞結(jié)構(gòu),每一個(gè)元素是M×1向量,記錄每一代的最優(yōu)個(gè)體BE
6、STY=zeros(K,1);%K×1矩陣,記錄每一代的最優(yōu)個(gè)體的評價(jià)函數(shù)值k=1;%迭代計(jì)數(shù)器初始化%%第二步:迭代過程whilek<=K???NewX=zeros(M,N);???NewY=zeros(1,N);???forn=1:N???????x=X(:,n);???????Xnb=AFneighbour(n,X,V);???????NN=size(Xnb,2);???????ifNN==0???????????xx=AFprey(x,V,L,LB,UB);???????elseifNN>=3??????????
7、?xx=AFswarm(x,Xnb,N,Delta,V,L,LB,UB);???????else???????????xx=AFprey(x,V,L,LB,UB);???????end???????NewX(:,n)=xx;???end???forn=1:N???????NewY(n)=FIT(NewX(:,n));???end???X=NewX;???Y=NewY;???ALLX{k}=X;???ALLY(k,:)=Y;???minY=min(Y);???pos=find(Y==minY);???BESTX{k}=X(
8、:,pos(1));???BESTY(k)=minY;???disp(k);???k=k+1;end%%繪圖BESTY2=BESTY;BESTX2=BESTX;fork=1:K???TempY=BESTY(1:k);???minTempY=min(TempY);???posY=find(TempY==minTempY