目标优化算法中有全局优化和多目标优化问题,其中通过图形可以更加直接明显得表现目标函数的值和影响因素的值。
1.收敛曲线
收敛曲线是在全局优化的问题中,有一个目标函数,其中主要的一步是gaoptimset函数设置,‘PlotFcns’,设为@gaplotbestf,下面举一个例子。
独立运行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)
计算结果(命令窗中显示)结果如下:
2.Pareto前沿
同收敛曲线一样,其中gaoptimset函数设置也是主要的一步,‘PlotFcns’,设为@gaplotpareto,下面也举一个例子。
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)