概述
本帖最后由 望舒_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=1:ParCol
if TempV(:,h)>ParticleScope(h,2)
TempV(:,h)=ParticleScope(h,2) ;
end
if TempV(:,h)
TempV(:,h)=-ParticleScope(h,2)+1e-10;%加1e-10防止适应度函数被零除
end
end
%更新该粒子速度值
ParSwarm(row,1:ParCol)=TempPos;%计算每个粒子的新的适应度
ParSwarm(row,2*ParCol+1)=AdaptFunc(ParSwarm(row,1:ParCol));
if ParSwarm(row,2*ParCol+1)>AdaptFunc(OptSwarm(row,1:ParCol))
OptSwarm(row,1:ParCol)=ParSwarm(row,1:ParCol);
end
end
%for循环结束
%寻找适应度函数值最大的解在矩阵中的位置(行数),进行全局最优值的改变
[maxValue,row]=max(ParSwarm(:,2*ParCo1+1));
if AdaptFunc(ParSwarm(row,1:ParCol))>AdaptFunc(OptSwarm(ParRow+1,:))
OptSwarm(ParRow+1,:)=ParSwarm(row,1:ParCol);
end
出现解析错误,运行结果是表达式或语句不完整或不正确,请问大佬应该怎么修改
最后
以上就是超级银耳汤为你收集整理的matlab在sin处出现解析错误,第一行function处出现
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复