第一个博客讲述云模型量子粒子群算法基本理论,接下来展示matlab代码
%% 1.清空环境变量
clc;
clear;
%% 2.初始化参数
N=20; %种群规模
MAXITER=200; %最大迭代次数
中间是模型建立过程,根据不同项目进行添加,此处省略
for t=1:MAXITER
g=min(find(f_pbest==max(f_pbest(1:N))));
gworst=pbest(g,:);%全局最差1个群
f_gworst=f_pbest(g);
EX=f_gbest;
EN=abs(f_gbest-f_gworst)/2;
HE=EN/10;
EN1=normrnd(EN,HE,1,1);
u0=exp(-(f_pbest-EX).2/(2*EN12));
mbest=sum(pbest)/N; %每一列的平均值,意义:个体最佳位置的均值
for i=1:N
fi=rand(1,dimension);%随机数
p=fi.*pbest(i,:)+(1-fi).*gbest;%********经典模特卡罗随机模拟方式 ,p->130维,意义:局部吸引子,处于pbest、gbest中的随机位置
u=rand(1,dimension);
y=p+((-1).^ceil(0.5+rand(1,dimension))).u0(i).(mbest-x(i,:)).*log(1./u);
x(i,:)=y;
f_x(i)=control(x(i,:));
% f_xx(:,:,t)=f_x;%%%%%用于查看每一个粒子值的演变
if f_x(i)<f_pbest(i) %个体替换
pbest(i,:)=x(i,:);
f_pbest(i)=f_x(i);
end
if f_pbest(i)<f_gbest %全局最优值替换
gbest=pbest(i,:);
f_gbest=f_pbest(i);
end
end % popsize