主要内容

焊接梁的优化设计

这个例子展示了如何检查光束的强度和成本之间的权衡。一些出版物使用这个例子作为各种多目标算法的测试问题,包括Deb et al。[1]和雷和刘[2]。

视频概述的这个例子中,看到的帕累托集的多目标优化

问题描述

下列草图改编自射线和刘[2]。

这个素描代表一个梁焊接到衬底。梁支持负载万博1manbetxP在远处l从底物。梁与上部和下部焊缝焊接到衬底,每个长度l和厚度h。梁有一个矩形截面,宽度b,和高度t。梁的材料是钢。

这两个目标是光束的偏转的制造成本外加负载下的梁的结束P。负载P固定在6000磅,距离l是固定在14。

设计变量:

  • x (1) =h焊缝的厚度

  • x (2) =l焊缝的长度

  • x (3) =t梁的高度

  • x (4) =b梁的宽度

的制造成本梁在梁的材料数量成正比, ( l + l ) t b ,再加上焊接的材料数量, l 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 t 3 。再一次,使用的比例常数引用论文,第二个目标

F 2 ( x ) = P x 4 x 3 3 C ,在那里 C = 4 ( 1 4 ) 3 3 0 × 1 0 6 3 6 5 8 7 × 1 0 - - - - - - 4 P = 6 , 000年

这个问题有几个限制。

  • 焊缝厚度不能超过波束宽度。在符号,(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 = ( l + 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 ) 在焊缝不能超过30000 psi。正常的压力是 P 6 l x 4 x 3 2 3 0 × 1 0 3

  • 垂直方向的屈曲承载力的应用负载必须超过6000磅。利用杨氏模量的值 E = 3 0 × 1 0 6 psi和 G = 1 2 × 1 0 6 psi,屈曲载荷约束 4 0 1 3 E x 3 x 4 3 6 l 2 ( 1 - - - - - - x 3 2 l E 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);乌兰巴托= [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 (Aineq有趣,4日,bineq,[],[],磅,乌兰巴托,nlcon, opts_ps);

disp (”函数总数:“+ psoutput1.funccount);
函数总数:1870

为了顺畅的帕累托前沿,尝试使用更多的点。

《不扩散核武器条约》= 160;%默认是60opts_ps。ParetoSetSize = npts; [x_ps2,fval_ps2,~,psoutput2] = paretosearch(fun,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ps);

disp (”函数总数:“+ psoutput2.funccount);
函数总数:6254

这个解决方案看起来像一个流畅的曲线,但它有一个较小的程度上客观的2。解算器接管三倍功能评价在使用160帕累托点而不是60。

gamultiobj解决方案

解算器是否有影响,请尝试gamultiobj解决这个问题。等效选项设置为在前面的解决方案。因为gamultiobj解算器保持不到一半的解决方案最好的帕累托面前,用两倍点。万博 尤文图斯

opts_ga = optimoptions (“gamultiobj”,“显示”,“关闭”,“PlotFcn”,“gaplotpareto”,“PopulationSize”,2 *不扩散核武器条约》);[x_ga1 fval_ga1, ~, gaoutput1] = gamultiobj (Aineq有趣,4日,bineq,[],[],磅,乌兰巴托,nlcon, opts_ga);

disp (”函数总数:“+ gaoutput1.funccount);
函数总数:38401

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,1依照])传说(“paretosearch”,“gamultiobj”)包含“成本”ylabel“偏差”持有

gamultiobj在最右边的部分解决方案是更好的情节,而paretosearch在最左边的部分解决方案是更好。paretosearch少使用了很多函数评估来获得它的解决方案。

通常,当没有非线性约束问题,paretosearch至少是尽可能准确吗gamultiobj。然而,由此产生帕累托集可以有不同的范围。在这种情况下,非线性约束的存在引起的paretosearch解决方案不准确在范围的一部分。

的主要优点之一paretosearch通常需要许多少功能评估。

从简略的解决方案万博 尤文图斯

帮助解决者找到更好的解决方案,从点开始他们的个人目标函数最小化的万博 尤文图斯解决方案。的pickindex函数返回一个目标的objval函数。使用fmincon找到简略的最适条件。然后使用这些解决方案为一个多目万博 尤文图斯标搜索初始点。

x0 = 0 (2、4);x0f =(磅+乌兰巴托)/ 2;opts_fmc = optimoptions (“fmincon”,“显示”,“关闭”,“MaxFunctionEvaluations”1 e4);x0 (1) = fmincon (@ (x) pickindex (x, 1), x0f, Aineq, bineq,[],[],磅,乌兰巴托,@nonlcon, opts_fmc);x0 (2) = fmincon (@ (x) pickindex (x, 2), x0f, Aineq, bineq,[],[],磅,乌兰巴托,@nonlcon, opts_fmc);

分析单目标最适条件。

: objval (x0 (1))
ans =1×22.3810 - 0.0158
:objval (x0 (2))
ans =1×276.7188 - 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(fun,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ps); disp(”函数总数:“+ psoutput1x0.funccount);
函数总数:4839

