%%%%%%%%%%%%%%%%%%%%%%约束优化的测试主文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%编写时间:2021.4.5
clc
clear
close all
%%%%%%%%%%%%%%%%%%%%%%%%%%%%设置命令窗口的输出值,方便操作%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=input('Input the populations:'); %种群数
D=input('Input the individuals:'); %个体数
iter=input('Input the Gen:'); %迭代数
indexFun=input('Input the type of TestFuntion:'); %测试函数类型“type”
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%决策空间的边界值设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% for i=1:9 %type==1,绝对收敛
% xmin(:,i)=0;
% xmax(:,i)=1;
% end
%for i=10:12
% xmin(:,i)=0;
% xmax(:,i)=100;
%end
% xmin(:,13)=0;
% xmax(:,13)=1;
%type==2 个体数20--------绝对收敛---有小点问题
% for i=1:D
% xmin(:,i)=0;
% xmax(:,i)=10;
% end
%%type==3 个体数为10---------收敛--------图形没问题
for i=1:D
xmin(:,i)=0;
xmax(:,i)=1;
end
%%type==4 个体数为5-------收敛,精度差一点点点--------- ?3.066553867178332e +004.
% xmin(:,1)=78;
% xmax(:,1)=102;
% xmin(:,2)=33;
% xmax(:,2)=45;
% for i=3:5
% xmin(:,i)=27;
% xmax(:,i)=45;
% end
%%type==5 个体数为4-----不收敛-------- 5126.4967140071.best=5126.6805638201=5126.57705156353
%for i=1:2
% xmin(:,i)=0;
% xmax(:,i)=1200;
%end
%for j=3:4
% xmin(:,j)=-0.55;
% xmax(:,j)=0.55;
%end
%%ype==6 个体数为2------和之前的实验结果偏差---需要调整
% xmin(:,1)=13;
% xmax(:,1)=100;
% xmin(:,2)=0;
% xmax(:,2)=100;
%%type==7 个体数为10-------收敛差一点点---- 24.30620906818
% for i=1:D
% xmin(:,i)=-10;
% xmax(:,i)=10;
% end
%%type==8 个体数为2----绝对收敛---------图形有问题
% for i=1:D
% xmin(:,i)=0;
% xmax(:,i)=10;
% end
%%type==9 个体数为7----收敛数差一点----680.63005----图形有问题
% for i=1:D
% xmin(:,i)=-10;
% xmax(:,i)=10;
% end
%%type==10
%%个体数8----------不收敛------------7049.24802052867---best=7053.1855162452----[7049.49564231485]陷入局部最优
% xmin(:,1)=100;
% xmax(:,1)=10000;
% for i=2:3
% xmin(:,i)=1000;
% xmax(:,i)=10000;
% end
% for j=4:8
% xmin(:,j)=10;
% xmax(:,j)=1000;
% end
%%type==11 个体数为2-------收敛有点问题----图形上没问题
% for i=1:D
% xmin(:,i)=-1;
% xmax(:,i)=1;
%end
%%type==12 个体数为3-------绝对收敛---图形测试没问题
% for i=1:D
% xmin(:,i)=0;
% xmax(:,i)=10;
% end
%%type==13 个体数为5------- 0.053941514041898
% for i=1:D-3
% xmin(:,i)=-2.3;
% xmax(:,i)=2.3;
% end
% for i=3:D
% xmin(:,i)=-3.2;
% xmax(:,i)=3.2;
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%为存储值分配存储空间%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tic()
runtime=5;
% bestValue1=zeros(runtime,iter);
%bestValue2=zeros(runtime,iter);
bestValue3=zeros(runtime,iter);
% bestValue4=zeros(runtime,iter);
% bestValue5=zeros(runtime,iter);
% bestValue6=zeros(runtime,iter);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%测试,作图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:runtime
% bestValue1(j,:)=HDDE(xmax,xmin,N,D,iter,indexFun);
% bestValue2(j,:)=JADE(xmax,xmin,N,D,iter,indexFun);
bestValue3(j,:)=jDE2(xmax,xmin,N,D,iter,indexFun);
% bestValue4(j,:)=CCODE(xmax,xmin,N,D,iter,indexFun);
% bestValue5(j,:)=ECMPDE(xmax,xmin,N,D,iter,indexFun);
% bestValue6(j,:)=CHDE(xmax,xmin,N,D,iter,indexFun);
end
% loglog(bestValue1(1,:),'r--','LineWidth',1.5);
% hold on
% loglog(bestValue2(1,:),'b-','LineWidth',1.5);
% hold on
loglog(bestValue3(1,:),'g-','LineWidth',1.5);
% hold on
% loglog(bestValue4(1,:),'k--','LineWidth',1.5);
% hold on
% loglog(bestValue5(1,:),'c-','LineWidth',1.5);
% hold on
% loglog(bestValue6(1,:),'m-','LineWidth',1.5);
% legend('HDDE','JADE','jDE2','CCODE','ECMPDE','CHDE')
xlabel('FES');ylabel('Objedtion Value');
%%%%%%%%%%%%%%%%%%%%%%存储平均值,标准差%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% mean_bestValue1=mean(bestValue1(:,iter));
% std_bestValue1=std(bestValue1(:,iter));
%
% mean_bestValue2=mean(bestValue2(:,iter));
% std_bestValue2=std(bestValue2(:,iter));
mean_bestValue3=mean(bestValue3(:,iter));
std_bestValue3=std(bestValue3(:,iter));
% mean_bestValue4=mean(bestValue4(:,iter));
% std_bestValue4=std(bestValue4(:,iter));
%
% mean_bestValue5=mean(bestValue5(:,iter));
% std_bestValue5=std(bestValue5(:,iter));
%
% mean_bestValue6=mean(bestValue6(:,iter));
% std_bestValue6=std(bestValue6(:,iter));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%打印结果%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% disp(strcat('第',num2str(indexFun),'个函数HDDE的结果为:mean=',num2str(mean_bestValue1),' , std=',num2str(std_bestValue1)));
% disp(strcat('第',num2str(indexFun),'个函数JADE的结果为:mean=',num2str(mean_bestValue2),' , std=',num2str(std_bestValue2)));
disp(strcat('第',num2str(indexFun),'个函数jDE2的结果为:mean=',num2str(mean_bestValue3),' , std=',num2str(std_bestValue3)));
% disp(strcat('第',num2str(indexFun),'个函数CCODE的结果为:mean=',num2str(mean_bestValue4),' , std=',num2str(std_bestValue4)));
% disp(strcat('第',num2str(indexFun),'个函数ECMPDE的结果为:mean=',num2str(mean_bestValue5),' , std=',num2str(std_bestValue5)));
% disp(strcat('第',num2str(indexFun),'个函数CHDE的结果为:mean=',num2str(mean_bestValue6),' , std=',num2str(std_bestValue6)));
% disp(strcat('第',num2str(indexFun),'个函数JADE的最好值结果为:best=',num2str(bestValue1(:,gMax))));
% disp(strcat('第',num2str(indexFun),'个函数EMSDE的最好值结果为:best=',num2str(bestValue2(:,gMax))));
% disp(strcat('第',num2str(indexFun),'个函数HSDE的最好值结果为:best=',num2str(bestValue3(:,gMax))));
% disp(strcat('第',num2str(indexFun),'个函数jDE的最好值结果为:best=',num2str(bestValue4(:,gMax))));
%fprintf('%s\n');
%fprintf('方差值%f:',std_bestValue);
% end
toc()
- 1
- 2
- 3
前往页