主要内容

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

这个例子展示了如何解决混合整数使用遗传算法(工程设计问题遗传算法在全球优化工具箱)解算器。

问题说明在这个例子中包括一个梯形悬臂梁的设计。特别是,梁必须能够携带规定的负载。我们将解决问题最小化梁体积受各种工程设计约束。

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

悬臂梁的设计问题

一端支持加强悬臂梁自由端和负载应用,如下图所示。万博1manbetx光束必须能够支持给定的负载,万博1manbetx$ P $,在一个固定的距离L美元的支持。万博1manbetx梁的设计师可以改变宽度(b_i美元)和高度(h_i美元)的每个部分。我们假定每个部分的悬臂长度相同,l美元

梁的体积

梁的体积,五美元,个人部分的体积的总和

$ $ 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 /我$ $

在哪里M (x)美元弯矩在吗x美元,x美元最后加载和距离吗我美元是梁的惯性矩。

现在,在悬臂梁图所示,每个部分的梁的最大力矩PD_i美元,在那里d1美元最大距离结束的负载,$ P $梁的每个部分。因此,的最大应力我美元th梁的截面,\ sigma_i美元的话,是

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

的最大应力出现在梁的边缘,y = h_i / 2美元。该地区的惯性矩我美元th部分给出了梁的

$ $ $ $ I_i = b_ih_i ^ 3/12

用这个方程\ sigma_i美元给了

$ $ \ sigma_i = 6 pd_i / b_ih_i ^ 2 $ $

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

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

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

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

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

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

限制设计:2 -偏转

悬臂式可以计算使用的最终挠度卡斯蒂利亚诺第二定理,即

δ= $ $ \ \压裂{\偏U}{\部分P} $ $

在哪里\三角洲美元梁的挠度,你美元是能量存储在梁由于作用力,$ P $

能量存储在一个悬臂梁是由

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

在哪里M美元应用力的时刻吗x美元

考虑到M = Px美元悬臂梁,我们可以写出上述方程

$ $ U = & # xA; P ^ 2/2E \ int_0 l ^ \ ![(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] \ \ mathrm x $ $ {d}

在哪里I_n美元惯性矩的面积n美元th悬臂的一部分。评估积分给下面的表达式你美元

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

应用卡斯蒂利亚诺定理,最后给出梁的挠度

$ $ \δ= 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_{马克斯}$ $

限制设计: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_{马克斯}$ $

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

$ $ \压裂{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,间{10}\ leq 65美元

设计参数对这个问题

在这个例子中,我们将解决的问题最后加载梁必须支持万博1manbetxP = N 50000美元

梁长度和最大挠度结束:

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

  • 个人部分梁、$ l = 100厘米

  • 最大的梁端挠度,$ \ delta_{马克斯}= 2.7厘米

最大允许应力在梁的每一步,$ \ sigma_{马克斯}= 14000 N /厘米^ 2美元

梁的杨氏模量的每一步,$ E = 2 \ times10 ^ ^ {7} N /厘米2美元

解决混合整数规划问题

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

定义健身和约束功能

检查MATLAB®文件cantileverVolume.mcantileverConstraints.m看到健身和约束功能是如何实现的。

在线性约束:当线性约束指定遗传算法通过,您通常指定它们一个,b,Aeq说真的输入。在这种情况下我们指定通过非线性约束函数。这是因为在这个例子中,将离散的一些变量。当有离散变量问题更容易指定线性约束的非线性约束函数。替代方法是修改线性约束矩阵转换变量空间中工作,这并不是微不足道的,也许不可能。另外,在混合整数遗传算法解算器,是不会被看成是线性约束的非线性约束,不管他们是如何指定。

设置范围

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

[1 30 2.4 45磅= 2.4 45 1 30 1 30];乌兰巴托= [5 65 3.1 3.1 60 60 65 65 5];

设置选项

获得更准确的解决方案,我们增加了PopulationSize,MaxGenerations选项的默认值,减少EliteCountFunctionTolerance选项。这些设置的原因遗传算法使用一个更大的人口(增加PopulationSize),增加设计的搜索空间(减少EliteCount),继续前行,直到其最佳成员变化非常小(小FunctionTolerance)。我们还指定一个函数监控罚函数值的阴谋遗传算法的进展。

请注意,有限制的遗传算法选择当解决混合整数问题——看到全局优化工具箱用户指南的更多细节。

选择= 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 []、[] [], [],2磅,乌兰巴托,@cantileverConstraints[1],选择);
优化终止:超过了一代又一代的最大数目。

分析结果

如果一个问题有整数约束,遗传算法哈贝马斯在内部。特别是,适应度函数的问题是被罚函数处理约束条件。可行的人口成员,罚函数作为适应度函数是一样的。

返回的解决方案遗传算法如下显示。注意,最近的部分支持约束的宽度(万博1manbetxx_1美元)和高度(x_2美元),是一个整数值,这约束已经被GA荣幸。

显示(xb);
xb = 1到7列3.0000 60.0000 2.8504 57.0057 2.6114 50.6243 2.2132列8到10 44.2349 1.7543 35.0595

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

流(' \ nCost函数返回的ga = % g \ n '、fb);
成本函数返回的ga = 63408.9

添加离散非整数变量约束

工程师们现在告知,第二个和第三个步骤的悬臂只能有宽度和高度选择从一组标准。在本节中,我们将展示如何添加这个约束优化问题。注意,与这个约束,是相同的,解决这个问题[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)美元作为离散值。指定范围(1k美元),1设置为下界k美元作为上界。

所以,首先我们变换离散变量的范围。每组有四个成员,我们将离散变量映射到一个整数范围内[1,4]。地图这些变量是整数,我们设置下限为1和4的上界的每个变量。

30磅= [1 1 1 1 1 1 30 1 30];乌兰巴托= [5 65 4 65 4 65 5 5];

转换(整数)的版本x_3美元,x_4美元,x_5美元x_6美元现在将被传递到健身和约束功能的时候遗传算法解算器。正确评估这些函数,x_3美元,x_4美元,x_5美元x_6美元需要转换为给定的离散集成员在这些功能。看到这是如何实现的,检查MATLAB文件cantileverVolumeWithDisc.m,cantileverConstraintsWithDisc.mcantileverMapVariables.m

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

rng (0,“旋风”);[xbestDisc, fbestDisc exitflagDisc] = ga (@cantileverVolumeWithDisc,10[][],[],[],磅,乌兰巴托,@cantileverConstraintsWithDisc, 1:6,选择);
优化终止:超过了一代又一代的最大数目。

分析结果

xbestDisc(三6)是回来遗传算法为整数(即改变状态)。我们需要反向转换检索价值的工程单位。

xbestDisc = cantileverMapVariables (xbestDisc);显示(xbestDisc);
xbestDisc = 1到7列3.0000 60.0000 3.1000 55.0000 2.6000 50.0000 2.2430列8到10 44.8603 1.8279 36.5593

和之前一样,从返回的解决方案遗传算法荣誉的约束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]。

流(' \ nCost函数返回的ga = % g \ n ',fbestDisc);
成本函数返回的ga = 64795

总结

这个例子演示了如何使用遗传算法解算器,遗传算法,解决约束非线性优化问题整数约束。示例还显示了如何处理问题的离散变量问题公式化。

引用

[1]Thanedar, p . B。,G. N. Vanderplaats. "Survey of Discrete Variable Optimization for Structural Design." Journal of Structural Engineering 121 (3), 1995, pp. 301–306.

相关的话题