主要内容

绘制3-D Pareto Front

这个例子展示了如何为三个目标绘制帕累托阵线。每个目标函数是到特定三维点的距离的平方。为提高计算速度,将每个目标函数以点积的形式向量化。为了得到稠密的解集,在帕累托前面使用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 ,[],[],[],[], 磅,乌兰巴托,[]选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。

图paretosearch包含一个轴对象。标题为Pareto Front的axis对象包含一个类型为line的对象。

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

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

这张图显示的点比paretosearch情节。用更大的人口来解决这个问题。

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

改变观察角度以更好地匹配psplotpareto情节。

视图(-40年,57)

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

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

使用数据提示工具在图中选择一个点。

图中点的指数为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个轴对象。axis对象1包含一个散点类型的对象。axis对象2包含一个散点类型的对象。axis对象3包含一个散点类型的对象。axis对象4包含一个散点类型的对象。

通过交互式地旋转情节,你可以更好地了解它的结构。

插值曲面图

要将帕累托前端看作一个表面,创建一个分散的插值。

图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包含2个类型为面、散点的对象。坐标轴对象3包含2个类型为面、散点的对象。坐标轴对象4包含2个类型为面、散点的对象。

通过交互式地旋转情节,你可以更好地了解它的结构。

在控制变量空间中绘制帕累托集

你可以得到帕累托集合上的点的图“psplotparetox”图的功能。

选项。PlotFcn =“psplotparetox”;[x, f] = paretosearch(有趣,3 ,[],[],[],[], 磅,乌兰巴托,[]选项);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。

图paretosearch包含一个轴对象。标题为“参数空间”的axis对象包含一个类型为line的对象。

或者,创建帕累托集合中x值的散点图。

图次要情节(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个轴对象。axis对象1包含一个散点类型的对象。axis对象2包含一个散点类型的对象。axis对象3包含一个散点类型的对象。axis对象4包含一个散点类型的对象。

这个布景表面不清晰。通过交互式地旋转情节,你可以更好地了解它的结构。

平行的情节

您可以使用平行坐标绘制帕累托集合。你可以用平行坐标绘制任意维数的图。在绘图中,每条彩色线代表一个帕累托点,每个坐标变量绘图到相关的垂直线。使用。绘制目标函数值parellelplot

图p =平行图(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的对象。

另请参阅

|

相关的话题