该示例示出了如何检查光束的强度和成本之间的折衷。若干出版物使用本示例作为用于各种多目标算法,包括德布等人的测试问题。[1]和Ray和与Liew [2]。
有关此示例的视频概述,请参见多目标优化的帕累托集。
下面的草图改编自Ray和Liew[2]。
这个草图表示焊接到衬底上的光束。梁支撑的负载万博1manbetxP在距离大号从衬底。梁被焊接到与上部和下部焊接衬底,每种长度的升和厚度H。梁具有矩形截面,宽度b,和高度Ť。梁的材料是钢。
这两个目标是梁的制造成本和梁的端部的所施加的载荷下挠曲P。负载P固定为6000磅,并且距离大号在被固定在14上。
设计变量为:
X(1)=H中,焊缝的厚度
X(2)=升中,焊缝的长度
X(3)=Ť中,光束的高度
x (4) =b中,光束的宽度
束的制造成本正比于材料在光束的量, ,加上材料在焊缝的量, 。从被引论文使用比例常数,第一个目标是
梁的挠度与。成正比P和成反比 。再次,使用所述比例常数从引用的论文,第二个目标是
,在那里 和 。
这个问题有一些限制。
焊缝厚度不能超过射束宽度。在码元中,x(1)<= X(4)。在工具箱中的语法:
Aineq = [1,0,0,-1];bineq = 0;
的剪切应力 在焊缝上不能超过13600 psi。为了计算剪应力,首先计算初步表达式:
总之,在焊缝上的剪切应力具有约束 < = 13600。
正常的压力 对焊缝不能突破3磅。正常应力 。
在垂直方向上的压曲载荷容量必须超过6000磅的施加载荷。使用杨氏模量的值 psi和 即屈曲载荷约束为 。在数字上,这成为不平等 。
在变量的边界是0.125 <= X(1)<= 5,0.1 <= X(2)<= 10,0.1 <= X(3)<= 10,和0.125 <= X(4)<= 5在工具箱中的语法:
磅= [0.125,0.1,0.1,0.125];UB = [5,10,10,5];
目标函数出现在本例末尾的函数中objval(x)的
。非线性约束出现在本例末尾的函数中nonlcon(x)的
。
paretosearch
解您可以优化几种方法解决此问题:
设置一个最大的挠度,并找到一个单目标最小制造成本的设计,满足最大挠度约束。
设置一个最大的制造成本,并找到了满足制造成本约束设计一个单目标极小偏差。
解决多目标的问题,可视化的两个目标之间的权衡。
利用多目标方法,通过设置目标函数和非线性约束函数,可以获得更多的问题信息。
有趣= @objval;nlcon = @nonlcon;
解决使用问题paretosearch
与'psplotparetof'
绘图功能。为了减少诊断显示信息的量,设置显示
选项“关闭”
。
opts_ps = optimoptions('paretosearch',“显示”,“关闭”,'PlotFcn','psplotparetof');RNG默认%的再现性[x_ps1,fval_ps1,〜,psoutput1] = paretosearch(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ps);
DISP(“总功能计数:”+ psoutput1.funccount);
总功能计数:1320
对于平滑帕累托前,请尝试使用更多的积分。
NPTS = 160;%默认值为60opts_ps.ParetoSetSize = NPTS;[x_ps2,fval_ps2,〜,psoutput2] = paretosearch(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ps);
DISP(“总功能计数:”+ psoutput2.funccount);
总功能计数:4408
该解决方案看起来像平滑的曲线,但它具有的目的2更小的程度上使用160个帕累托点而不是60时,求解器接管三次许多功能评估。
gamultiobj
解要看求解器是否有作用,试试gamultiobj
解算器的问题。组等效选项在以前的解决方案。由于gamultiobj
求解器将不到一半的解保留在最佳帕累托前面,使用两倍于以前的点数。万博 尤文图斯
opts_ga = optimoptions('gamultiobj',“显示”,“关闭”,'PlotFcn','gaplotpareto',“族群大小”,2个* NPTS);[x_ga1,fval_ga1,〜,gaoutput1] = gamultiobj(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ga);
DISP(“总功能计数:”+ gaoutput1.funccount);
总功能计数:33921
gamultiobj
需要成千上万的函数计算paretosearch
只需要成千上万。
该gamultiobj
解决方法似乎就是从不同paretosearch
解决方案,虽然很难说,因为绘制的尺度不同。绘制在同一地块的两种解决方万博 尤文图斯案,使用相同的规模。
fps2 = sortrows (fval_ps2 1“提升”);身材保持上情节(FPS2(:,1),FPS2(:,2),'R-')FGA =调用sortRows(fval_ga1,1,“提升”);情节(FGA(:,1),FGA(:,2),'b--')XLIM([0,40])ylim([0,1e-2])图例('paretosearch','gamultiobj')包含'成本'ylabel'偏转'保持离
该gamultiobj
解决方案在情节的最右边部分更好,而paretosearch
解决方案是在最左边的部分更好。paretosearch
使用更少的函数计算来获得它的解。
通常,当问题没有非线性约束时,paretosearch
是至少为准确gamultiobj
。然而,由此产生帕累托集可以有稍微不同的范围。在这种情况下,非线性约束的存在使得paretosearch
溶液将超过该范围的部分不太准确。
其中一个主要优势paretosearch
是,它通常需要少得多的功能评估。
为了帮助解决者找到更好的解决方案,从那些对减少个体目标函数的解决万博 尤文图斯方案,点启动它们。该pickindex
函数从返回单个目标objval
功能。用fmincon
找到单目标最优解。然后使用这些解决方案作为初始点万博 尤文图斯多目标搜索。
X0 =零(2,4);X0F =(LB + UB)/ 2;opts_fmc = optimoptions(“fmincon”,“显示”,“关闭”,'MaxFunctionEvaluations',1E4);X0(1,:) = fmincon(@(X)pickindex(X,1),X0F,Aineq,bineq,[],[],LB,UB,@ nonlcon,opts_fmc);X0(2,:) = fmincon(@(X)pickindex(X,2),X0F,Aineq,bineq,[],[],LB,UB,@ nonlcon,opts_fmc);
检查单目标最优解。
objval(X0(1,:))
ANS =1×22.3810 0.0158
: objval (x0 (2))
ANS =1×276.7253 0.0004
最小成本为2.381,偏转值为0.158。最小偏转为0.0004,成本为76.7253。绘制的曲线在其范围的末端非常陡峭,这意味着如果你的花费比最小值高一点,你会得到更少的偏差;如果你的花费比最小值高一点,你会得到更少的成本。
开始paretosearch
从单一目标的解决方案。万博 尤文图斯因为稍后您将在同一张图上绘制解,所以删除万博 尤文图斯paretosearch
绘图功能。
opts_ps。InitialPoints = x0;opts_ps。P升otFcn = []; [x_psx0,fval_ps1x0,~,psoutput1x0] = paretosearch(fun,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ps); disp(“总功能计数:”+ psoutput1x0.funccount);
总功能计数:5024
开始GA
从相同的初始点,并删除其绘图功能。
opts_ga.InitialPopulationMatrix = X0;opts_ga.PlotFcn = [];[〜,fval_ga,〜,gaoutput] = gamultiobj(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ga);DISP(“总功能计数:”+ gaoutput.funccount);
总功能计数:46721
绘制在同一坐标的解万博 尤文图斯决方案。
FPS =调用sortRows(fval_ps1x0,1,“提升”);身材保持上情节(fps (: 1), fps (:, 2),'R-') fga = sortrows(fval_ga,1“提升”);情节(FGA(:,1),FGA(:,2),'b--')XLIM([0,40])ylim([0,1e-2])图例('paretosearch','gamultiobj')包含'成本'ylabel'偏转'保持离
通过从单目标的解决方案开始,万博 尤文图斯gamultiobj
解决方案略优于paretosearch
整个绘制范围的解决方案。然而,gamultiobj
需要近十倍的功能评估,以达到其解决方案。
gamultiobj
可以调用混合功能fgoalattain
自动以期达到更精确的解决方案。见混合功能是否提高了解决方案。
opts_ga.HybridFcn =“fgoalattain”;[xgah fval_gah, ~, gaoutputh] = gamultiobj (Aineq有趣,4日,bineq,[],[],磅,乌兰巴托,nlcon, opts_ga);DISP(“总功能计数:”+ gaoutputh.funccount);
总功能计数:45512
fgah = sortrows (fval_gah 1“提升”);身材保持上情节(fps (: 1), fps (:, 2),'R-')情节(FGA(:,1),FGA(:,2),'b--')情节(fgah (: 1) fgah (:, 2),'G-')XLIM([0,40])ylim([0,1e-2])图例('paretosearch','gamultiobj','gamultiobj / fgoalattain')包含'成本'ylabel'偏转'保持离
混合动力功能提供有关的轻微改善gamultiobj
解决方案,主要是在情节的最左边部分。
fgoalattain
从手动paretosearch
解决方案分虽然paretosearch
没有内置式混合动力功能,可以提高paretosearch
解决方案通过运行fgoalattain
从paretosearch
解决方案要点。创建目标和权重fgoalattain
通过使用用于相同的设置fgoalattain
中描述的gamultiobj混合函数。
FMAX = MAX(fval_ps1x0);的NObj = numel(Fmax的);FMIN =分钟(fval_ps1x0);W =总和((Fmax的 - fval_ps1x0)./(1 +的Fmax - Fmin的),2);P = W *((Fmax的 - fval_ps1x0)./(1 +的Fmax - Fmin的));xnew =零(大小(x_psx0));NSOL =尺寸(xnew,1);fvalnew =零(NSOL,的NObj);opts_fg = optimoptions(“fgoalattain”,“显示”,“关闭”);NFV = 0;对于2 = 1: nsol xnew (ii):), fvalnew (ii):), ~, ~,输出]= fgoalattain(有趣,x_psx0 (ii):), fval_ps1x0 (ii):), p (ii):)...Aineq,bineq,[],[],LB,UB,nlcon,opts_fg);NFV = NFV + output.funcCount;结束DISP(fgoalachieve函数计数:+ NFV)
fgoalattain功能计数:13350
fnew =调用sortRows(fvalnew,1,“提升”);身材保持上情节(fps (: 1), fps (:, 2),'R-')情节(FGA(:,1),FGA(:,2),'b--')情节(fgah (: 1) fgah (:, 2),'G-')情节(fnew (: 1) fnew (:, 2),'k.-')XLIM([0,40])ylim([0,1e-2])图例('paretosearch','gamultiobj','gamultiobj / fgoalattain','paretosearch / fgoalattain')包含'成本'ylabel'偏转'
的组合paretosearch
和fgoalattain
创建最精确Pareto前沿。放大看。
xlim([3.64 13.69]) ylim([0.00121 0.00442])持有离
即使有多余的fgoalattain
计算,用于组合的总功能计数小于用于所述功能的计数的一半gamultiobj
独自解决方案。
fprintf中(“为gamultiobj总功能数独是%d \ n”个+...“对于paretosearch和fgoalattain一起它是%d \ n”个,...gaoutput.funccount,NFV + psoutput1x0.funccount)
单是gamultiobj函数的总计数是46721。对于paretosearch和fgoal实现一起是18374。
绘制的点表示函数空间中的最佳值。为了确定哪些参数能够实现这些功能值,需要找到梁的尺寸和焊缝的尺寸,以获得特定的成本/挠度点。例如,的情节paretosearch
其次是fgoalattain
示出的点具有约6成本和大约3.5E-3的偏转。确定光束的尺寸和焊接该实现这些点。
whichgood =找到(fvalnew(:,1)<= 6&fvalnew(:,2)<= 3.5E-3);goodpoints =表(xnew(whichgood,:),fvalnew(whichgood,:),'VariableNames'{“参数”“目标”})
goodpoints =4×2表参数目标________________________________________ ___________________ 0.63457 1.5187 0.67261 10 0.0032637 5.6973 1.5708 0.61635 0.63165 10 0.0034754 5.391 0.63228 1.5251 10 0.6674 5.6584 0.0032892 0.65076 1.4751 0.70999 10 0.0030919 5.976
四组参数的实现成本小于6和挠度小于3.5e-3:
焊接于0.6略微厚度
约1.5焊缝长度
梁的高度10(上界)
光束0.63和0.71之间的宽度
功能[Cineq,CEQ] = nonlcon(x)的标准差= 5.04e5 ./(X(:,3)^ 2 * X(:,4));。P_C = 64746.022 *(1 - 0.028236 * X(:,3))* X(:,3)* X(:,4)^ 3;TP = 6e3./sqrt(2)./(x(:,1).*x(:,2));TPP = 6e3./sqrt(2)*(14 + 0.5 * X(:,2))* SQRT(0.25 *(X(:,2)^ 2 +(X(:,1)+ X(:,3))^ 2))./(X(:,1)* X(:,2)*(X(:,2)^ 2/12 + 0.25 *(X(:,1)+ X(:,3))^ 2));。tau蛋白= SQRT(TP ^ 2 + TPP ^ 2 +(X(:。。,2)* TP * TPP)./ SQRT(0.25 *(X(:,2)^ 2 +(X(:,。1)+ X(:,3))^ 2)));Cineq = [tau蛋白 - 13600,西格玛 - 3e4,6e3 - P_C];CEQ = [];结束功能F = objval f1 (x) = 1.10471 * x(: 1)。^ 2。* x(:, 2) + 0.04811 *(:, 3)。* x(:, 4)。* (14.0 + x (:, 2));f2 = 2.1952. / (x(:, 3)。^ 3。* x (:, 4));F = (f1、f2);结束功能z = pickindex(x,k)%评估两个目标Z = Z(k)的;%的回报目标K结束
[1]德布,Kalyanmoy,J.孙大信,Udaya卜哈斯卡瑞饶嗯,和Shamik乔赫里。基于参考点多目标优化使用进化算法。《计算智能研究国际期刊》,第2卷第3期,2006年,第273-286页。可以在https://www.softcomputing.net/ijcir/vol2-issu3-paper4.pdf
[2]雷,T。和K. M.刘氏。一大群隐喻多目标优化设计。工程优化34,2002,页141 - 153。