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