一个焊接梁设计优化

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

在这个例子中的视频概述,请参阅Pareto解集的多目标优化

问题描述

下面草图适于从Ray和与Liew [2]。

这个草图表示焊接到衬底上的光束。梁支撑的负载金宝appP在距离大号从衬底。梁被焊接到与上部和下部焊接衬底,每种长度的和厚度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磅。为了计算剪切应力,第一计算初步的表达式:

τ 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 PSI时,压曲载荷的约束是 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')xlabel'成本'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.PlotFcn = [];[x_psx0,fval_ps1x0​​,〜,psoutput1x0] = paretosearch(乐趣,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')xlabel'成本'ylabel'偏转'保持

通过从单目标的解决方案开始,金宝搏官方网站gamultiobj解决方法是稍微好过paretosearch整个绘制范围的解决方案。然而,gamultiobj需要近十倍的功能评估,以达到其解决方案。

混合功能

gamultiobj可以调用混合功能fgoalattain自动以期达到更精确的解决方案。见混合功能是否提高了解决方案。

opts_ga.HybridFcn ='fgoalattain';[xgah,fval_gah,〜,gaoutputh] = gamultiobj(乐趣,4,Aineq,bineq,[],[],LB,UB,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')xlabel'成本'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;对于II = 1:NSOL [xnew(二,:),fvalnew(二,:),〜,〜,输出] = fgoalattain(乐趣,x_psx0(二,:),fval_ps1x0​​(二,:),P(ⅱ,:)...Aineq,bineq,[],[],LB,UB,nlcon,opts_fg);NFV = NFV + output.funcCount;结束DISP(“fgoalattain功能计数:”+ 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')xlabel'成本'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和fgoalattain在一起是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(x)的F1 = 1.10471 * X(:,1)^ 2 * X。(:,2)+ 0.04811 * X(:,3)* X(:,4)。*(14.0 + X(:,2));F2 = 2.1952./(x(:,3).^3 * X(:,4));F = [F1,F2]。结束功能Z = pickindex(X,K)Z = objval(X);%评估这两个目标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,pp.141-153。

相关话题