From d9e91ab89b088f600987edaf0e6e66854c994f3a Mon Sep 17 00:00:00 2001 From: TianZhendong <33273211+TianZhendong@users.noreply.github.com> Date: Thu, 11 Apr 2019 21:42:01 +0800 Subject: [PATCH] Delete GA_PID.m --- GA_PID.m | 180 ------------------------------------------------------- 1 file changed, 180 deletions(-) delete mode 100644 GA_PID.m diff --git a/GA_PID.m b/GA_PID.m deleted file mode 100644 index 3204ef5..0000000 --- a/GA_PID.m +++ /dev/null @@ -1,180 +0,0 @@ -%%清空环境 -clc; -clear; -close all; -%% 参数设置 -ChromosomeSize = 3; %染色体长度,参数的个数,PID有三个参数 -PopulationSize = 100; %种群规模 -MaxIter = 100; %最大迭代次数 -MinFitness=0.01; %最小适应值 -% CrossRate=0.6; %交叉概率 -MutateRate=0.2; %变异概率 -ObjFun=@PSO_PID; %适应值函数 -NoChangeNo=5; -UpLimit=30; %上限 -global Kp; -global Ki; -global Kd; -%% 初始化种群init.m -Population=rand(PopulationSize,ChromosomeSize); %种群,预分配内存 -for i=1:PopulationSize - disp(['正在初始化种群',num2str(i)]); - for j=1:ChromosomeSize - Population(i,j)=rand*30; %产生0-30之间的随机数用来初始化种群,30表示每个值不超过30 - end -end -clear i; -clear j; - -%% 开始循环 -%Iter =1; -PopulationFitness=zeros(PopulationSize,1); %种群适应度值,预分配内存 -BestFitness=zeros(MaxIter,1); %初始化每一代的最佳适应度 -AveFitness=zeros(MaxIter,1); -Elite=zeros(MaxIter,ChromosomeSize); %用于记录每一代的最优解 - -for Iter=1:MaxIter - disp(['迭代次数:',num2str(Iter)]); %显示迭代进度 - %% 适应值计算Fitness - for i=1:PopulationSize - Kp=Population(i,1); - Ki=Population(i,2); - Kd=Population(i,3); - PopulationFitness(i,1) = fitness(Kp,Ki,Kd); - end - - %% 适应值大小排序,并保存最佳个体和最佳适应度 - FitnessSum=sum(PopulationFitness); %种群累加适应度 - AveFitness(Iter,1)=FitnessSum/PopulationSize; %种群平均适应度 - [PopulationFitness,Index]=sort(PopulationFitness); %适应值从小到大排序 - BestFitness(Iter,1) = PopulationFitness(MaxIter,1); %最佳适应度 - Elite(Iter,:) = Population(Index(MaxIter),:); %记录本代的精英 -% if(BestFitness(Iter,1)=UpLimit - PopulationNew(i, j)= PopulationNew(i, j)*(1-mut_num); - elseif mut_pm<=0.5 - PopulationNew(i, j)= PopulationNew(i, j)*(1-mut_num); - else - PopulationNew(i, j)= PopulationNew(i, j)*(1+mut_num); - end - if PopulationNew(i, j)>=UpLimit - PopulationNew(i, j)=UpLimit; - end - end - end - end - parfor i=1:PopulationSize - for j=1:ChromosomeSize - Population(i,j)=PopulationNew(i,j); - end - end - clear i; - clear j; - clear first; - clear last; - clear idx; - clear mid; -% clear PopulationNew; - - %交叉操作 crossover -% for i=1:PopulationSize -% % rand<交叉概率,对两个个体的染色体串进行交叉操作 -% if(rand < CrossRate) -% acr_position = floor(ChromosomeSize*rand+1); %要交叉的节点 -% % if (cross_position == 0 || cross_position == 1) -% % continue; -% % end -% acr_chrom = floor((PopulationSize-1)*rand+1); %要交叉的染色体,floor取比它小的整数,acr_chrom取值在1-N -% for j=1:acr_position -% temp = Population(i,j); -% Population(i,j) = Population(acr_chrom,j); -% Population(acr_chrom,j) = temp; -% end -% -% end -% end -% clear i; -% % clear j; -% clear temp; -% clear acr_chrom; - - - - - clear i; - clear j; - - K_p(1,Iter)=Elite(Iter,1); - K_i(1,Iter)=Elite(Iter,2); - K_d(1,Iter)=Elite(Iter,3); -end - -figure(1) -plot(BestFitness,'LineWidth',2); - -figure(2) -plot(K_p) -hold on -plot(K_i,'k','LineWidth',3) -plot(K_d,'--r') - - - - - -