主要内容

焊接梁的优化设计

此示例显示如何检查梁的强度和成本之间的权衡。一些出版物将此示例用作各种多目标算法的测试问题,包括Deb等人[1]和Ray and 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 ) 焊接压力不能超过30,000 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。在工具箱的语法:

lb=[0.125,0.1,0.1,0.125];ub=[5,10,10,5];

目标函数出现在本例末尾的函数中objval (x). 非线性约束出现在函数的本例末尾非LCON(x)

多目标问题的形式化及其应用帕累托研究解决方案

您可以通过以下几种方式优化此问题:

  • 设置最大挠度,并在满足最大挠度约束的设计上找到单个目标的最小制造成本。

  • 设定最大制造成本,并在满足制造成本约束的设计上找到一个单目标最小偏差。

  • 解决一个多目标问题,可视化两个目标之间的权衡。

为了使用多目标方法,可以提供有关问题的更多信息,设置目标函数和非线性约束函数。

fun=@objval;nlcon=@nonlcon;

使用方法解决问题帕累托研究“psplotparetof”绘图功能。要减少诊断显示信息量,请设置显示选择“关”

opts_ps=最佳选项(“paretosearch”,“显示”,“关”,“PlotFcn”,“psplotparetof”);rng默认的%为了再现性[x_ps1 fval_ps1, ~, psoutput1] = paretosearch (Aineq有趣,4日,bineq,[],[],磅,乌兰巴托,nlcon, opts_ps);

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

为了更平滑的帕累托前端,尝试使用更多的点。

npts=160;%默认为60opts_ps.ParetoSetSize=npts;[x_ps2,fval_ps2,~,pOutput2]=帕累托搜索(乐趣,4,Aineq,bineq,[],[],[],[],lb,ub,nlcon,opts_ps);

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

此解决方案看起来像一条更平滑的曲线,但它的目标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.funcount);
总功能数:38401

gamultiobj需要数以万计的函数求值,而帕累托研究只需要数千美元。

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

这个gamultiobj解决方案似乎与实际情况不同帕累托研究解决方案,但由于绘制的比例不同,很难区分。使用相同的比例在同一绘图上绘制两个解决方案。金宝搏官方网站

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在绘图的最右边部分,解决方案更好,而帕累托研究解决方案最好在最左边的部分。帕累托研究使用更少的函数求值来获得其解决方案。

通常,当问题没有非线性约束时,帕累托研究至少和gamultiobj。但是,生成的Pareto集可能具有不同的范围。在这种情况下,非线性约束的存在会导致帕累托研究解决方案在部分范围内精度较低。

的主要优点之一帕累托研究它通常需要更少的函数求值。

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

为了帮助解算器找到更好的解,请从最小化单个目标函数的解的点开始。金宝搏官方网站这个精选索引函数返回单个目标objval函数。使用fmincon找到单目标最优解。然后用这些解作为多目标搜索的初始点。金宝搏官方网站

x0 = 0(2、4);X0f = (lb + ub)/2;opts_fmc = optimoptions (“fmincon”,“显示”,“关”,“MaxFunctionEvaluations”,1e4);x0(1,:)=fmincon(@(x)pickindex(x,1),x0f,Aineq,bineq,[],[],lb,ub,@非LCON,opts_fmc);x0(2,:)=fmincon(@(x)pickindex(x,2),x0f,Aineq,bineq,[],[],lb,ub,@非LCON,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。绘制的曲线在其范围的末端附近非常陡峭,这意味着如果成本略高于其最小值,则偏差会小得多,如果偏差略高于其最小值,则成本会小得多。

开始帕累托研究由于稍后将在同一绘图上绘制解决方案,请删除金宝搏官方网站帕累托研究绘图功能。

opts_ps.InitialPoints=x0;opts_ps.PlotFcn=[];[x_psx0,fval_ps1x0,~,psoutput1x0]=paretosearch(乐趣,4,Aineq,bineq,[],[],lb,ub,nlcon,opts_ps);disp(“总功能数:”+ psoutput1x0.funccount);
功能总数:4839

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

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,1e-2])图例(“paretosearch”,“gamultiobj”)xlabel“成本”ylabel“偏差”持有

从单一目标的解决方案开始金宝搏官方网站gamultiobj解决方案略优于帕累托研究整个标绘范围的解。然而,gamultiobj实现其解决方案所需的函数求值次数几乎是原来的十倍。

混合函数

gamultiobj可以调用混合函数福格拉坦自动尝试获得更精确的解决方案。查看混合功能是否改善了解决方案。

选择杂交=“fgoalattain”[xgah,fval_gah,~,gaoutputh]=gamultiobj(乐趣,4,Aineq,bineq,[],[],[],[],lb,ub,nlcon,opts_ga);disp(“总功能数:”+高乌特普特函数计数);
函数总数: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”)xlabel“成本”ylabel“偏差”持有

混合动力功能使车辆性能略有改善gamultiobj解决方案,主要在情节的最左边。

运行福格拉坦手动的帕累托研究解决方案点

虽然帕累托研究没有内置的混合动力功能,可以提高帕累托研究通过运行解决方案福格拉坦帕累托研究点的解决方案。建立一个目标和重量福格拉坦通过使用相同的设置福格拉坦如中所述gamultiobj混合函数

Fmax = max (fval_ps1x0);nobj =元素个数(Fmax);Fmin = min (fval_ps1x0);w = sum((Fmax - fval_ps1x0))。/(1 + Fmax - Fmin),2);p = w.*((Fmax - fval_ps1x0). x0);/(1 + Fmax - Fmin));xnew = 0(大小(x_psx0));nsol =大小(xnew, 1);fvalnew = 0 (nsol nobj);opts_fg = optimoptions (“fgoalattain”,“显示”,“关”);nfv = 0;对于ii=1:nsol[xnew(ii,:),fvalnew(ii,:),~,~,output]=fgoalattain(fun,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,1e-2])图例(“paretosearch”,“gamultiobj”,“gamultiobj / fgoalattain”,“paretosearch / fgoalattain”)xlabel“成本”ylabel“偏差”

的结合帕累托研究福格拉坦创建最精确的帕累托面。放大以查看。

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

即使有额外的福格拉坦计算时,组合的总函数计数小于gamultiobj只有解决方案。

fprintf(" gamultiobj单独的函数总数是%d.\n"+...“对于paretosearch和fgoalattain,它是%d。\n”,...gaoutput.FUNCOUNT,nfv+psoutput1x0.FUNCOUNT)
仅gamultiobj的函数总数为37441,paretosearch和fgoalattain的函数总数为18888。

从绘图中找到好的参数

绘制的点显示功能空间中的最佳值。要确定哪些参数达到这些功能值,请找到梁的尺寸和焊缝的尺寸,以获得特定的成本/挠度点。例如,图帕累托研究然后福格拉坦显示的点的成本约为6,偏转约为3.5e–3。确定实现这些点的梁和焊缝的尺寸。

whichgood=find(fvalnew(:,1)<=6&fvalnew(:,2)<=3.5e-3);goodpoints=table(xnew(whichgood,:),fvalnew(whichgood,:),“VariableNames”, {“参数”“目标”})
goodpoints =4×2表UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0032892 0.65077 1.4751 10 0.70999 5.976 0.0030919

四组参数的成本小于6,挠度小于3.5e–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)。^2 / 12 + 0.25*(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 = [tau - 13600,sigma - 3e4,6e3 - 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);回报率目标终止

工具书类

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

[2] Ray, T.和K. M. Liew。多目标优化设计的群体隐喻.工程优化342002,第141-153页。

相关的话题