开始遗传算法从相同的初始点,并删除它的情节功能。

opts_ga。InitialPopulationMatrix = x0;opts_ga。PlotFcn = []; [~,fval_ga,~,gaoutput] = gamultiobj(fun,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ga); disp(”函数总数:“+ gaoutput.funccount);
函数总数:37441

情节的解决方案在同万博 尤文图斯一坐标轴。

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,1依照])传说(“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);
函数总数:57478
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,1依照])传说(“paretosearch”,“gamultiobj”,“gamultiobj / fgoalattain”)包含“成本”ylabel“偏差”持有

混合函数提供了一个轻微的改善gamultiobj解决方案,主要是在最左边的阴谋的一部分。

运行fgoalattain手动的paretosearch解决方案分

虽然paretosearch没有内置混合函数,你可以改善paretosearch解决方案通过运行fgoalattainparetosearch点的解决方案。创建一个目标和权重fgoalattain通过使用相同的设置fgoalattain中描述的gamultiobj混合函数

Fmax = max (fval_ps1x0);nobj =元素个数(Fmax);Fmin = min (fval_ps1x0);w =总和((Fmax - fval_ps1x0)。/ (1 + Fmax - Fmin), 2);p = w。* ((Fmax - fval_ps1x0)。/ (1 + Fmax - Fmin));xnew = 0(大小(x_psx0));nsol =大小(xnew, 1);fvalnew = 0 (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,[][],磅,乌兰巴托,nlcon, opts_fg);nfv = nfv + output.funcCount;结束disp (“fgoalattain功能”数:+ nfv)
fgoalattain函数数:14049
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,1依照])传说(“paretosearch”,“gamultiobj”,“gamultiobj / fgoalattain”,“paretosearch / fgoalattain”)包含“成本”ylabel“偏差”

的结合paretosearchfgoalattain创造了最准确的帕累托。放大看。

xlim ([3.64 - 13.69]) ylim ([0.00121 - 0.00442])

即使有额外的fgoalattain计算,结合的功能总数小于一半的数的函数gamultiobj独自解决方案。

流(“gamultiobj函数总数% d。\ n”+“paretosearch和fgoalattain % d。\ n”,gaoutput。funccount nfv + psoutput1x0.funccount)
独自gamultiobj函数总数是37441。paretosearch和fgoalattain一起是18888。

从情节找到好的参数

绘制点显示最好的值函数空间。实现这些函数值,以确定哪些参数,找到梁的大小和尺寸的焊为了得到一个特定的成本/偏转。例如,的情节paretosearch紧随其后的是fgoalattain显示点的成本约6和3.5 e - 3的偏转。确定梁的尺寸和焊缝,实现这些点。

whichgood =找到(fvalnew (: 1) < = 6 & fvalnew (:, 2) < = 3.5 e - 3);goodpoints =表(xnew (whichgood:), fvalnew (whichgood:)“VariableNames”,{“参数”“目标”})
goodpoints =4×2表参数目标________________________________________ ___________________ 10 0.67262 5.6974 - 0.0032637 0.61635 - 1.5708 0.63457 - 1.5187 0.63165 - 5.391 0.0034753 0.63228 1.5251 10 0.6674 5.6584 0.0032892 0.65077 1.4751 0.70999 5.976 0.0030919

四组参数实现的成本小于6的挠度小于3.5 e - 3:

  • 焊缝厚度略超过0.6

  • 焊缝长度约1.5

  • 梁高度10(上限)

  • 波束宽度在0.63和0.71之间

客观和非线性约束

函数[Cineq,测查]= nonlconσ(x) = 5.04 e5。/ (x (:, 3)。^ 2。* x (:, 4));P_c = 64746.022 * (1 - 0.028236 * x (:, 3))。* x (:, 3)。* x (:, 4)。^ 3;tp = 6 e3. /√(2) / (x (: 1)。* x (:, 2));tpp = 6 e3. /√(2) . * (14 + 0.5 * x (:, 2))。* sqrt (0.25 * (x (:, 2)。^ 2 + (x (: 1) + x (:, 3)) ^ 2)) / (x (: 1)。* x (:, 2)。* (x (:, 2)。^ + 0.25 * 2/12 (x (: 1) + x (:, 3)) ^ 2));τ=√tp。^ 2 + tpp。^ 2 + (x (:, 2)。* tp。* tpp)。/ sqrt (0.25 * (x (:, 2)。^ 2 + (x (: 1) + x (:, 3)) ^ 2)));Cineq =[τ- 13600,σ- 3 e4, 6 e3 - P_c];测查= [];结束函数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 = objval (x);%评估这两个目标z = z (k);%返回目标k结束

引用

[1]Deb, Kalyanmoy j . Sundar乌达毗迦Rao N,经济部乔杜里。基于参考点使用进化多目标优化算法。国际计算智能研究杂志》上,卷。2、3号,2006年,页273 - 286。可以在https://www.softcomputing.net/ijcir/vol2-issu3-paper4.pdf

[2]雷,T。,和K. M. Liew.一群隐喻的多目标优化设计。2002年工程优化34,pp.141 - 153。

相关的话题