clear all; %清除了所有的变量,包括全局变量global
close all;
global rin yout timef %定义全局变量
Size=30; %样本个数定为30
CodeL=3;
MinX(1)=zeros(1);
MaxX(1)=20*ones(1); %定义Kp的取值范围为0-20
MinX(2)=zeros(1);
MaxX(2)=1.0*ones(1);%定义Ki的取值范围为0-1
MinX(3)=zeros(1);
MaxX(3)=1.0*ones(1);%定义Kd的取值范围为0-1
Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1); %取值为0-1的随机数 产生初始种群
Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1);
Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1);
G=100; %100代进化
BsJ=0; %最优指标初始值
%*************** 开始运行***************
for kg=1:1:G
time(kg)=kg;
%****** Step 1 : 估计最优指标 ******
for i=1:1:Size
Kpidi=Kpid(i,:);
[Kpidi,BsJ]=fitness(Kpidi,BsJ); %调用m函数
BsJi(i)=BsJ;
end
[OderJi,IndexJi]=sort(BsJi);
BestJ(kg)=OderJi(1);
BJ=BestJ(kg);
Ji=BsJi+1e-10; %避免分母为零
fi=1./Ji; %转换为适应度函数
[Oderfi,Indexfi]=sort(fi); %将适应度值从小到大排列
Bestfi=Oderfi(Size); %Bestfi取得适应度最大值
BestS=Kpid(Indexfi(Size),:); %Let BestS=E(m), m is the Indexfi belong to max(fi)
kg %输出
BJ
BestS
%****** Step 2 : 选择 与 复制 ******
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size); % Selecting Bigger fi value floor()朝负无穷方向舍入
r=Size-sum(fi_S);
Rest=fi_Size-fi_S;
[RestValue,Index]=sort(Rest);
for i=Size:-1:Size-r+1
fi_S(Index(i))=fi_S(Index(i))+1;
end
k=1;
for i=Size:-1:1
for j=1:1:fi_S(i)
TempE(k,:)=Kpid(Indexfi(i),:); % 选择与复制
k=k+1; % k 用于复制
end
end
%************ Step 3 : 交叉 ************
Pc=0.90; %交叉概率
for i=1:2:(Size-1)
temp=rand;
if Pc>temp %交叉条件
alfa=rand;
TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);
TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);
end
end
TempE(Size,:)=BestS;
Kpid=TempE;
%************ Step 4: 变异 **************
Pm=0.10-[1:1:Size]*(0.01)/Size; % Pm应取很小值
Pm_rand=rand(Size,CodeL);
Mean=(MaxX + MinX)/2;
Dif=(MaxX-MinX);
for i=1:1:Size
for j=1:1:CodeL
if Pm(i)>Pm_rand(i,j) %Mutation Condition
TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);
end
end
end
TempE(Size,:)=BestS;
Kpid=TempE;
end
Bestfi
BestS
Best_J=BestJ(G)
figure(1);
plot(time,BestJ);
xlabel('Times');ylabel('Best J');
figure(2);
plot(timef,rin,'r',timef,yout,'b');
xlabel('Time(s)');ylabel('rin,yout1,yout');
GAPID.rar_PID参数整定_genetic tuning pid_pid tuning_响应时间_遗传算法;PID
版权申诉
5星 · 超过95%的资源 62 浏览量
2022-09-22
14:11:56
上传
评论
收藏 2KB RAR 举报
四散
- 粉丝: 51
- 资源: 1万+