資源簡介
測試函數用的是Sphere,如果想換可以換別的。
萬惡的五十字。。。。。
代碼片段和文件信息
clc%清屏
clear?all;
close?all;
format?long
%Prarmeters
sizepop=100;%種群規模
maxgen=100;%最大迭代次數
m=10;%空間維數
Umax=0.9500;%最大隸屬度值
Umin=0.0111;%最小隸屬度值
Wmax=0.9;%最大權重
Wmin=0.1;%最小權重
popmax=15;
popmin=-15;
%初始化種群個體
for?i=1:sizepop
????pop(i:)=15*rands(110);
????fitness(i)=sphere(pop(i:));
????%計算適應度
end
%尋找具有最好適應度的個體
[bestfitness?bestindex]=min(fitness);
zbest=pop(bestindex:);%全局最佳
gbest=pop;%個體最佳
fitnessgbest=fitness;%個體最佳適應度值
fitnesszbest=bestfitness;
%迭代尋優
Di=0*rand(sizepopm);
Di(1:)=1;
Buchang=0*rand(sizepopm);
Diego=0*rand(sizepopm);
Dialt=0*rand(sizepopm);
Dipro=0*rand(sizepopm);
yy(1)=fitnesszbest;
for?t=2:maxgen
????for?i=1:sizepop
????????W=Wmax-t*(Wmax-Wmin)/maxgen;
????????Diego(i:)=sign(gbest(i:)-pop(i:));
????????Dialt(i:)=sign(zbest-pop(i:));
????????if?sphere(gbest(i:))>=sphere(pop(i:))
????????????Dipro(i:)=-Di(i:);
????????else
????????????Dipro(i:)=Di(i:);
????????end
????????Di(i:)=sign(W*Dipro(i:)+rand*Diego(i:)+rand*Dialt(i:));
????????%^確定經驗梯度方向
????????[Orderfitnessg
- 上一篇:MATLAB 粒子群圖像分割算法
- 下一篇:提取水泥路裂縫
評論
共有 條評論