主要内容

用遗传算法求解混合整数工程设计问题

这个例子展示了如何使用遗传算法(遗传算法)全局优化工具箱中的解算器。

本例中所示的问题涉及阶梯悬臂梁的设计。特别是,梁必须能够承受规定的端部荷载。我们将解决一个问题,使梁体积在各种工程设计约束下最小化。

在这个例子中,我们将解决[1]中发布的问题的两个有界版本。

阶梯式悬臂梁设计问题

一端支承阶梯式悬臂梁,自由端施加荷载,如下图所示。金宝app梁必须能够承受给定的载荷,金宝app$ P $,在固定的距离L美元的支持。金宝app梁的设计者可以改变梁的宽度($b_i$)及身高(h_i美元)每个部分的。我们假设悬臂的每个部分都有相同的长度,l美元

梁的体积

光束的体积,$V$,是各部分体积的总和

$ $ V = l (b_1h_1 + b_2h_2 + b_3h_3 + b_4h_4 + b_5h_5) $ $

设计约束:1 -弯曲应力

考虑单个悬臂梁,其坐标中心在其横截面的中心在梁的自由端。某一点的弯曲应力(x, y, z)美元在梁中,由下列方程给出

$$\sigma_b=M(x)y/I$$

哪里M (x)美元弯矩为$x$$x$距离终端负载和的距离我美元为梁的面积惯性矩。

现在,在图中所示的阶梯悬臂梁中,梁的每个截面的最大力矩为PD_i美元,在那里d1美元是距离端部荷载的最大距离,$ P $,适用于梁的每个截面。因此,最大应力为$ i $-梁的第一部分,\ sigma_i美元,是由

$ $ \ sigma_i = PD_i (h_i / 2) / I_i $ $

最大应力出现在梁的边缘,y = h_i / 2美元.面积惯性矩$ i $-梁的截面由下式给出:

$ $ $ $ I_i = b_ih_i ^ 3/12

代入方程\ sigma_i美元给予

$$\sigma\u i=6PD\u i/b\u ih\u i^2$$

悬臂各部分的弯曲应力不应超过最大许用应力,$ \ sigma_{马克斯}$.因此,我们最终可以说明五个弯曲应力约束(悬臂的每一步一个)。

$$\frac{6Pl}{b_5h_5^2}\leq\sigma_{max}$$

$ $ \压裂{6 p (2 l)} {b_4h_4 ^ 2} \ leq \ sigma_{马克斯}$ $

$$\frac{6P(3l)}{b_3h_3^2}\leq\sigma_{max}$$

$ $ \压裂{6 p (4 l)} {b_2h_2 ^ 2} \ leq \ sigma_{马克斯}$ $

$ $ \压裂{6 p (5 l)} {b_1h_1 ^ 2} \ leq \ sigma_{马克斯}$ $

设计约束:2 -端部挠度

悬臂梁的端部挠度可以用卡斯蒂利亚诺第二定理计算

