主要内容

绘制三维帕累托面前

这个例子展示了如何画一个帕累托前三的目标。每一个目标函数是特定三维点的距离的平方。计算的速度,把每个目标函数以矢量化的方式写成点积。获得一个密集的解集,使用200点帕累托。

第一次的例子展示了如何获得使用内置的情节“psplotparetof”图的功能。然后解决同样的问题,得到使用gamultiobj,这需要稍微不同的选项设置。的例子显示了如何获取解决方案对一个特定变量的帕累托图。然后直接的例子显示了如何绘制点,不使用一块功能,并展示了如何绘制一个插值结果而不是帕累托点。

有趣= @ (x)[点(x - (1、2、3), x - (1、2、3), 2),点(x - (1、3、2), x - (1、3、2), 2),点(x - (0, 1, 1), x - (0, 1, 1), 2)];选择= optimoptions (“paretosearch”,“UseVectorized”,真的,“ParetoSetSize”,200,“PlotFcn”,“psplotparetof”);磅= 5 *的(1、3);乌兰巴托=磅;rng默认的%的再现性[x, f] = paretosearch(有趣,3[][],[],[],磅,乌兰巴托,[],选项);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。

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

选择= optimoptions (“gamultiobj”,“PlotFcn”,“gaplotpareto”,“PopulationSize”,200);[xg, fg] = gamultiobj(乐趣3[]、[][],[],磅,乌兰巴托,[],选择);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。金宝搏官方网站

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

这个图展示了许多比少点paretosearch情节。解决这个问题再次使用一个更大的人口。

选择。PopulationSize = 400;[xg, fg] = gamultiobj(乐趣3[]、[][],[],磅,乌兰巴托,[],选择);
优化终止:平均变化量小于options.FunctionTolerance帕累托的传播解决方案。金宝搏官方网站

改变视角,以更好地匹配psplotpareto情节。

视图(-40年,57)

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

找到解决方案使用工具提示

选择一个情节点通过使用数据提示工具。

DataTips.png

ParetoPoint.png

见点指数92。显示点xg (92:)包含解变量与图相关的观点。

:disp (xg (92))
-0.2889 0.0939 0.4980

评估目标函数在这一点上看到它与显示值。

disp(乐趣(xg(92年,:)))
11.5544 15.1912 1.5321

创建三维散点图

情节点帕累托前使用scatter3

图次要情节(2 2 1)scatter3 (f (: 1), f (:, 2), f (:, 3),“k”。);次要情节(2,2,2)scatter3 (f (: 1), f (:, 2), f (:, 3),“k”。);视图(-148 8)次要情节(2,2,3)scatter3 (f (: 1), f (:, 2), f (:, 3),“k”。);视图(-180 8)次要情节(2,2,4)scatter3 (f (: 1), f (:, 2), f (:, 3),“k”。);视图(-300 8)

图包含4轴对象。坐标轴对象1包含一个散射类型的对象。坐标轴对象2包含一个对象类型的散射。坐标轴对象3包含一个对象类型的散射。坐标轴对象4包含一个散射类型的对象。

旋转情节交互式地,你会得到一个更好的视图的结构。

插值曲面图

看到帕累托前表面,创建一个分散interpolant。

图F = scatteredInterpolant (F (: 1), F (:, 2), F (:, 3),“线性”,“没有”);

绘制结果表面,在x - y空间创建一个网格从最小到最大的价值。然后情节插值结果。

sgr = linspace (min (f (: 1)), max (f (: 1)));ygr = linspace (min (f (:, 2)), max (f (:, 2)));[XX, YY] = meshgrid (sgr, ygr);ZZ = F (XX, YY);

图帕累托点和表面在一起。

图次要情节(2 2 1)冲浪(YY, XX ZZ,“线型”,“没有”)举行scatter3 (f (: 1) f (:, 2), f (:, 3),“k”。);持有次要情节(2,2,2)冲浪(YY, XX ZZ,“线型”,“没有”)举行scatter3 (f (: 1) f (:, 2), f (:, 3),“k”。);持有视图(-148 8)次要情节(2,2,3)冲浪(YY, XX ZZ,“线型”,“没有”)举行scatter3 (f (: 1) f (:, 2), f (:, 3),“k”。);持有视图(-180 8)次要情节(2,2,4)冲浪(YY, XX ZZ,“线型”,“没有”)举行scatter3 (f (: 1) f (:, 2), f (:, 3),“k”。);持有视图(-300 8)

图包含4轴对象。坐标轴对象1包含2类型的对象表面散射。坐标轴对象2包含对象类型的表面散射。坐标轴对象3包含2类型的对象表面散射。坐标轴对象4包含2类型的对象表面散射。

旋转情节交互式地,你会得到一个更好的视图的结构。

在控制变量空间情节帕累托集

你可以获得一个帕累托集的情节点使用“psplotparetox”图的功能。

选项。PlotFcn =“psplotparetox”;[x, f] = paretosearch(有趣,3[][],[],[],磅,乌兰巴托,[],选项);
帕累托集发现满足约束条件。优化完成,因为相对变化量的体积小于帕累托集”选项。ParetoSetChangeTolerance”和内部约束得到满足”options.ConstraintTolerance”。

图paretosearch包含一个坐标轴对象。标题为参数空间的坐标轴对象,包含参数1,ylabel参数2包含一行对象显示其值只使用标记。

另外,创建一个值的散点图帕累托集。

图次要情节(2 2 1)scatter3 (x (: 1), (:, 2), x (:, 3),“k”。);次要情节(2,2,2)scatter3 (x (: 1), (:, 2), x (:, 3),“k”。);视图(-148 8)次要情节(2,2,3)scatter3 (x (: 1), (:, 2), x (:, 3),“k”。);视图(-180 8)次要情节(2,2,4)scatter3 (x (: 1), (:, 2), x (:, 3),“k”。);视图(-300 8)

图包含4轴对象。坐标轴对象1包含一个散射类型的对象。坐标轴对象2包含一个对象类型的散射。坐标轴对象3包含一个对象类型的散射。坐标轴对象4包含一个散射类型的对象。

这组没有一个清晰的表面。旋转情节交互式地,你会得到一个更好的视图的结构。

平行的情节

您可以使用一个平行坐标图帕累托集情节。您可以使用任意数量的维度的平行坐标图。的情节,每个颜色的线代表一个帕累托点,每个块坐标变量一个关联的垂直线。阴谋使用目标函数值parellelplot

图p = parallelplot (f);p。CoordinateTickLabels = [“其中Obj1”;“methoda”;“Obj3”];

帕累托点颜色的最低十的值methoda

minObj2 = min (f (:, 2));maxObj2 = max (f (:, 2));grpRng = minObj2 + 0.1 * (maxObj2-minObj2);grpData = f (:, 2) < = grpRng;p。GroupData = grpData;p。LegendVisible =“关闭”;

图包含一个parallelplot类型的对象。

另请参阅

|

相关的话题