主要内容

比较paretosearch伽默多布吉

此示例演示如何使用这两种方法在Pareto front上创建一组点paretosearch伽默多布吉.目标函数有两个目标和一个二维控制变量x.目标函数mymulti3单击按钮编辑或尝试此示例时,在MATLAB®会话中可用。或者,复制mymulti3为你的会议编码。为提高计算速度,对函数进行了矢量化。

类型mymulti3
函数f = mymulti3(x) % f(:,1) = x(:,1)。^ 4 + x(:, 2)。^ 4 + x(: 1)。*x(:,2) - (x(:,1).^2).*(x(:,2).^2) - 9*x(:,1).^2; f(:,2) = x(:,2).^4 + x(:,1).^4 + x(:,1).*x(:,2) - (x(:,1).^2).*(x(:,2).^2) + 3*x(:,2).^3;

基本示例和图

用。求目标函数的帕累托集paretosearch伽默多布吉.设置UseVectorized选项符合事实的为了增加速度。包括一个绘图函数以可视化Pareto集。

rng默认的nvars=2;opts=options(@gamultiobj,“UseVectorized”,真的,“PlotFcn”“帕累托”);[xga fvalga, ~, gaoutput] = gamultiobj (@ (x) mymulti3 (x)据nvar ,[],[],[],[],[],[],[], 选择);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站

图遗传算法包含一个轴。标题为Pareto front的轴包含一个line类型的对象。

