資源簡介
一個完整的PSO程序,可以實現多目標函數的優化
代碼片段和文件信息
%功能描述:基本的粒子群算法的單步更新位置速度的算法
function?[ParSwarmOptSwarm]=baseStepPso(ParSwarmOptSwarmParticleScopeMaxWMinWLoopCountCurCountEXCLPSP)
%輸入參數:ParSwarm:粒子群矩陣,包含粒子的位置,速度與當前的目標函數值
%輸入參數:OptSwarm:包含粒子群個體最優解與全局最優解的矩陣
%輸入參數:ParticleScope:一個粒子在運算中各維的范圍;
%輸入參數:AdaptFunc:適應度函數
%輸入參數:LoopCount:迭代的總次數
%輸入參數:CurCount:當前迭代的次數
%返回值:含意同輸入的同名參數
if?nargin~=9
????error(‘輸入的參數個數錯誤。‘);
end
if?nargout~=2
????error(‘輸出的個數太少,不能保證循環迭代。‘);
end
%開始單步更新的操作
w=MaxW-CurCount*((MaxW-MinW)/LoopCount);%慣性因子隨迭代次數遞減
[ParRowParCol]=size(ParSwarm);%得到粒子群群體大小以及一個粒子維數的信息
ParCol=(ParCol-1)/2;
%for?i=1:ParRow
????%if?ParSwarm(i2*ParCol+1)<=mean(ParSwarm(:2*ParCol+1))
???????%?w(i)=MinW+(MaxW-MinW)*(ParSwarm(i2*ParCol+1)-min(ParSwarm(:2*ParCol+1)))/(mean(ParSwarm(:2*ParCol+1))-min(ParSwarm(:2*ParCol
評論
共有 條評論