$$ {/ * * * * * * * * * * * * * * * * * * *

哪里\三角洲美元为梁的挠度,美元$为由于施加的力而存储在光束中的能量,$ P $

悬臂梁中储存的能量由下式给出

$$U=\int\U 0^L\!M^2/2EI\,\mathrm{d}x$$

哪里M美元作用力的力矩是在$x$

鉴于此M = Px美元对于悬臂梁,我们可以把上面的方程写成

# e $ e $ e $ e $ e[(x + 4 l) ^ 2 / I_1 \ & # xA;+ (x + 3 l) ^ 2 / I_2 \ & # xA;+ l (x + 2) ^ 2 / I_3 \ & # xA;+ (x + l) ^ 2 / I_4 \ & # xA;+ x^2/I_5]\, \ mathm {d} x$$

哪里I_n美元是物体的面积惯性矩n美元-悬臂的一部分。对这个积分求值得到下面的表达式美元$

$ $ U = (P ^ 2/2) (l ^ 3/3E) (61 / I_1 + 37 / I_2 + 19 / I_3 + 7 / I_4 + 1 / I_5) $ $

应用Castigliano定理,梁的端部挠度如下所示:

$ $ \δ= Pl ^ 3/3E (61 / I_1 + 37 / I_2 + 19 / I_3 + 7 / I_4 + 1 / I_5) $ $

现在,悬臂的末端偏转,\三角洲美元,应小于最大允许挠度,$ \ delta_{马克斯}$,给出了下面的约束条件。

$$Pl^3/3E(61/I_1+37/I_2+19/I_3+7/I_4+1/I_5)\leq和#xA\delta_{max}$$

设计约束:3 -长宽比

对于悬臂的每个步骤,纵横比不得超过最大允许的宽高比,美元现代{马克斯}$.也就是说,

$ h_i / b_i \ leq现代{马克斯}$$i = 1,…, 5美元

描述优化问题

我们现在能够陈述问题,在给定约束的情况下,找到阶梯悬臂梁的最佳参数。

允许$x_1=b_1$x_2 = h_1美元x_3 = b_2美元x_4 = h_2美元x_5 = b_3美元$x_6=h_3$x_7 = b_4美元x_8 = h_4美元$x_9=b_5$美元间{10}= h_5 $

最小化:

$ $ V = l (x_1x_2 + x_3x_4 + x_5x_6 + x_7x_8 + x_9x_ {10}) $ $

主题:

$ $ \压裂{6 pl} {x_9x_ {10} ^ 2} \ leq \ sigma_{马克斯}$ $

$ $ \压裂{6 p (2 l)} {x_7x_8 ^ 2} \ leq \ sigma_{马克斯}$ $

$$\frac{6P(3l)}{x_5x_6^2}\leq\sigma_{max}$$

$ $ \压裂{6 p (4 l)} {x_3x_4 ^ 2} \ leq \ sigma_{马克斯}$ $

$ $ \压裂{6 p (5 l)} {x_1x_2 ^ 2} \ leq \ sigma_{马克斯}$ $

$ $ \压裂{Pl ^ 3} {E}(\压裂{244}{x_1x_2 ^ 3} + \压裂{148}{x_3x_4 ^ 3} + & # xA; \压裂{76}{x_5x_6 ^ 3} + \压裂{28}{x_7x_8 ^ 3} + & # xA; \压裂{4}{x_9x_ {10} ^ 3}) \ leq \ delta_{马克斯}$ $

$ $ x_2 / x_1 \ leq 20 $ $ $ $ x_4 / x_3 \ leq 20 $ $ $ $ x_6 / x_5 \ leq 20 $ $ & # xA; $ $ x_8 / x_7 \ leq 20 $ $ $ $间{10}/ x_9 \ leq 20 $ $

横梁的第一步只能加工到最近的厘米。也就是说,x_1美元x_2美元必须是整数。其余变量是连续的。变量的界限如下所示:-

$$1\leq x_1\leq 5$$

$30 \leq x_2 \leq 65$

$$2.4\leq x_3,x_5\leq 3.1$$

$$45\leq x_4,x_6\leq 60$$

$$1 \leq x_7, x_9 \leq 5$$

$30\leq x_8,x_{10}\leq 65$

这个问题的设计参数

对于本例中要解决的问题,梁必须支撑的端荷载为金宝app$P=50000 N$

梁长度和最大端部挠度为:

  • 梁总长度,$L=500厘米$

  • 梁的单个截面,$l = 100 cm$

  • 梁端最大挠度,$\delta_{max} = 2.7 cm$

梁的每个步骤中的最大允许应力,$ sigma_{max} = 14000 N/cm^2$

梁各阶的杨氏模量,$E = 2 × 10^{7} N/cm^2$

求解混合整数优化问题

我们现在解决中描述的问题描述优化问题

定义适应度和约束函数

检查MATLAB文件cantileverVolume.mcantileverConstraints.m查看适应度和约束函数是如何实现的。

关于线性约束的一个注记:当线性约束被指定为遗传算法,通常通过一个bAeq说真的投入。在这种情况下,我们通过非线性约束函数指定了它们。这是因为在本例的后面,一些变量将变得离散。当问题中存在离散变量时,在非线性约束函数中指定线性约束要容易得多。另一种方法是修改线性约束矩阵,使其在变换后的变量空间中工作,这不是简单的,也可能是不可能的。另外,在混合整数中遗传算法求解器中,线性约束与非线性约束没有任何区别,不管它们是如何指定的。

设定界限

创建包含下界的向量()和上界约束(乌兰巴托).

Lb = [1 30 2.4 45 2.4 45 1 30 1 30];Ub = [5 65 3.1 60 3.1 60 5 65 5 65];

设置选项

为了得到更精确的解,我们增加人口规模MaxGenerations选项的默认值,并减少EliteCountFunctionTolerance选项。这些设置的原因遗传算法使用更大的总体(增加的总体大小),增加设计空间的搜索(减少的EliteCount),并继续进行,直到其最佳成员的变化非常小(较小的函数公差)。我们还指定了一个绘图函数来监控惩罚函数值,如下所示:遗传算法的进展。

注意,有一个限制的集合遗传算法解决混合整数问题时可用的选项-详细信息,请参阅全局优化工具箱用户指南。

选择= optimoptions (@ga,...“PopulationSize”, 150,...“MaxGenerations”, 200,...“EliteCount”, 10,...“FunctionTolerance”1 e-8...“PlotFcn”,@gaplotbestf);

呼叫遗传算法解决问题

我们现在可以调用遗传算法来解决这个问题。在问题陈述中x_1美元x_2美元是整数变量。我们通过传递索引向量来指定它[1 2]遗传算法在非线性约束输入之后和选项输入之前。我们还在此处播种并设置随机数生成器,以确保再现性。

rng(0,“旋风”);[xb, fb, exitflag] = ga (@cantileverVolume 10 , [], [], [], [],...lb,ub,@悬臂约束[12],选项);
优化终止:超过了最大代数。

分析结果

如果问题有整数约束,遗传算法哈贝马斯在内部。特别地,问题中的适应度函数被处理约束的惩罚函数所代替。对于可行种群成员,惩罚函数与适应度函数相同。

解从遗传算法如下显示。注意,最靠近支架的部分被限制为宽度(金宝appx_1美元)及身高(x_2美元),它是一个整数值,该约束已被GA遵守。

显示(xb);
xbest =列1至7 3.0000 60.0000 2.8326 56.6516 2.5725 51.4445 2.2126列8至10 44.2423 1.7512 34.9805

我们也可以问遗传算法以返回光束的最佳体积。

流(“\n ga返回的代价函数=%g\n”、fb);
ga返回的成本函数=63196.6

添加离散非整数变量约束

工程师们现在被告知,悬臂的第二和第三步只能具有从标准设置中选择的宽度和高度。在本节中,我们将演示如何将此约束添加到优化问题中。请注意,添加此约束后,此问题与[1]中解决的问题相同。

首先,我们声明将添加到上述优化中的额外约束

  • 梁的第二和第三步的宽度必须从以下设置中选择:-[2.4,2.6,2.8,3.1]厘米

  • 梁的第二和第三级台阶的高度必须从以下设置中选择:-[45,50,55,60]厘米

为了解决这个问题,我们需要能够指定变量x_3美元x_4美元x_5美元x_6美元作为离散变量。指定组件的步骤$x_j$从集合中取离散值$S={v_1,\ldots,v_k}$、优化与$x_j$取值范围为1到的整型变量k美元,并使用$ S (x_j)美元作为离散值。指定范围(1到k美元),设1为下界和k美元作为上界。

首先,我们转换离散变量的上下限。每个集合有4个成员,我们将离散变量映射到[1,4]范围内的整数。为了把这些变量映射成整数,我们把每个变量的下界设为1上界设为4。

Lb = [1 30 1 1 1 1 1 30 1 30];Ub = [5 65 4 4 4 4 5 65 5 65];

的转换(整数)版本x_3美元x_4美元x_5美元x_6美元将被传递到适应度和约束函数,当遗传算法解算器。为了正确计算这些函数,x_3美元x_4美元x_5美元x_6美元需要转换为这些函数中给定的离散集合中的一个元素。要了解这是如何完成的,请检查MATLAB文件悬臂体积(含圆盘)mcantileverConstraintsWithDisc.m悬臂梁

现在我们可以调用遗传算法解决离散变量的问题。在这种情况下x_1美元,…, x_6 $是整数。这意味着我们传递索引向量1:6遗传算法定义整型变量。

rng(0,“旋风”);[xbestDisc, fbestDisc, exitflagDisc] = ga(@悬臂volumewithdisc,...10、[],[],[],lb, ub, @cantileverConstraintsWithDisc, 1:6, opts);
优化终止:超过了最大代数。

分析结果

xbestDisc(三6)遗传算法作为整数(即处于转换状态)。我们需要反向转换以检索它们的工程单元中的值。

xbestDisc = cantileverMapVariables (xbestDisc);显示(xbestDisc);
xbestDisc=第1列至第7列3.0000 60.0000 3.1000 55.0000 2.8000 50.0000 2.3036第8列至第10列43.6153 1.7509 35.0071

和以前一样,解决方案返回遗传算法尊重x_1美元x_2美元都是整数。我们也可以看到x_3美元x_5美元从[2.4,2.6,2.8,3.1]厘米和x_4美元x_6美元从一套[45,50,55,60]厘米中选择。

回想一下,我们在变量上添加了额外的约束x (3)x (4)x(5)x (6).正如预期的那样,当这些变量有额外的离散约束时,最优解决方案具有更高的最小容量。进一步注意,在[1]中报告的解决方案的最小体积是厘米^ 3 64558美元我们找到了一个近似于[1]的解。

流(“\n ga返回的代价函数=%g\n”, fbestDisc);
由ga = 65226.5返回的成本函数

概括

此示例说明了如何使用遗传算法解算器,遗传算法,求解具有整数约束的非线性优化问题。这个例子也显示了如何处理离散变量的问题,在问题的公式化。

参考

结构设计中的离散变量优化,P.B. Thanedar, G.N. Vanderplaats, J. Struct。Eng。,121 (3), 301-306 (1995)

相关话题