主要内容

比较paretosearchgamultiobj

这个例子展示了如何创建一个点集上的帕累托前使用paretosearchgamultiobj。目标函数有两个目标,一个二维的控制变量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;

基本的例子和情节

寻找目标函数用帕累托集paretosearchgamultiobj。设置UseVectorized选项真正的为了增加速度。包括一块函数可视化帕累托集。

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

图遗传算法包含一个坐标轴对象。坐标轴对象与标题帕累托前沿,包含目标1,ylabel目标2包含一行对象显示它的值只使用标记。

optsp = optimoptions (“paretosearch”,“UseVectorized”,真的,“PlotFcn”,{“psplotparetof”“psplotparetox”});[xp, fvalp, ~, psoutput] = paretosearch (@ (x) mymulti3 (x)据nvar, [], [], [], [], [], [], [], optsp);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。

图paretosearch包含2轴对象。坐标轴对象1标题帕累托前沿,包含目标1,ylabel目标2包含一行对象显示它的值只使用标记。坐标轴对象与标题2参数空间,包含参数1,ylabel参数2包含一行对象显示它的值只使用标记。

计算理论上精确点帕累托前使用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)];女朋友= gg + [18 * x (1); 9 * x (2) ^ 2);城市= 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(一个);情节(fvalga (: 1) fvalga (:, 2),的r *);情节(fs (: 1), fs (:, 2),“k”。)传说(“Paretosearch”,“Gamultiobj”,“真正的”)包含(“目标1”)ylabel (《目标2》)举行

图包含一个坐标轴对象。坐标轴对象包含目标1,ylabel目标2包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表Paretosearch, Gamultiobj,真的。

gamultiobj发现点目标函数空间中稍微更广泛的传播。情节的解决方案在决金宝搏官方网站策变量空间中,随着理论最优帕累托曲线和两个目标函数的等高线图。

(x, y) = meshgrid(1.9: .01:3.1, -3.2:幅:-1.8);mydata = mymulti3 ([x (:), y (:)));myff =√mydata (: 1) + 39);%的空间轮廓更好mygg =√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))ylabel (“x”(2))举行

图包含一个坐标轴对象。坐标轴对象包含x (1) ylabel x(2)包含5类型的对象轮廓,线。一个或多个行显示的值只使用标记

不像paretosearch解决方案中,gamultiobj在极端的解决方案分目标函数空间的范围。然而,paretosearch解决方案有更多的点更接近真正的解决方案在这两个目标函数空间和决策变量空间。帕累托前面点的数量是不同的每个解算器时使用默认选项。

转移问题

如果你的问题的解决方案有很大的控制变量?检查这种情况下通过改变变量的问题。为一个无约束的问题,gamultiobj可以失败,而paretosearch更健壮的这种变化。

为了方便比较,为每个解算器指定在帕累托35分。

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

图遗传算法包含一个坐标轴对象。坐标轴对象与标题帕累托前沿,包含目标1,ylabel目标2包含一行对象显示它的值只使用标记。

gamultiobj未能找到一个有用的帕累托集。

optsp。PlotFcn = [];optsp。ParetoSetSize = 35;[xpsh fvalpsh, ~, pshoutput] = paretosearch(乐趣、据nvar []、[] [], [], [], [], [], optsp);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。
图绘制(fvalpsh (: 1), fvalpsh (:, 2),“波”);持有情节(fs (: 1), fs (:, 2),“k”。)传说(“Paretosearch”,“真正的”)包含(“目标1”)ylabel (《目标2》)举行

图包含一个坐标轴对象。坐标轴对象包含目标1,ylabel目标2包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表Paretosearch,真的。

paretosearch发现解决方案分均匀几乎整个可能的范围。

添加范围,即使是相当宽松的,帮助这两个gamultiobjparetosearch找到相应的解决方案。金宝搏官方网站下界的-50年在每个组件,上界50

选择。PlotFcn = [];optsp。PlotFcn = [];磅= (-50、-50);乌兰巴托=磅;[xgash fvalgash, ~, gashoutput] = gamultiobj(乐趣、据nvar[]、[][],[],磅,乌兰巴托,选择);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。金宝搏官方网站
[xpsh2 fvalpsh2, ~, pshoutput2] = paretosearch(乐趣、据nvar[]、[][],[],磅,乌兰巴托,[],optsp);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。
图绘制(fvalpsh2 (: 1), fvalpsh2 (:, 2),“波”);持有情节(fvalgash (: 1) fvalgash (:, 2),的r *);情节(fs (: 1), fs (:, 2),“k”。)传说(“Paretosearch”,“Gamultiobj”,“真正的”)包含(“目标1”)ylabel (《目标2》)举行

