主要内容

焊接梁的优化设计

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

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

问题描述

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

这个草图表示焊接到衬底上的光束。梁支撑的负载金宝appP.在距离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

这个问题有一些限制。

  • 焊缝厚度不能超过射束宽度。在码元中,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 = 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 lbs的施加荷载 E. = 3. 0. × 1 0. 6. psi和 G = 1 2 × 1 0. 6. ,则屈曲载荷约束为 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];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]=帕累托搜索(乐趣,4,Aineq,bineq,[],[],[],[],lb,ub,nlcon,opts_ps);

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

要获得更平滑的帕累托前沿,请尝试使用更多点。

NPTS = 160;%默认值为60opts_ps.ParetoSetSize = NPTS;[x_ps2,fval_ps2,〜,psoutput2] = paretosearch(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ps);

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

该解决方案看起来像平滑的曲线,但它具有的目的2更小的程度上使用160个帕累托点而不是60时,求解器接管三次许多功能评估。

伽默多布吉解决方案

想知道解算器是否有效果,试试伽默多布吉解算器的问题。组等效选项在以前的解决方案。因为这伽默多布吉solver在最佳帕累托前只保留了不到一半的解,使用的点数是以前的两倍。金宝搏官方网站

opts_ga=optimoptions('gamultiobj'“显示”“关闭”“PlotFcn”“帕累托”“族群大小”,2个* NPTS);[x_ga1,fval_ga1,〜,gaoutput1] = gamultiobj(乐趣,4,Aineq,bineq,[],[],LB,UB,nlcon,opts_ga);

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

伽默多布吉需要成千上万的函数计算,然而paretosearch只需要成千上万。

比较解决方案金宝搏官方网站

伽默多布吉解决方法似乎就是从不同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')包含'成本'伊拉贝尔“偏转”抓住

伽默多布吉解决方案最好放在情节的最右边,而paretosearch最左边部分的解决方案更好。paretosearch使用更少的函数求值来获得它的解。

通常,当问题没有非线性约束时,paretosearch是至少为准确伽默多布吉.然而,由此产生帕累托集可以有稍微不同的范围。在这种情况下,非线性约束的存在使得paretosearch溶液将超过该范围的部分不太准确。

它的主要优点之一是paretosearch它通常需要更少的函数求值。

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

为了帮助解决者找到更好的解决方案,从那些对减少个体目标函数的解决金宝搏官方网站方案,点启动它们。这pickindex函数从奥比瓦尔功能。使用铁铬镍铁合金找到单目标最优解。然后使用这些解决方案作为初始点金宝搏官方网站多目标搜索。

x0=0(2,4);x0f=(lb+ub)/2;opts_fmc=options(“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.7188 0.0004

最小成本为2.381,偏差为0.158。最小挠度为0.0004,成本为76.7253。绘制的曲线在其范围的端点附近相当陡峭,这意味着如果你的成本略高于其最小值,你得到的偏差会少得多,或者如果你的偏差略高于其最小值,你得到的偏差会少得多。

开始paretosearch从单一目标的解决方案。金宝搏官方网站因为你稍后会在同一个图上画出解,去掉金宝搏官方网站paretosearch绘图功能。

opts_ps。InitialPoints = x0;opts_ps。P.L.otFcn = []; [x_psx0,fval_ps1x0,~,psoutput1x0] = paretosearch(fun,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ps); disp(“总函数计数:”+psoutput1x0.funcount);
函数总数:4839

开始GA.从相同的初始点,删除其绘图功能。

opts_ga.InitialPopulationMatrix=x0;opts_ga.PlotFcn=[];[~,fval_ga,~,gaoutput]=gamultiobj(fun,4,Aineq,bineq,[],[],[],lb,ub,nlcon,opts_ga);disp(“总函数计数:”+gaoutput.FUNCOUNT);
函数总数: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,1e-2])图例(“paretosearch”'gamultiobj')包含'成本'伊拉贝尔“偏转”抓住

通过从单目标解决方案开始金宝搏官方网站伽默多布吉解决方案略好于paretosearch整个绘制范围内的解决方案。然而伽默多布吉需要近十倍的功能评估,以达到其解决方案。

