帕累托两个目标
多目标优化的两个目标
这个例子展示了如何找到一个帕累托集以供应点两个变量的函数。最小化的例子提出了两种方法:使用优化住在命令行编辑的任务和工作。
以供应点函数f(x),x也是二维的,是什么
找到帕累托集使用优化住编辑任务
创建一个新的脚本通过单击生活新的生活的脚本按钮文件上节家选项卡。
插入一个优化住编辑任务。单击插入选项卡,然后在代码部分中,选择任务>优化。
单击Solver-based的任务。
用于进入问题数据,通过单击插入一个新部分节休息按钮插入选项卡。新章节出现上方和下方的任务。
在上面的新部分任务,输入下面的代码来定义变量和上下边界的数量。
据nvar = 2;5磅= [0];乌兰巴托= [5 0];
这些变量到工作区中,按运行部分按Ctrl + Enter。
指定的问题类型
在指定的问题类型部分的任务,点击目标>非线性按钮。
单击约束>下界和上界按钮。
选择使用遗传算法解算器> gamultiobj -多目标优化。
选择问题数据
在选择问题数据部分中,选择目标函数>本地函数,然后单击新按钮。下面的函数出现在一个新的部分任务。
编辑生成的函数定义包含以下代码。
函数f = mymulti1 f (x) (2) = x (1) x (2) ^ ^ 4 + 4 + x (1) * (2) - (x (1) * (2)) ^ 2;(1)= f (2) - 10 * x (1) ^ 2;结束
在选择问题数据部分中,选择本地函数> mymulti1函数。
选择>据nvar数量的变量。
选择从工作区下界> >磅和从工作区上界> >乌兰巴托。
指定解决方案
扩大指定解决方案部分的任务,然后单击添加按钮。密度,更连接帕累托前沿,指定一个larger-than-default种群通过选择人口设置> > 60岁人口规模。
在帕累托方面拥有更多的人口比默认设置,单击+按钮。在生成的选项,选择算法>帕累托集分数> 0.7。
设置显示选项
在显示进度部分的任务,选择帕累托前沿图的功能。
解算器运行并检查结果
解算器,单击选项按钮⁝在任务的右上角的窗口,并选择运行部分。情节出现在一个单独的图窗口并在任务输出区域。
情节展示了两个组件之间的权衡f策划的目标函数空间。详情,请参见图图,设置一系列的解决方案金宝搏官方网站。
在命令行中找到帕累托集
在命令行执行相同的优化,完成以下步骤。
创建
mymulti1
目标函数文件在您的MATLAB®路径。函数f = mymulti1 f (x) (2) = x (1) x (2) ^ ^ 4 + 4 + x (1) * (2) - (x (1) * (2)) ^ 2;(1)= f (2) - 10 * x (1) ^ 2;结束
设置选项。
选择= optimoptions (“gamultiobj”,“PopulationSize”现年60岁的…“ParetoFraction”,0.7,“PlotFcn”,@gaplotpareto);5磅= [0];乌兰巴托= [5 0];
使用选项运行优化。
(解决方案,ObjectiveValue) = gamultiobj (@mymulti1 2…[],[]、[][],磅,乌兰巴托,选项);
这两个优化生活任务和命令行编辑器允许您制定和解决问题,他们给相同的结果。命令行更精简,但提供了更少的帮助选择解算器,设置问题,选择选项,例如图功能。你也可以开始使用问题优化命令行中使用,然后生成代码,如使用优化约束非线性问题编辑任务或解决生活。
替代的观点
你可以把这个问题在其他方面。下图包含一个情节等高线的两个目标函数,计算出的帕累托前沿gamultiobj
(盒子),真正的帕累托边界的交点(钻石由近直线连接)。真正的帕累托边界点的目标函数的水平曲线是平行的。该算法计算这些点通过目标函数的梯度是平行的。这个数字是在参数空间策划;看到图赔率中,从参数空间映射到目标函数空间。
目标函数的轮廓,帕累托前沿
gamultiobj
发现线段的结束,意味着它发现的全部范围帕累托前沿。