資源簡介
zw_lw5413-9700981-BPSO.zip

代碼片段和文件信息
function?[?Besfi?Besi?Bfi?DIVS?]?=?BPSO(?SizeGc1c2wdeviceprice?)
% 基本粒子群優化算法(Particle?Swarm?Optimization)
%?輸入參數
%???c1????????????????學習因子1
%???c2????????????????學習因子2
%???w?????????????????慣性權重
%???G?????????????????最大迭代次數
%???Size??????????????初始化群體個體數目
%?輸出參數
%???輸出參數
%???Besfi????????優化后最優個體適應度
%???pg???????????最優個體
%???Bfi??????????每次迭代中最優個體的適應度,1*n向量
%???DIVS?????????種群多樣性
%創建一個進度條以監視優化進度
%?hWaitbar=waitbar(0‘開始優化計算...‘‘Name‘[num2str(Size)?‘-‘?num2str(G)?‘-‘?num2str(c1)?‘-‘?num2str(c2)?‘-‘?num2str(w)]);
%?set(hWaitbar‘Windowstyle‘‘modal‘);??%窗口鎖定最前
%?btnCancel?=?findall(hWaitbar‘style‘‘pushbutton‘);?%查找“取消“按鈕
%?set(btnCancel‘string‘‘取消‘‘fontsize‘10);?????%設置“取消“按鈕顯示字符
%優化對象參數提取
[concodedevicenumcodesizes]?=?Getcontrolcode(?device?);???%提取未優化時的運行編碼
%?D:搜索空間維數(未知數個數)
D=size(concode2);
%搜索范圍和個體移動速度限制
Maxx=ones(1D);
Minx=zeros(1D);
Maxv=ones(1D);
Minv=zeros(1D);
%?Maxv=(Maxx-Minx)/4;
%?Minv=-Maxv;
%------初始化種群的個體?(可以在這里限定位置和速度的范圍)------------
for?i=1:Size
????for?j=1:D
%?????????x(ij)=rand*(Maxx(j)-Minx(j)+Minx(j));??%隨機初始化位置
????????v(ij)=rand*(Maxv(j)-Minv(j))+Minv(j);??%隨機初始化速度
????????x(ij)=round(v(ij));
????end
end
%------先計算各個粒子的適應度,并初始化Pi和Pg----------------------
for?i=1:Size
????ps(i)=fun(deviceround(x(i:))devicenumcodesizesprice);
????y(i:)=x(i:);
end
pg=round(x(1:));?????????????%Pg為全局最優
Besfi=ps(1);
for?i=2:Size
????if?ps(i) ????????pg=round(x(i:));
????????Besfi=ps(i);
????end
end
%------進入主要循環,按照公式依次迭代,直到滿足精度要求------------
for?k=1:G
????time(k)=k;
???%?bf(t)=fitness(pgp);
??%計算多樣性
?S=max(Maxx-Minx)/2;
?for?xj=1:1:D
????avgxj(xj)=mean(x(:xj));
?end
?DIVS(k)=0;
?for?xi=1:1:Size
?????tmpd=0;
?????for?xj=1:1:D
?????????tmpd=tmpd+(x(xixj)-avgxj(xj))^2;
?????end
?????DIVS(k)=DIVS(k)+sqrt(tmpd);
?end
?DIVS(k)=DIVS(k)/(Size*S);
????%DIVS(t)
????
????
????for?i=1:Size
?????
????????randC1=rand(1D);
????????randC2=rand(1D);
????????%randC1=rand;
????????%randC2=rand;
????????
????????%v(i:)=(0.9-0.5*t/MaxDT)*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
????????%v(i:)=(0.9-0.5*t/MaxDT)*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
???????v(i:)=w*v(i:)+c1*randC1.*(y(i:)-x(i:))+c2*randC2.*(pg-x(i:));
????????for?dd=1:D
????????????if?v(idd)>Maxv(dd)
????????????????v(idd)=Maxv(dd);
????????????end
????????????if?v(idd) ????????????????v(idd)=Minv(dd);
????????????end
????????end
?????????x(i:)=round(v(i:));
%?????????x(i:)=x(i:)+v(i:);
%?????????
%?????????for?dd=1:D
%?????????????if?x(idd)>Maxx(dd)
%?????????????????x(idd)=Maxx(dd);
%?????????????end
%?????????????if?x(idd) %?????????????????x(idd)=Minx(dd);
%?????????????end
%?????????end
????????
????????%for?dd=1:D
??????????%?if?rand<0.01
??????????????%??if?rand<0.5
????????????????%????x(idd)=x(idd)+rand*(Maxx(dd)-x(idd));
???????????????%?else
????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4020??2019-07-14?08:10??\lw5413-9700981-BPSO.m
?????文件??????????36??2019-07-14?08:10??\no.txt
評論
共有 條評論