先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。
这一期是利用蜣螂优化(DBO)算法去求解工程领域中的实际问题。文献[1]设计的DBO算法是2022年11月27日提出的,到现在才一个多月时间。这里先放一个DBO算法的链接,不清楚DBO算法的,可以先看我往期的推送,了解它的算法原理和计算流程。
工程领域有许多优化设计问题,今天先介绍6种:压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。这些优化设计都是在满足各种约束条件下,使得材料花销最少、或质量最小、或体积最小等。因此,它们的数学模型都是单目标或多目标的约束优化模型。今天介绍的6个问题都属于单目标约束优化。
在该设计问题中,目标函数为压力容器的总成本,包括材料、成形和焊接成本。如图1所示,压力容器的两端都有盖子封顶,头部一端的封盖为半球状。该优化问题包括4个决策变量:容器壁的厚度(Ts)、半球头部的厚度(Th)、内半径(R)、和圆柱截面的长度(L)。
图1 压力容器设计
其数学模型如下:
滚动轴承优化设计的目标是使得滚动轴承的动态承载能力最大,有10个决策变量和10个约束条件。如图2所示,10个决策变量包括五个设计变量和五个设计参数来优化滚动轴承的承载能力。这些设计变量分别是节径Dm、球径Db、滚道内外曲率系数(fo和fi)以及球的总数Z,设计参数分别是e、ε、ζ、KDmax和KDmin,仅在约束条件上出现。10个约束条件都是基于制造和运动学因素的非线性约束。注意,这是一个最大化问题,算法求解时,将其处理成最小化问题。
图2 滚动轴承设计
其数学模型如下:
拉伸/压缩弹簧设计问题的目的是在满足最小挠度、震动频率和剪应力的约束下,最小化拉压弹簧的重量。如图3所示,该问题由3个连续的决策变量组成,即弹簧线圈直径(d)、弹簧簧圈直径(D)和绕线圈数(P)。
图3 拉伸/压缩弹簧设计
其数学模型如下:
悬臂梁包括5个截面为方形的空心单元。从图4中可以看出,每个单元由一个变量定义,而厚度是恒定的,因此共有5个结构参数,即5个决策变量。悬臂梁优化设计的目标是将横梁的重量减到最小,约束条件是满足一个垂直位移约束。
图4 悬臂梁设计
其数学模型如下:
轮系设计问题旨在使图5所示的轮系的传动比成本最小化。这个问题有四个整数决策变量,其中、、、分别代表四个不同齿轮的齿数。
图5 轮系设计
其数学模型如下:
三杆桁架设计问题的目的是通过调整横截面积(x1和x2)来最小化三杆桁架的体积。该三杆式桁架在每个桁架构件上受到应力(σ)约束,如图6所示。该优化问题具有一个非线性适宜度函数、3个非线性不等式约束和两个连续决策变量。
图6 三杆桁架设计
其数学模型如下:
DBO算法本身是针对无约束优化问题提出的。因此,将DBO算法用于求解约束优化问题时,需要对约束条件进行处理。根据进化计算中约束处理方法的研究进展,约束处理方法主要分为3类:罚函数方法、可行规则方法和多目标方法。
因原理简单和易于实现,罚函数方法是目前应用广泛的约束处理方法之一。罚函数方法是在目标函数中加入一个惩罚函数将约束问题转换成一个无约束问题,该方法的难点在于罚函数的选择。常用的罚函数方法主要有3种:死罚函数方法、静态罚函数方法和自适应罚函数方法。
可行规则方法建立在可行解要优于不可行解的偏好基础上,3条比较规则为:可行解要优于不可行解;当两个都是可行解时,选择目标函数值小的解;当两个都是不可行解时,选择违反约束小的解。
近年来,多目标概念已经越来越多地用于进化计算中的约束处理问题,其思想是将约束转换成一个或多个目标。根据处理约束的不同原则,有两类多目标方法:一类是有两个目标的,如源目标函数和所有约束违反程函数;另一类是将每个约束看成一个目标。因此,对于有m个约束的约束问题来说,总共有m+1个目标函数。
惩罚函数是最流行的约束处理方法,因为它简单且易于实现。为了简单起见,这里使用文献[2]中的惩罚方法来处理这些工程优化设计问题的约束条件,这是一种常见的罚函数:
G()是不等式约束,H()是等式约束,是不等式约束的数量,是等式约束的数量,和是正的常数,和等于1或2。对于这种惩罚方法,当候选解违反任何约束时,目标函数值都会增加,将种群从不可行解推入可行域内。
这里是采用了文献[2]中一个比较经典的罚函数方法,旨在做简单的演示。实际上,大家也可以改用其他的罚函数方法,例如文献[3]中提出的Oracle罚函数方法,或者使用其他的约束处理技术。此外,利用智能优化算法求解约束优化问题时,除了算法上的改进外,也可以在约束条件的处理技术上做创新。比如文献[4]在文献[3]的基础上提出了一种改进的Oracle罚函数方法,并嵌入到差分进化(DE)算法中。文献[5]在算法和约束处理上都做了改进。
将约束处理后的数学模型,利用DBO算法进行求解。为了对比性能,这里随便选了近期推送的两种算法来进行对比。这里将DBO算法的求解效果与哈里斯鹰优化(HHO)算法和白鲸优化(BWO)算法进行对比。不了解HHO算法或者BWO算法的朋友可以翻看往期推送。
由于DBO算法的种群规模只能是30的倍数,为了保证实验的科学性,三种算法的种群规模均为30,最大迭代次数为1000。取10次运行中最优的一次结果及其对应的决策变量值进行展示。对比结果如表1~表6所示,其中,最优结果用粗体表示;收敛曲线如图7~图12所示。这里就不再进一步做分析和讨论了。
算法 | Ts | Th | R | L | 最优值 |
DBO | 0.7984779 | 0.394688 | 41.37191 | 185.8524 | 5920.96187173 |
HHO | 0.8410799 | 0.4072979 | 42.69365 | 169.398 | 6084.66482009 |
BWO | 0.887704 | 0.427016 | 44.27818 | 179.4046 | 7017.42355547 |
算法 | Dm | Db | Z | fi | fo |
DBO | 125.7191 | 21.42559 | 11 | 0.515 | 0.5150005 |
HHO | 126.6187 | 20.04402 | 11 | 0.515 | 0.5862558 |
BWO | 125.9773 | 20.20524 | 11 | 0.5154684 | 0.541816 |
KDmin | KDmax | ε | e | ζ | 最优值 |
0.442251 | 0.6239287 | 0.3 | 0.06245871 | 0.7106569 | 85549.23863792 |
0.4202882 | 0.6200877 | 0.3267517 | 0.06355081 | 0.6633952 | 75976.24424012 |
0.437648 | 0.6634133 | 0.3073489 | 0.03483546 | 0.65318 | 76142.46689560 |
(这里需要注意的是,滚动轴承设计是最大化问题,在算法求解时将其处理成了最小化问题。因此最优值要取一个负号才是实际问题的最优结果,包括收敛曲线的绘制也要取反。)
算法 | d | D | P | 最优值 |
DBO | 0.0505805 | 0.330629 | 13 | 0.01268813 |
HHO | 0.054573 | 0.43015 | 8 | 0.01281078 |
BWO | 0.0521058 | 0.364712 | 11 | 0.01287256 |
算法 | x1 | x2 | x3 | x4 | x5 | 最优值 |
DBO | 6.0191 | 5.3099 | 4.4911 | 3.5058 | 2.1479 | 1.33996061 |
HHO | 5.971 | 5.2163 | 4.5846 | 3.4876 | 2.2266 | 1.34073305 |
BWO | 5.3864 | 5.0601 | 4.7783 | 4.9733 | 2.2515 | 1.40086059 |
算法 | Ta | Tb | Td | Tf | 最优值 |
DBO | 43 | 19 | 16 | 49 | 2.7009E-12 |
HHO | 49 | 16 | 19 | 43 | 2.7009E-12 |
BWO | 34 | 13 | 20 | 53 | 2.3078E-11 |
算法 | x1 | x2 | 最优值 |
DBO | 0.78877 | 0.40798 | 263.89585015 |
HHO | 0.79294 | 0.39633 | 263.90899011 |
BWO | 0.79286 | 0.3981 | 264.06448937 |
图7 DBO、HHO和BWO在压力容器设计问题上的收敛曲线
图8 DBO、HHO和BWO在滚动轴承设计问题上的收敛曲线
图9 DBO、HHO和BWO在拉伸/压缩弹簧设计问题上的收敛曲线
图10 DBO、HHO和BWO在悬臂梁设计问题上的收敛曲线
图11 DBO、HHO和BWO在轮系设计问题上的收敛曲线
图12 DBO、HHO和BWO在三杆桁架设计问题上的收敛曲线
MATLAB代码请关注GZH:启发式算法讨论。其中,main.m是主函数,直接运行即可;DBO.m是算法的代码;Problem_range.m是6个工程优化设计问题的基本性质,规定了问题的维度、各决策变量的取值范围;Problem_models.m是6个工程优化设计问题的数学模型,即目标函数、约束条件,以及使用罚函数处理的过程;Bound_limit.m是边界约束处理,保证解的决策变量不超出取值范围。
其他:
哈里斯鹰优化(HHO)算法在工程优化设计中的应用
白鲸优化(BWO)算法在工程优化设计中的应用
蛇优化(SO)算法在工程优化设计中的应用
金豺优化(GJO)算法在工程优化设计中的应用
[1] Xue J, Shen B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization[J]. The Journal of Supercomputing, 2022: 1-32.
[2] Coello C A C. Theoretical and numerical constraint-handling techniques used with evolutionary algorithms: a survey of the state of the art[J]. Computer methods in applied mechanics and engineering, 2002, 191(11-12): 1245-1287.
[3] Dong, M., Wang, N., Cheng, X., & Jiang, C.: Composite differential evolution with modified oracle penalty method for constrained optimization problems. Mathematical problems in engineering, 2014, 1-15 (2014).
[4] 汪逸晖, 高亮. 乌鸦搜索算法的改进及其在工程约束优化问题中的应用[J]. 计算机集成制造系统, 2021, 27(07): 1871-1883.