%%清空环境?
clear all;
clc;
%%参数设置?
w=0.6;%惯性因子?
c1=2;%加速常数
c2=2;%加速常数?
Dim=3;%维数
SwarmSize=50;%粒子群规模?
ObjFun=@PIDcl;%待优化函数句柄?
MaxIter=100;%最大迭代次数?
MinFit=-Inf;%最小适应值
Vmax=1;
Vmin=-1;
Ub=[10 10 10];
Lb=[0 0 0];
%%粒子群初始化?
Range=ones(SwarmSize,1)*(Ub-Lb);
Swarm=rand(SwarmSize,Dim).*Range+ones(SwarmSize,1)*Lb;%初始化粒子群
VStep=rand(SwarmSize,Dim)*(Vmax-Vmin)+Vmin;%初始化速度
fSwarm=zeros(SwarmSize,1);
for i=1:SwarmSize
fSwarm(i,:)=feval(ObjFun,Swarm(i,:));%粒子群的适应值计算
end
%%个体极值和群体极值
[bestfbestindex]=min(fSwarm);
zbest=Swarm(bestindex,:);%全局最佳
gbest=Swarm;%个体最佳
fgbest=fSwarm;%个体最佳适应值
fzbest=bestf;%全局最佳适应值
%%迭代寻优
iter=0;
y_fitness=zeros(1,MaxIter);%预先产生4个空矩阵?
K_p=zeros(1,MaxIter);
K_i=zeros(1,MaxIter);
K_d=zeros(1,MaxIter);
while ((iter
MinFit))
for j=1:SwarmSize
%速度更新
VStep(j,:)=w*VStep(j,:)+c1*rand*(gbest(j,:)-Swarm(j,:))+c2*rand*(zbest-Swarm(j,:));
if VStep(j,:)>Vmax,VStep(j,:)=Vmax;
end
if VStep(j,:)Ub(k),Swarm(j,k)=Ub(k);
end
if Swarm(j,k)