本帖最后由 望舒_mMMD1 于 2019-7-29 12:22 编辑
function
[ParSwarm,OptSwarm]=BaseStepPso(ParSwarm,OptSwarm,ParticleScope,MaxW,MinW,LoopCount,CurCount);
if nargin~=7 %输入容错
error('error' )
end
if nargout~=2 %输出容错
error('error')
end
%线形递减策略
w=MaxW-CurCount*((MaxW-MinW)/Loopcount);
%得到粒子群群体大小和一个粒子维数的信息
[ParRow,~]=size(ParSwarm);
%得到粒子的维数
ParCol=(PalCol-1)/2;
SubTract1=OptSwarm(1:ParRow,:)-ParSwarm(:,1:ParCol);%求解出历史最优值与当前位置的差值
c1=2;
c2=2;
%完成一次粒子位置速度最优值的更新迭代
for row=1: ParRow
SubTract2=OptSwarm(ParRow+1,:)-ParSwarm(row,1:ParCol);%计算出全局最优值与当前该粒子位置的差值
%速度更新公式
TempV=w.*ParSwarm(row,ParCol+1:2*ParCol)+c1*unifrnd(0,1).*SubTract1(row,:)+c2*unifrnd(0,1).*SubTract2;
%各限制速度的代码
for h