图包含一个坐标轴对象。坐标轴对象包含目标1,ylabel目标2包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表Paretosearch, Gamultiobj,真的。

在这种情况下,解决找到好的解决方案。金宝搏官方网站

开始paretosearchgamultiobj解决方案

获得一个类似的解决方案的范围开始金宝搏官方网站paretosearchgamultiobj解决方案。

optsp。InitialPoints = xgash;[xpsh3 fvalpsh3, ~, pshoutput3] = paretosearch(乐趣、据nvar[]、[][],[],磅,乌兰巴托,[],optsp);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。
图绘制(fvalpsh3 (: 1), fvalpsh3 (:, 2),“波”);持有情节(fvalgash (: 1) fvalgash (:, 2),的r *);情节(fs (: 1), fs (:, 2),“k”。)传说(“Paretosearch”,“Gamultiobj”,“真正的”)包含(“目标1”)ylabel (《目标2》)举行

图包含一个坐标轴对象。坐标轴对象包含目标1,ylabel目标2包含3线类型的对象。一个或多个行显示的值只使用这些对象标记代表Paretosearch, Gamultiobj,真的。

现在,paretosearch解决方案是相似的gamultiobj解决方案的解决方案,虽然有些点是不同的。

从简略的解决方案金宝搏官方网站

获得一个好的解决方案的另一种方法是开始单独的点,每个目标函数最小化。

从多目标函数,创建一个简略依次选择每个目标函数。使用前一节的转移函数。因为你是给好的开始点解决,您不需要指定范围。

nobj = 2;%的目标数量x0 =转变;%初始点简略最小化uncmin =细胞(nobj, 1);%细胞数组来保存单目标最小值allfuns = 0 (nobj, 2);%的目标函数值eflag = 0 (nobj, 1);据= optimoptions (“patternsearch”,“显示”,“关闭”);%使用一个适当的解决者i = 1:英蒂nobj = 0 (nobj, 1);%选择最小化的目标英蒂(i) = 1;funi = @ (x)点(英蒂乐趣(x));我[uncmin {}, ~, eflag (i)) = patternsearch (x0, funi[],[],[],[],[],[],[],录像);%减少客观的我allfuns(我)=乐趣(uncmin{我});结束uncmin = cell2mat (uncmin);%矩阵的开始点

开始paretosearch简略的最低分,请注意,它有一个全面的解决方案。金宝搏官方网站paretosearch将随机初始点添加到提供的以人口至少options.ParetoSetSize个人。同样的,gamultiobj将随机点添加到提供的至少获得一个人口(options.PopulationSize) * (options.ParetoFraction)个人。

optsp = optimoptions (optsp,“InitialPoints”,uncmin);[xpinit fvalpinit, ~, outputpinit] = paretosearch(乐趣、据nvar []、[] [], [], [], [], [], optsp);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。

现在解决这个问题用gamultiobj从最初的开始点。

选择= optimoptions(选择,“InitialPopulationMatrix”,uncmin);[xgash2 fvalgash2, ~, gashoutput2] = gamultiobj(乐趣、据nvar[]、[][],[],[],[],选择);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。金宝搏官方网站
图绘制(fvalpinit (: 1), fvalpinit (:, 2),“波”);持有情节(fvalgash2 (: 1) fvalgash2 (:, 2),的r *);情节(fs (: 1), fs (:, 2),“k”。)情节(allfuns (: 1) allfuns (:, 2),“gs”,“MarkerSize”12)传说(“Paretosearch”,“Gamultiobj”,“真正的”,“开始点”)包含(“目标1”)ylabel (《目标2》)举行

图包含一个坐标轴对象。坐标轴对象包含目标1,ylabel目标2包含4线类型的对象。一个或多个行显示的值只使用这些对象标记代表Paretosearch, Gamultiobj,真的,开始点。

既解决者填写的极端点之间的帕累托面前,与合理准确而且恰到好处的解决方案。金宝搏官方网站

视图的最后点决策变量空间。

图;持有xx = x -转移(1);yy = y -转移(2);轮廓(xx, yy mygg 50)轮廓(xx, yy myff 50)情节(xpinit (: 1), xpinit (:, 2),“波”)情节(xgash2 (: 1) xgash2 (:, 2),的r *)ashift =——转变;情节(ashift (: 1) ashift (:, 2),“- k”)情节(uncmin (: 1) uncmin (:, 2),“gs”,“MarkerSize”12);包含(“x”(1))ylabel (“x”(2))举行

图包含一个坐标轴对象。坐标轴对象包含x (1) ylabel x(2)包含6类型的对象轮廓,线。一个或多个行显示的值只使用标记

另请参阅

|

相关的话题