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

来源:互联网 发布:win10 linux bash 编辑:程序博客网 时间:2024/05/17 23:59

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

这里写图片描述独立运行30次,提供30次中得到的最好目标函数值、最差目标函数值、平均目标函数值以及标准方差。

fun1函数:

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

main函数:

clear clc FVAL=zeros(1,30);FVALCELL=cell(1,30);for j=1:1:30fitnessfcn=@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)=fvalFVALCELL{j}=x;endfval_min=min(FVAL)fval_max=max(FVAL)fval_mean=mean(FVAL)fval_std=std(FVAL)

结果如下:
这里写图片描述

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

这里写图片描述

2.Pareto前沿
同收敛曲线一样,其中gaoptimset函数设置也是主要的一步,‘PlotFcns’,设为@gaplotpareto,下面也举一个例子。
这里写图片描述

fun1函数:

function y=fun1(x) n=30;g1=0;for i=2:1:n    g1=g1+x(i);endg=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前沿图像:
这里写图片描述

原创粉丝点击