資源簡介
改進型粒子群PSO優化算法MATLAB代碼,基于權重改進速度,已封裝為函數

代碼片段和文件信息
function?[xminfmin]?=?PSO(fitnessNc1c2wmaxwminMD)?%?自適應粒子群
%?fitness?適應度函數,也叫目標函數
%?N?粒子個數
%?c1?學習因子1
%?c2?學習因子2
%?wmax?慣性權重最大值
%?wmin?慣性權重最小值
%?M?最大迭代次數
%?D?搜索空間維數,數據(粒子)維數
%?xmin?目標函數最小時的自變量x(粒子)
%?fmin?目標函數最小值
%%%%%%?初始化種群個體,限定位置和速度?%%%%%%%
x?=?rand(ND);
v?=?rand(ND);
%%%%%%?初始化個體最優位置及其最優值(初始化各個粒子適應度的值)?%%%%%%
for?i?=?1:N
????p(i:)?=?x(i:);
????p(i)?=?fitness(x(i:));
end
%%%%%%?初始化全局最優位置及其最優值(假設最后一個粒子為最優)?%%%%%%
pg(N:)?=?x(N:);
pg(i)?=?fitness(x(N:));
for?i?=?1:N
????if?fitness(x(i:))?????????pg(i:)?=?x(i:);
????????pg(i)?=?fitness(pg);
????end
end
%%%%%%?開始主循環?%%%%%%%
for?t?=?1:M
????%%%%%%?求目標函數最小值、平均值,更新權重?%%%%%%
????for?j?=?1:N
????????fv(j)?=?fitness(x(j:));
????end
????favg?=?sum(fv)/N;
????fmin?=?min(fv);
????for?j?=?1:N
????????if?fv?<=?favg
????????????w?=?wmin?-?(wmax?-?wmin)?*?(fv?-?favg)/(favg?-?fmin);
????????else
????????????w?=?wmax;
????????end
????end
????%%%%%%?更新位置和速度(兩個公式)?%%%%%%
????for?i?=?1:N
????????v(i:)?=?w?*?v(i:)?+?c1?*?rand?*?(p(i:)?-?x(i:))?+?c2?*?rand?*?(pg(i:)?-x(i:));
????????x(i:)?=?x(i:)?+?v(i:);
????????%%%%%%?更新個體最優位置?%%%%%%
????????if?fitness(x(i:))?????????p(i)?=?fitness(x(i:));
????????p(i:)?=?x(i:);
????????end
????????%%%%%%?更新全局最優位置?%%%%%%
????????if?p(i)?????????pg(i:)?=?x(i:);
????????pg(i)?=?fitness(pg);
????????end
????end
end
xmin?=?pg(i:);
fmin?=?pg(i);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1667??2018-06-22?12:01??PSO_adaptation.m
- 上一篇:車輛路徑問題的matlab算法
- 下一篇:非線性系統simuli
nk相圖
評論
共有 條評論