主要内容

相比帕累托研究gamultiobj

这个例子展示了如何使用这两种方法在帕累托前端创建一组点帕累托研究gamultiobj.目标函数有两个目标和一个二维控制变量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;

基本示例和情节

找到目标函数的Pareto设置帕累托研究gamultiobj.设定使用vectorized选择真正的为了增加速度。包含一个图形函数来可视化帕累托集合。

rng默认据nvar = 2;选择= optimoptions (@gamultiobj,'undervectorized',真的,“PlotFcn”“gaplotpareto”);[xga,fvalga,〜,gaoutput] = gamultiobj(@(x)mymulti3(x),nvars,[],[],[],[],[],[],选择);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

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

Optsp = Optimoptions('paretosearch''undervectorized',真的,“PlotFcn”,{'psplotparetof''psplotparetox'});[xp, fvalp, ~, psoutput] = paretosearch (@ (x) mymulti3 (x)据nvar ,[],[],[],[],[],[],[], optsp);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。

图帕膜搜索包含2个轴。带有标题帕累托前线的轴1包含类型线的物体。带有标题参数空间的轴2包含类型线的对象。

在理论上计算精确点的帕累托前沿使用mymulti4..这mymulti4.函数可在您的MATLAB®会话,当您单击按钮编辑或尝试此示例。

