📄 pso.m
字号:
%粒子群速度与位置更新(PSO算法的核心部分)
%计算完适应值后寻找当前全局最优位置
if best_fitness>min(pop(:,4*D+1)) %pop(:,4*D+1)为个体最优解适应值
best_fitness=min(pop(:,4*D+1)); %全局最优粒子适应值更新
position_gbest=find(pop(:,4*D+1)==best_fitness); %在pop数组中找到全局最优解
gbest(:)=pop(position_gbest(1),2*D+1:3*D); %全局最优粒子的位置
end
best_in_history(exetime)=best_fitness; %记录历史全局最优解适应值
%更新粒子速度
for i=1:popsize
for j=1:D
%pop(i,D+j)=w*pop(i,D+j)+c1*rand*(pop(i,2*D+j)-pop(i,j))+c2*rand*(gbest(j)-pop(i,j)); %更新速度分量,Global_PSO
pop(i,D+j)=w*pop(i,D+j)+c1*rand*(pop(i,2*D+j)-pop(i,j))+c2*rand*(pop(i,3*D+j)-pop(i,j)); %更新速度分量,Local_PSO
if abs(pop(i,D+j))>max_velocity %速度限制
if pop(i,D+j)>0
pop(i,D+j)=max_velocity;
else
pop(i,D+j)=-max_velocity;
end
end
pop(i,j)=pop(i,j)+pop(i,D+j);%更新位置分量
if pop(i,j)>x_max %位置限制
pop(i,j)=x_max;
else if pop(i,j)<x_min
pop(i,j)=x_min;
end
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -