一个焊接梁设计优化

该示例示出了如何检查光束的强度和成本之间的折衷。若干出版物使用本示例作为用于各种多目标算法,包括德布等人的测试问题。[1]和Ray和与Liew [2]。

有关此示例的视频概述,请参见多目标优化的帕累托集

问题描述

下面的草图改编自Ray和Liew[2]。

这个草图表示焊接到衬底上的光束。梁支撑的负载万博1manbetxP在距离大号从衬底。梁被焊接到与上部和下部焊接衬底,每种长度的和厚度H。梁具有矩形截面,宽度b,和高度Ť。梁的材料是钢。

这两个目标是梁的制造成本和梁的端部的所施加的载荷下挠曲P。负载P固定为6000磅,并且距离大号在被固定在14上。

设计变量为:

  • X(1)=H中,焊缝的厚度

  • X(2)=中,焊缝的长度

  • X(3)=Ť中,光束的高度

  • x (4) =b中,光束的宽度

束的制造成本正比于材料在光束的量, + 大号 Ť b ,加上材料在焊缝的量, H 2 。从被引论文使用比例常数,第一个目标是

F 1 X = 1 1 0 4 7 1 X 1 2 X 2 + 0 0 4 8 1 1 X 3 X 4 1 4 + X 2

梁的挠度与。成正比P和成反比 b Ť 3 。再次,使用所述比例常数从引用的论文,第二个目标是

F 2 X = P X 4 X 3 3 C ,在那里 C = 4 1 4 3 3 0 × 1 0 6 3 6 8 7 × 1 0 - 4 P = 6 000

这个问题有一些限制。

  • 焊缝厚度不能超过射束宽度。在码元中,x(1)<= X(4)。在工具箱中的语法:

Aineq = [1,0,0,-1];bineq = 0;
  • 的剪切应力 τ X 在焊缝上不能超过13600 psi。为了计算剪应力,首先计算初步表达式:

τ 1 = 1 2 X 1 X 2

[R = X 2 2 + X 1 + X 3 2

τ 2 = 大号 + X 2 / 2 [R 2 X 1 X 3 X 2 2 / 3 + X 1 + X 3 2

τ X = P τ 1 2 + τ 2 2 + 2 τ 1 τ 2 X 2 [R

总之,在焊缝上的剪切应力具有约束 τ X < = 13600。

  • 正常的压力 σ X 对焊缝不能突破3磅。正常应力 P 6 大号 X 4 X 3 2 3 0 × 1 0 3

  • 在垂直方向上的压曲载荷容量必须超过6000磅的施加载荷。使用杨氏模量的值 Ë = 3 0 × 1 0 6 psi和 G = 1 2 × 1 0 6 即屈曲载荷约束为 4 0 1 3 Ë X 3 X 4 3 6 大号 2 1 - X 3 2 大号 Ë 4 G 6 0 0 0 。在数字上,这成为不平等 6 4 7 4 6 0 2 2 1 - 0 0 2 8 2 3 4 6 X 3 X 3 X 4 3 6 0 0 0

  • 在变量的边界是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解决方案通过运行fgoalattainparetosearch解决方案要点。创建目标和权重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'偏转'

的组合paretosearchfgoalattain创建最精确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。

相关话题