类型mymulti4.
函数mout = mymulti4(x)%gg = [4 * x(1)^ 3 + x(2)-2 * x(1)*(x(2)^ 2) -  18 * x(1);x(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.找到梯度完全平行的点,也就是输出的位置m= 0。

a = [fzero (@ (t) mymulti4 ([t、-3.15]),[2、3]),-3.15);为了JJ = Linspace(-3.125,-1.89,50)a = [a; [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''真的')Xlabel('目标1') ylabel ('目标2')举行

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

gamultiobj找到目标函数空间中分布较宽的点。在决策变量空间中绘金宝搏官方网站制解,并绘制理论最优帕累托曲线和两个目标函数的等值线图。

[x,y] = meshgrid(1.9:.01:3.1,-3.2:.01:-1.8);mydata = mymulti3([x(:),y(:)]);myff = sqrt(mydata(:,1)+ 39);%空间更好的轮廓mygg = sqrt(mydata(:,2)+ 28);%空间更好的轮廓myff =重塑(myff,size(x));mygg =重塑(mygg,size(x));数字;抓住轮廓(x, y, mygg 50)轮廓(x, y, myff, 50)情节(xp (: 1), xp (:, 2),'博')绘图(XGA(:,1),XGA(:,2),的r *)绘图(a(:,1),a(:,2),'-k')Xlabel(“x”(1)) ylabel (“x”(2))举行

图中包含一个坐标轴。轴线包含轮廓线、直线等5个对象。

不像帕累托研究解决方案,这gamultiobj解决方案在目标函数空间范围的极端结束时有点。然而帕累托研究在目标函数空间和决策变量空间中,解都有更多更接近真解的点。当您使用默认选项时,每个求解器的帕累托前端的点数是不同的。

转移问题

如果您的问题的解决方案具有较大的控制变量,会发生什么?通过移位问题变量来检查此案例。对于不受约束的问题,gamultiobj可以失败,而帕累托研究对这种转变更加强大。

为便于比较,请在Pareto前端为每个求解器指定35个点。

转变= (-30);有趣= @ (x) mymulti3 (x + shift);选择。PopulationSize = 100;%opts.paretofraction = 35[xgash,fvalgash,〜,gashoutput] = gamultiobj(fun,nvars,[],[],[],[],[],[],选择);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站

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

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

optsp。PlotFcn = [];optsp。ParetoSetSize = 35;[xpsh fvalpsh, ~, pshoutput] = paretosearch(有趣,据nvar ,[],[],[],[],[],[],[], optsp);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
图绘图(fvalpsh(:,1),fvalpsh(:,2),'博');抓住绘图(FS(:,1),FS(:,2),'k。') 传奇(“Paretosearch”'真的')Xlabel('目标1') ylabel ('目标2')举行

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

帕累托研究发现解决方案点几乎均匀地传播。

添加界限,甚至相当松散,有助于两者gamultiobj帕累托研究找到适当的解决方案。金宝搏官方网站设置下限-50年在每个组件中,和上限50.

选择。PlotFcn = [];optsp。PlotFcn = [];磅=(-50、-50);乌兰巴托=磅;[xgash fvalgash, ~, gashoutput] = gamultiobj(有趣,据nvar ,[],[],[],[], 磅,乌兰巴托,选择);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站
[xpsh2,fvalpsh2,〜,pshoutput2] = paretosearch(fun,nvars,[],[],[],[],LB,UB,[],OPTSP);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
图绘图(fvalpsh2(:,1),fvalpsh2(:,2),'博');抓住情节(fvalgash (: 1) fvalgash (:, 2),的r *);绘图(FS(:,1),FS(:,2),'k。') 传奇(“Paretosearch”'gamultiobj''真的')Xlabel('目标1') ylabel ('目标2')举行

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

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

开始帕累托研究gamultiobj解决方案

通过启动获得来自求解器的类似溶液金宝搏官方网站帕累托研究gamultiobj解决方案。

optsp。InitialPoints = xgash;[xpsh3 fvalpsh3, ~, pshoutput3] = paretosearch(有趣,据nvar ,[],[],[],[], 磅,乌兰巴托,[],optsp);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。
图绘图(fvalpsh3(:,1),fvalpsh3(:,2),'博');抓住情节(fvalgash (: 1) fvalgash (:, 2),的r *);绘图(FS(:,1),FS(:,2),'k。') 传奇(“Paretosearch”'gamultiobj''真的')Xlabel('目标1') ylabel ('目标2')举行

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

现在帕累托研究解决方案类似于gamultiobj解决方案,虽然一些解决方案点不同。

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

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

从多目标函数,创建一个单目标函数,依次选择每个目标。使用前一节中的移位功能。因为您要给索盘提供良好的开始点,所以您无需指定界限。

nobj = 2;%目标数量x0 = -shift;单目标最小化的%初始点uncmin =细胞(nobj, 1);%单元阵列保持单目标最小值allfuns = 0 (nobj, 2);%保持目标函数值eflag = 0 (nobj, 1);据= optimoptions ('patternsearch'“显示”“关闭”);%在这里使用适当的求解器为了I = 1:nobj indi = 0 (nobj,1);%选择目标以最小化英蒂(i) = 1;funi = @ (x)点(英蒂乐趣(x));我[uncmin {}, ~, eflag (i)) = patternsearch (funi, x0 ,[],[],[],[],[],[],[], 据);%最小化目标iallfuns(我,:) =有趣(unclmin {i});结尾uncmin = cell2mat(undmin);起始点的%矩阵

开始帕累托研究从单目标最小值点,并注意到它有一个完整的解决范围。金宝搏官方网站帕累托研究将随机初始点添加到提供的初始点上,以使总体至少为options.paretosetsize.个人。相似地,gamultiobj将随机点添加到提供的点上,以获得至少为的总体(选项.Populationsize)*(选项.ParetofRaction)个人。

optsp = optimoptions (optsp,'InitialPoints', uncmin);[xpinit fvalpinit, ~, outputpinit] = paretosearch(有趣,据nvar ,[],[],[],[],[],[],[], optsp);
帕累托集合满足约束条件。优化完成是因为帕累托集合体积的相对变化小于“选项”。paretosetchangettolerance '和约束满足于'options. constraintolerance '。

现在解决问题gamultiobj从初始点开始。

选择= Optimoptions(选择,'initialpopulationmatrix', uncmin);[xgash2,fvalgash2,〜,gashoutput2] = gamultiobj(fun,nvars,[],[],[],[],[],[],选择);
优化终止:Pareto解决方案的扩散的平均变化小于选项。功能化。金宝搏官方网站
图绘制(fvalpinit (: 1), fvalpinit (:, 2),'博');抓住绘图(FVALGASH2(:,1),FVALGASH2(:,2),的r *);绘图(FS(:,1),FS(:,2),'k。')情节(allfuns (: 1) allfuns (:, 2),'GS''Markersize',12)传奇(“Paretosearch”'gamultiobj''真的'“开始点”)Xlabel('目标1') ylabel ('目标2')举行

图中包含一个坐标轴。轴包含4个类型的4个物体。这些对象代表paretosearch,gamultiobj,true,起点。

两个求解器都在极值点之间填入帕累托前沿,具有合理的精确和间隔良好的解。金宝搏官方网站

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

数字;抓住XX = X  -  Shift(1);yy = y  -  shift(2);轮廓(xx,yy,mygg,50)轮廓(xx,yy,myff,50)plot(xpinit(:,1),xpinit(:,2),'博')绘图(XGash2(:,1),XGash2(:,2),的r *)Ashift = a  -  shift;情节(Asfift(:,1),Asfrift(:,2),'-k')情节(uncmin (: 1) uncmin (:, 2),'GS''Markersize',12);Xlabel(“x”(1)) ylabel (“x”(2))举行

图中包含一个坐标轴。轴线包含等高线、直线等6个对象。

也可以看看

|

相关话题