如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)

目标优化算法中有全局优化和多目标优化问题,其中通过图形可以更加直接明显得表现目标函数的值和影响因素的值。
1.收敛曲线
收敛曲线是在全局优化的问题中,有一个目标函数,其中主要的一步是gaoptimset函数设置,‘PlotFcns’,设为@gaplotbestf,下面举一个例子。

如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)_第1张图片独立运行30次,提供30次中得到的最好目标函数值、最差目标函数值、平均目标函数值以及标准方差。

fun1函数:

function y=fun1(x) 
 y=0;
for i=1:1:30
    y=y+i*x(i)^4;
end
b1=2*rand()-1;
if(b1<0)
    b1=-b1;
end
y=y+b1;

main函数:

clear 
clc 
FVAL=zeros(1,30);
FVALCELL=cell(1,30);
for j=1:1:30
fitnessfcn=@fun2;
 nvars=30; 
 LB=-10.*ones(1,30);
 lb=LB; 
 UB=10.*ones(1,30);
 ub=UB; 
 A=[];b=[]; 
 Aeq=[];beq=[]; 
options=gaoptimset('paretoFraction',0.3,'populationsize',100,'generations',200,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotbestf); 
[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options);
FVAL(j)=fval
FVALCELL{j}=x;
end
fval_min=min(FVAL)
fval_max=max(FVAL)
fval_mean=mean(FVAL)
fval_std=std(FVAL)

结果如下:
如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)_第2张图片

计算结果(命令窗中显示)结果如下:

如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)_第3张图片

2.Pareto前沿
同收敛曲线一样,其中gaoptimset函数设置也是主要的一步,‘PlotFcns’,设为@gaplotpareto,下面也举一个例子。
如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)_第4张图片

fun1函数:

function y=fun1(x) 
n=30;
g1=0;
for i=2:1:n
    g1=g1+x(i);
end
g=1+9*g1/(n-1);
y(1)=x(1);
y(2)=g*(1-sqrt(x(1)/g));

main函数:

clear 
clc 
fitnessfcn=@fun1;
nvars=30; 
 LB=0.*ones(1,30);
 lb=LB; 
 UB=1.*ones(1,30);
 ub=UB; 
 A=[];b=[]; 
 Aeq=[];beq=[]; 

options=gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto); 

[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

得到的Pareto前沿图像:
如何画全局优化问题的收敛曲线和多目标优化的Pareto前沿(使用gaoptimset函数)_第5张图片

你可能感兴趣的:(matlab)