混合函数

伽默多布吉可以调用混合功能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,1e-2])图例(“paretosearch”'gamultiobj'“gamultiobj/fgoalattain”)包含'成本'伊拉贝尔“偏转”抓住

混合动力功能提供有关的轻微改善伽默多布吉解决方案,主要在绘图的最左侧部分。

fgoalattain手动从paretosearch解决方案分

虽然paretosearch没有内置式混合动力功能,可以提高paretosearch解决方案通过运行fgoalattainparetosearch解决方案点。创建目标和权重fgoalattain通过使用相同的设置fgoalattain中描述的gamultiobj混合函数

Fmax=max(fval_ps1x0);nobj=numel(Fmax);Fmin=min(fval_ps1x0);w=sum((Fmax-fval_ps1x0)。/(1+Fmax-Fmin),2);p=w.*((Fmax-fval_ps1x0)。/(1+Fmax-Fmin));xnew=zero(size(x_psx0));nsol=size(xnew,1);fvalnew=zero(nsol,nobj);opts_fg=options(“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.FUNCOUNT;结尾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,1e-2])图例(“paretosearch”'gamultiobj'“gamultiobj/fgoalattain”“paretosearch/fgoalattain”)包含'成本'伊拉贝尔“偏转”

结合paretosearchfgoalattain创建最精确Pareto前沿。放大看。

Xlim ([3.64 13.69]) ylim([0.00121 0.00442])保持

即使是额外的fgoalattain计算,用于组合的总功能计数小于用于所述功能的计数的一半伽默多布吉独自解决方案。

fprintf中(“仅gamultiobj的函数总数为%d。\n”+...“对于paretosearch和fgoalattain一起它是%d \ n”个...gaoutput.funccount,NFV + psoutput1x0.funccount)
gamultiobj单独的函数总数是37441。帕累托搜索和fgoalattain加在一起是18888。

从情节中找到好的参数

绘制的点表示函数空间的最佳值。为了确定哪些参数达到这些功能值,找到梁的尺寸和焊缝的尺寸,以获得特定的成本/挠度点。例如,情节paretosearch其次是fgoalattain示出的点具有约6成本和大约3.5E-3的偏转。确定光束的尺寸和焊接该实现这些点。

whichgood =找到(fvalnew(:,1)<= 6&fvalnew(:,2)<= 3.5E-3);goodpoints =表(xnew(whichgood,:),fvalnew(whichgood,:),“变化无常”,{“参数”“目标”})
好点子=4×2表参数的目标  ________________________________________ ___________________ 0.63457 - 1.5187 10 0.67262 5.6974 0.0032637 0.61635 1.5708 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.5e-3:

  • 焊缝厚度略大于0.6

  • 约1.5焊缝长度

  • 梁高10(上限)

  • 光束宽度介于0.63和0.71之间

目标和非线性约束

作用(电影,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,Ceq)中,非非非非LCon(x)中的(x)中的(x)六个(x)sigma)sigma=5.04e5.04e5.5.5.5五(5)的(5.5.4)中,6.4)中,6.022(1)中,Ceq)中,Ceq)中,Ceq(1(1)中,Ceq)中)中,非非非非非非非非非LCon(x(x(x(x(x(x(x)非非伦敦(x)非非非非非非非非非LCon(x(x)非伦敦(x)非伦敦(x)非伦敦(x)非伦敦(x)非伦敦(x)非伦敦()*(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,sigma-3e4,6e3-puc];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 = objval(x);同时评估两个目标Z = Z(k)的;%返回目标k结尾

参考文献

[1] Deb、Kalyanmoy、J.Sundar、Udaya Bhaskara Rao N和Shamik Chaudhuri。基于参考点的进化算法多目标优化.国际计算智能研究杂志,Vol. 2, No. 3, 2006, pp. 273-286。可以在https://www.softcomputing.net/ijcir/vol2-issu3-paper4.pdf

[2] Ray,T.和K.M.Liew。一大群隐喻多目标优化设计.工程科学与技术,2002,vol . 34, no .1 - 153。

相关话题