optsp = optimoptions (“paretosearch”“UseVectorized”,真的,“PlotFcn”,{“psplotparetof”“psplotparetox”}); [xp,fvalp,~,psoutput]=paretosearch(@(x)mymulti3(x),nvars,[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、optsp);
找到满足约束条件的Pareto集。优化已完成,因为Pareto集合体积的相对变化小于“options.ParetoSetChangeTolerance”,并且约束在“options.ConstraintTolerance”内得到满足。

图paretosearch包含2个轴。标题为Pareto Front的轴1包含一个类型为line的对象。带有标题参数空间的轴2包含一个类型为line的对象。

使用mymulti4这个mymulti4单击按钮编辑或尝试此示例时,MATLAB®会话中的函数可用。

类型mymulti4
功能城市= mymulti4 (x) % gg = (4 * x (1) ^ 3 + x x (1) (2) 2 * * (x (2) ^ 2) - 18 * x (1);(1) + 4 * x (2) ^ 3 - 2 * (x (1) ^ 2) * x (2)];Gf = gg + [18*x(1);9*x(2)^2];Mout = gf(1)*gg(2) - gf(2)*gg(1);

mymulti4函数计算两个目标函数的梯度。接下来,对于值的范围x (2),使用fzero定位渐变完全平行的点,即输出的位置城市= 0。

a=[fzero(@(t)mymulti4([t,-3.15]),[2,3]),-3.15];jj = linspace(-3.125, -1.89, 50) =(一个;[fzero (@ (t) mymulti4 ([t, jj]),[2、3]),jj]];结束图绘制(fvalp (: 1), fvalp (:, 2),“波”); 持有fs=mymulti3(a);绘图(fvalga(:,1),fvalga(:,2),“r*”); 绘图(fs(:,1),fs(:,2),“k.”)传说(“Paretosearch”“Gamultiobj”“真正的”)包含(“目标1”)伊拉贝尔(《目标2》)持有

图形包含一个轴。轴包含3个line类型的对象。这些对象表示Paretosearch、Gamultiobj和True。

伽默多布吉查找目标函数空间中分布稍宽的点。绘制决策变量空间中的解,以及两个目标函数的理论最优帕累托曲线和等高线图。金宝搏官方网站

(x, y) = meshgrid(1.9: .01:3.1, -3.2:幅:-1.8);mydata = mymulti3 ([x (:), y (:)));Myff =√(mydata(:,1) + 39);%空间的轮廓更好Mygg = sqrt(mydata(:,2) + 28);%空间的轮廓更好myff =重塑(myff、大小(x));mygg =重塑(mygg、大小(x));图;持有等高线(x,y,mygg,50)等高线(x,y,myff,50)图(xp(:,1),xp(:,2),“波”)情节(xga (: 1) xga (:, 2),“r*”)图((:1)、(:,2),“- k”)包含("x(1)")伊拉贝尔("x(2)")持有

图形包含一个轴。该轴包含5个轮廓、直线类型的对象。

不像paretosearch解决方案中,伽默多布吉解在目标函数空间的极值处有点。然而,paretosearch在目标函数空间和决策变量空间中,解有更多更接近真实解的点。使用默认选项时,每个解算器的帕累托前沿上的点数不同。

转移问题

如果你的问题的解决方案有很大的控制变量,会发生什么?通过转移问题变量来检查这种情况。对于无约束问题,伽默多布吉可能会失败,而paretosearch对这种转变更有活力。

为便于比较,请为每个解算器在Pareto front上指定35个点。

shift=[20,-30];fun=@(x)mymulti3(x+shift);opts.PopulationSize=100;%选择。ParetoFraction = 35[xgash fvalgash, ~, gashoutput] = gamultiobj(有趣,据nvar ,[],[],[],[],[],[], 选择);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站

图遗传算法包含一个轴。标题为Pareto front的轴包含一个line类型的对象。

伽默多布吉找不到一个有用的帕累托集合。

optsp.PlotFcn=[];optsp.ParetoSetSize=35;[xpsh,fvalpsh,~,pshoutput]=paretosearch(fun,nvars,[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、optsp);
找到满足约束条件的Pareto集。优化已完成,因为Pareto集合体积的相对变化小于“options.ParetoSetChangeTolerance”,并且约束在“options.ConstraintTolerance”内得到满足。
图绘制(fvalpsh (: 1), fvalpsh (:, 2),“波”); 持有情节(fs (: 1), fs (:, 2),“k.”)传说(“Paretosearch”“真正的”)包含(“目标1”)伊拉贝尔(《目标2》)持有

图中包含一个轴。轴包含两个line类型的对象。这些对象表示Paretosearch,True。

paretosearch找到几乎在整个可能范围内均匀分布的解点。

增加界限,即使是相当松散的界限,对两者都有帮助伽默多布吉paretosearch找到合适的解决方案。金宝搏官方网站设定的下界-50和的上界50

opts.PlotFcn=[];optsp.PlotFcn=[];lb=[-50,-50];ub=-lb;[xgash,fvalgash,~,gashoutput]=gamultiobj(fun,nvars,[],[],[],[],lb,ub,opts);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站
[xpsh2,fvalpsh2,~,pshoutput2]=paretosearch(乐趣,nvars,[],[],[],[],lb,ub,[],optsp);
找到满足约束条件的Pareto集。优化已完成,因为Pareto集合体积的相对变化小于“options.ParetoSetChangeTolerance”,并且约束在“options.ConstraintTolerance”内得到满足。
图绘制(fvalpsh2 (: 1), fvalpsh2 (:, 2),“波”); 持有地块(fvalgash(:,1),fvalgash(:,2),“r*”); 绘图(fs(:,1),fs(:,2),“k.”)传说(“Paretosearch”“Gamultiobj”“真正的”)包含(“目标1”)伊拉贝尔(《目标2》)持有

图形包含一个轴。轴包含3个line类型的对象。这些对象表示Paretosearch、Gamultiobj和True。

在这种情况下,两个求解器都找到了好的解决方案。金宝搏官方网站

开始paretosearch从…起伽默多布吉解决方案

通过开始,从求解器中获得一个相似的解范围金宝搏官方网站paretosearch伽默多布吉解决方案

optsp.InitialPoints=xgash;[xpsh3,fvalpsh3,~,pshoutput3]=paretosearch(fun,nvars,[],[],[],[],[],[],lb,ub,[],optsp);
找到满足约束条件的Pareto集。优化已完成,因为Pareto集合体积的相对变化小于“options.ParetoSetChangeTolerance”,并且约束在“options.ConstraintTolerance”内得到满足。
图绘制(fvalpsh3 (: 1), fvalpsh3 (:, 2),“波”); 持有地块(fvalgash(:,1),fvalgash(:,2),“r*”); 绘图(fs(:,1),fs(:,2),“k.”)传说(“Paretosearch”“Gamultiobj”“真正的”)包含(“目标1”)伊拉贝尔(《目标2》)持有

图形包含一个轴。轴包含3个line类型的对象。这些对象表示Paretosearch、Gamultiobj和True。

现在,paretosearch解类似于伽默多布吉解决方案,尽管有些解决方案点不同。

从单目标解决方案开始金宝搏官方网站

另一种获得好的解的方法是分别从最小化每个目标函数的点开始。

在多目标函数中,创建一个单目标函数,该函数依次选择每个目标。使用前一节中的移位函数。因为你给了求解器很好的起点,所以你不需要指定界限。

nobj = 2;%目标数目x0 =转变;%单目标最小化的初始点uncmin=单元(nobj,1);单元格数组保持单目标最小值allfuns=0(nobj,2);%保持目标函数值eflag=0(nobj,1);fopts=最佳选项(“patternsearch”“显示”“关”);%在这里使用一个合适的求解器i=1:nobj indi=0(nobj,1);选择最小化的目标indi(i)=1;funi=@(x)点(fun(x),indi);[uncmin{i},~,eflag(i)]=patternsearch(funi,x0,[],[],[],[],[],[],[],[],[],[],[],[],fopts);%最小化目标iallfuns(我)=乐趣(uncmin{我});结束uncmin = cell2mat (uncmin);%起点矩阵

开始paretosearch从单目标最小点开始,注意它的解决方案有一个完整的范围。金宝搏官方网站paretosearch将随机初始点添加到提供的点,以使总体至少为选项。ParetoSetSize个人。同样的,伽默多布吉将随机点添加到提供的点,以获得至少(options.PopulationSize) * (options.ParetoFraction)个人。

optsp=最佳选项(optsp,“InitialPoints”,uncmin);[xpinit,fvalpinit,~,outputpinit]=paretosearch(fun,nvars,[],[],[],[],[],[],[],[],[],[],optsp);
找到满足约束条件的Pareto集。优化已完成,因为Pareto集合体积的相对变化小于“options.ParetoSetChangeTolerance”,并且约束在“options.ConstraintTolerance”内得到满足。

现在解决使用问题伽默多布吉从初始点开始。

选择= optimoptions(选择,“InitialPopulationMatrix”, uncmin);[xgash2 fvalgash2, ~, gashoutput2] = gamultiobj(有趣,据nvar ,[],[],[],[],[],[], 选择);
优化终止:帕累托解决方案的平均变化小于可选方案。金宝搏官方网站
图表(fvalpinit(:,1),fvalpinit(:,2),“波”); 持有情节(fvalgash2 (: 1) fvalgash2 (:, 2),“r*”); 绘图(fs(:,1),fs(:,2),“k.”)地块(allfuns(:,1),allfuns(:,2),“gs”“MarkerSize”12)传说(“Paretosearch”“Gamultiobj”“真正的”“起点”)包含(“目标1”)伊拉贝尔(《目标2》)持有

图中包含一个坐标轴。轴包含4个线型对象。这些对象代表Paretosearch, Gamultiobj, True, Start Points。

两个解算器都使用合理精确且间距合理的解填充极值点之间的帕累托前沿。金宝搏官方网站

在决策变量空间中查看最后的点。

图;持有xx=x-shift(1);yy=y-shift(2);等高线(xx,yy,mygg,50)等高线(xx,yy,myff,50)图(xpinit(:,1),xpinit(:,2),“波”)情节(xgash2 (: 1) xgash2 (:, 2),“r*”) asshift = a - shift;情节(ashift (: 1) ashift (:, 2),“- k”)绘图(uncmin(:,1),uncmin(:,2),“gs”“MarkerSize”,12);xlabel("x(1)")伊拉贝尔("x(2)")持有

图形包含一个轴。该轴包含6个轮廓、直线类型的对象。

另请参阅

|

相关的话题