基于材料生成算法的工程优化
文章目录
- 一、理论基础
- 1、材料生成算法
- (1)模拟化合物
- (2)模拟化学反应
- (3)模拟化学稳定性
- 2、MGA算法流程图
- 二、仿真实验与分析
- 三、参考文献
一、理论基础
1、材料生成算法
材料生成算法(Material Generation Algorithm, MGA)是Siamak Talatahari等人于2021年提出的一种新型启发式算法,其灵感来源于材料化学的三个主要概念(化合物、化学反应和化学稳定性)。
考虑到许多自然进化算法建立了一个预定义的候选解群体,这些候选解通过随机改变和选择进化而来,MGA确定了一系列由多个周期表元素(PTEsPTE_sPTEs)组成的材料(MatMatMat)。在该算法中,许多材料被视为候选解(MatnMat_nMatn),这些候选解由一些表示为决策变量(PTEijPTE_i^jPTEij)的元素组成。这两个方面的数学表述如下:Mat=[Mat1Mat2⋮Mati⋮Matn]=[PTE11PTE12⋯PTE1j⋯PTE1dPTE21PTE22⋯PTE2j⋯PTE2d⋮⋮⋮⋱⋮PTEi1PTEi2⋯PTEij⋯PTEid⋮⋮⋮⋱⋮PTEn1PTEn2⋯PTEnj⋯PTEnd],{i=1,2,⋯,nj=1,2,⋯,d(1)Mat=\begin{bmatrix}Mat_1\\Mat_2\\\vdots\\Mat_i\\\vdots\\Mat_n\end{bmatrix}=\begin{bmatrix} PTE_1^1 & PTE_1^2 & \cdots & PTE_1^j & \cdots & PTE_1^d \\PTE_2^1 & PTE_2^2 & \cdots & PTE_2^j & \cdots & PTE_2^d \\\vdots & \vdots & & \vdots & \ddots & \vdots \\PTE_i^1 & PTE_i^2 & \cdots & PTE_i^j & \cdots & PTE_i^d \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\PTE_n^1 & PTE_n^2 & \cdots & PTE_n^j & \cdots & PTE_n^d \end{bmatrix},\,\,\begin{dcases}i=1,2,\cdots,n\\j=1,2,\cdots,d\end{dcases}\tag{1}Mat=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡Mat1Mat2⋮Mati⋮Matn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡PTE11PTE21⋮PTEi1⋮PTEn1PTE12PTE22⋮PTEi2⋮PTEn2⋯⋯⋯⋯PTE1jPTE2j⋮PTEij⋮PTEnj⋯⋯⋱⋯⋱⋯PTE1dPTE2d⋮PTEid⋮PTEnd⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤,{i=1,2,⋯,nj=1,2,⋯,d(1)其中,ddd是每种材料(候选解)中元素(决策变量)的数量;nnn是候选解的材料数量。
在优化过程的第一阶段,PTEijPTE_i^jPTEij是随机确定的,而决策变量的边界是基于所考虑的问题定义的。PTEPTEPTE的初始位置在搜索空间中随机确定,如下所示:PTEij(0)=PTEi,minj+Unif(0,1).(PTEi,maxj−PTEi,minj),{i=1,2,⋯,nj=1,2,⋯,d(2)PTE_i^j(0)=PTE_{i,\min}^j+Unif(0,1).(PTE_{i,\max}^j-PTE_{i,\min}^j),\,\,\begin{dcases}i=1,2,\cdots,n\\j=1,2,\cdots,d\end{dcases}\tag{2}PTEij(0)=PTEi,minj+Unif(0,1).(PTEi,maxj−PTEi,minj),{i=1,2,⋯,nj=1,2,⋯,d(2)其中,PTEij(0)PTE_i^j(0)PTEij(0)确定第iii种材料中第jjj个元素的初始值;PTEi,minjPTE_{i,\min}^jPTEi,minj和PTEi,maxjPTE_{i,\max}^jPTEi,maxj分别是第iii个候选解的第jjj个决策变量的最小允许值和最大允许值;Unif(0,1)Unif(0,1)Unif(0,1)是[0,1][0,1][0,1]区间内的一个随机数。
(1)模拟化合物
为了对化合物进行数学建模,假设所有PTEPTEPTE都处于基态,基态可以由磁场、光子或光的能量吸收以及与离子或其他单个电子有关的不同碰撞体或粒子的相互作用在外部激发。由于元素的稳定性不同,它们有失去、获得甚至与其他PTEPTEPTE共享电子的趋势,从而形成离子或共价化合物。为了模拟离子和共价化合物,使用初始MatMatMat(式(1))选择ddd个随机PTEPTEPTE。对于所选择的PTEPTEPTE,通过概率对电子的丢失、获得或共享过程进行建模。为了实现这一目标,对每个PTEPTEPTE使用连续概率分布来配置化合物,该化合物被视为新的PTEPTEPTE,如下所示:PTEnewk=PTEr1r2±e−,k=1,2,⋯,d(3)PTE_{new}^k=PTE_{r_1}^{r_2}\pm e^-,\,\,k=1,2,\cdots,d\tag{3}PTEnewk=PTEr1r2±e−,k=1,2,⋯,d(3)其中,r1r_1r1和r2r_2r2分别为[1,n][1,n][1,n]和[1,d][1,d][1,d]区间内的均匀分布随机整数;PTEr1r2PTE_{r_1}^{r_2}PTEr1r2是从MatMatMat中随机选择的PTEPTEPTE;e−e^-e−是数学模型中用正态高斯分布表示的模拟电子丢失、获得或共享过程的概率分量;PTEnewkPTE_{new}^kPTEnewk表示新材料的位置。
新创建的PTEPTEPTE用于生产新材料(Matnew1Mat_{new_1}Matnew1),然后将其作为新的备选解添加到初始材料列表(MatMatMat)中:Matnew1=[PTEnew1PTEnew2⋯PTEnewk⋯PTEnewd],k=1,2,⋯,d(4)Mat_{new_1}=[PTE_{new}^1\,\, PTE_{new}^2\,\,\cdots\,\,PTE_{new}^k\cdots\,\,PTE_{new}^d],\,\,k=1,2,\cdots,d\tag{4}Matnew1=[PTEnew1PTEnew2⋯PTEnewk⋯PTEnewd],k=1,2,⋯,d(4)然后,将所有候选解决方案组合在一起,如下所示:Mat=[Mat1Mat2⋮Mati⋮MatnMatnew1]=[PTE11PTE12⋯PTE1j⋯PTE1dPTE21PTE22⋯PTE2j⋯PTE2d⋮⋮⋮⋱⋮PTEi1PTEi2⋯PTEij⋯PTEid⋮⋮⋮⋱⋮PTEn1PTEn2⋯PTEnj⋯PTEndPTEnew1PTEnew2⋯PTEnewk⋯PTEnewd],{i=1,2,⋯,nj=1,2,⋯,dk=1,2,⋯,d(5)Mat=\begin{bmatrix}Mat_1\\Mat_2\\\vdots\\Mat_i\\\vdots\\Mat_n\\Mat_{new_1}\end{bmatrix}=\begin{bmatrix} PTE_1^1 & PTE_1^2 & \cdots & PTE_1^j & \cdots & PTE_1^d \\PTE_2^1 & PTE_2^2 & \cdots & PTE_2^j & \cdots & PTE_2^d \\\vdots & \vdots & & \vdots & \ddots & \vdots \\PTE_i^1 & PTE_i^2 & \cdots & PTE_i^j & \cdots & PTE_i^d \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\PTE_n^1 & PTE_n^2 & \cdots & PTE_n^j & \cdots & PTE_n^d\\\,\,\,\,\,PTE_{new}^1 &\,\,\,\,\, PTE_{new}^2 & \cdots &\,\,\,\,\, PTE_{new}^k & \cdots &\,\,\,\,\, PTE_{new}^d \end{bmatrix},\,\,\begin{dcases}i=1,2,\cdots,n\\j=1,2,\cdots,d\\k=1,2,\cdots,d\end{dcases}\tag{5}Mat=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡Mat1Mat2⋮Mati⋮MatnMatnew1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡PTE11PTE21⋮PTEi1⋮PTEn1PTEnew1PTE12PTE22⋮PTEi2⋮PTEn2PTEnew2⋯⋯⋯⋯⋯PTE1jPTE2j⋮PTEij⋮PTEnjPTEnewk⋯⋯⋱⋯⋱⋯⋯PTE1dPTE2d⋮PTEid⋮PTEndPTEnewd⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,⎩⎪⎨⎪⎧i=1,2,⋯,nj=1,2,⋯,dk=1,2,⋯,d(5)确定e−e^-e−的概率方法是通过正态高斯分布建模的,正态高斯分布在统计学中很重要,在自然科学和社会科学中经常用于表示具有未知分布的实值随机变量。基于随机选择的初始元素(PTEr1r2PTE_{r_1}^{r_2}PTEr1r2)来计算选择新元素(PTEnewkPTE_{new}^kPTEnewk)的概率如下所示:f(PTEnewk∣μ,σ2)=12πσ2⋅e−(x−μ)22σ2,k=1,2,⋯,d(6)f\left(PTE_{new}^k|\mu,\sigma^2\right)=\frac{1}{\sqrt{2\pi\sigma^2}}\cdot e^{\frac{-(x-\mu)^2}{2\sigma^2}},\,\,k=1,2,\cdots,d\tag{6}f(PTEnewk∣μ,σ2)=2πσ21⋅e2σ2−(x−μ)2,k=1,2,⋯,d(6)其中,μ\muμ是对应于所选随机PTEPTEPTE(PTEr1r2PTE_{r_1}^{r_2}PTEr1r2)分布的均值或期望值;σ\sigmaσ是标准差;σ2\sigma^2σ2是方差;eee是自然对数的自然基或Naperian基。
(2)模拟化学反应
化学反应是一种生产过程,在这种过程中,不同的化学变化被确定,以便生产出不同的产品,其性质甚至与初始反应物不同。为了通过化学反应概念对生产新材料的过程进行数学建模,确定了一个整数随机数(lll),该数与参与化学反应的初始材料的数量有关。然后,生成lll个整数随机数(mjmjmj)以确定选定材料在初始材料中的位置,因此,新解是其他解的线性组合。对于每种材料,还计算了参与因子(PPP),因为不同的材料将参与不同过程的反应,数学表示如下:Matnew2=∑m=1l(pm⋅Matmj)∑m=1l(pmj),j=1,2,⋯,l(7)Mat_{new_2}=\frac{\sum_{m=1}^l(p_m\cdot Mat_{mj})}{\sum_{m=1}^l(p_{mj})},\,\,j=1,2,\cdots,l\tag{7}Matnew2=∑m=1l(pmj)∑m=1l(pm⋅Matmj),j=1,2,⋯,l(7)其中,MatmMat_mMatm是从初始MatMatMat中随机选择的第mmm种材料;pmp_mpm是MatmMat_mMatm参与的正态高斯分布因子;Matnew2Mat_{new_2}Matnew2是该化学反应模型生成的新材料。
(3)模拟化学稳定性
如前所述,物质稳定性原则涉及自然系统在所有结构层次上寻求局部和全局平衡的趋势。材料稳定性在数学上是通过确定解的质量来表示的。稳定性水平最高的材料与稳定性水平最低的材料相当于优化运行中所有候选解决方案的最佳和最差适应度值。
考虑到化合物和化学反应构型方法,总体备选方案组合如下:Mat=[Mat1Mat2⋮Mati⋮MatnMatnew1Matnew2],i=1,2,⋯,n(8)Mat=\begin{bmatrix}Mat_1\\Mat_2\\\vdots\\Mat_i\\\vdots\\Mat_n\\Mat_{new_1}\\Mat_{new_2}\end{bmatrix},\,\,i=1,2,\cdots,n\tag{8}Mat=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡Mat1Mat2⋮Mati⋮MatnMatnew1Matnew2⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,i=1,2,⋯,n(8)此外,应考虑初始材料和新生产材料的稳定性水平,以决定新材料是否应包括在与备选解决方案对应的总体材料列表(MatMatMat)中。然后将新的候选解的质量与初始解进行比较,由此,新材料应被初始材料替换,初始材料具有与最差稳定性水平对应的最差适应度值。
2、MGA算法流程图
MGA算法流程图如图1所示。
图1 MGA算法流程图
二、仿真实验与分析
以压缩弹簧设计、三杆桁架设计、工字梁设计优化问题为例,具体问题模型请参考这里。将MGA与GWO、PSO、GSA和SCA进行对比,实验设置种群规模为30,最大迭代次数为500,每个算法独立运行30次,结果显示如下:
F1: 压缩弹簧设计问题
MGA:最差值: 0.017327, 最优值: 0.013126, 平均值: 0.01445, 标准差: 0.0013003
GWO:最差值: 0.013717, 最优值: 0.012677, 平均值: 0.012816, 标准差: 0.0002171
PSO:最差值: 0.014476, 最优值: 0.01267, 平均值: 0.012882, 标准差: 0.00036131
GSA:最差值: 0.45367, 最优值: 0.013001, 平均值: 0.055088, 标准差: 0.10556
SCA:最差值: 0.013403, 最优值: 0.012719, 平均值: 0.013139, 标准差: 0.00016818
F2: 三杆桁架设计问题
MGA:最差值: 263.918, 最优值: 263.8959, 平均值: 263.8992, 标准差: 0.0047358
GWO:最差值: 263.8983, 最优值: 263.8959, 平均值: 263.8965, 标准差: 0.00051553
PSO:最差值: 263.8958, 最优值: 263.8958, 平均值: 263.8958, 标准差: 1.1121e-13
GSA:最差值: 282.8427, 最优值: 263.9468, 平均值: 268.9067, 标准差: 4.2598
SCA:最差值: 263.9853, 最优值: 263.8988, 平均值: 263.9322, 标准差: 0.020696
F3: 工字梁设计问题
MGA:最差值: 0.013754, 最优值: 0.013109, 平均值: 0.013334, 标准差: 0.00016105
GWO:最差值: 0.013076, 最优值: 0.013074, 平均值: 0.013075, 标准差: 5.1202e-07
PSO:最差值: 0.013375, 最优值: 0.013074, 平均值: 0.013105, 标准差: 7.2548e-05
GSA:最差值: 0.19836, 最优值: 0.018417, 平均值: 0.089136, 标准差: 0.050448
SCA:最差值: 0.013268, 最优值: 0.013081, 平均值: 0.013143, 标准差: 5.0196e-05
实验结果表明:MGA算法对工程优化问题具有很好的优化能力。
三、参考文献
[1] Talatahari S, Azizi M, Gandomi AH. Material Generation Algorithm: A Novel Metaheuristic Algorithm for Optimization of Engineering Problems[J]. Processes, 2021, 9(5): 859.
基于材料生成算法的工程优化相关推荐
- matlab基于人工蜂群算法的函数优化分析【matlab优化算法十一】
基于人工蜂群算法的函数优化分析 自然界中的群居昆虫,它们虽然个体结构简单,但是通过个体间的合作却能够表现出极其复杂的行为能力.受这些社会性昆虫群体行为的启发,研宄者通过模拟这些群体的行为提出了群集智能 ...
- 基于人工鱼群算法的路径优化,鱼群算法的原理
目录 摘要 参数优化的方法 鱼群算法的原理 基于人工鱼群算法的参数优化 基本参数 代码 效果图 结果分析 展望 摘要 详细介绍了人工鱼群算法的原理,并MATLAB编程实现基于人工鱼群算法的参数优化,对 ...
- 手淘H265编解码算法与工程优化
本文来自淘宝(中国)软件有限公司 高级算法专家 李晓波在LiveVideoStackCon 2018讲师热身分享,并由LiveVideoStack整理而成.在分享中李晓波详细解析了手淘在H.265高效 ...
- 基于双层蚂蚁算法和区域优化的机器人导航新算法 翻译+总结
改进的蚁群算法 1.初始路径的确定 2.光滑路径的优化 摘要 摘要提出了一种用于机器人自主导航的双层蚁群优化算法DL-ACO.该DL-ACO由两个独立和连续运行的蚁群算法组成.首先,我们提出了一 ...
- 手机淘宝H265编解码算法与工程优化
本文来自淘宝 高级算法专家 李晓波(篱悠)在LiveVideoStackCon 2018讲师热身分享,由LiveVideoStack整理而成.在分享中李晓波详细解析了手淘在H.265高效编解码器的实现 ...
- 哔哩哔哩超大规模视频查重算法与工程优化实践
本期作者 刘璟 哔哩哔哩高级算法工程师 齐竟雄 哔哩哔哩高级算法工程师 唐哲 哔哩哔哩高级算法工程师 李傲 哔哩哔哩资深算法工程师 一.需求背景 当前站内存在一定比例的UP主投稿重复.低编辑度的低创视 ...
- 免疫优化算法 matlab,基于人工免疫克隆选择算法的调度优化MATLAB源码
人工免疫克隆选择算法是一种比较新型的智能算法,其基本算法结构与遗传算法是类似的,以下源码是为网络节点分组调度问题而设计的算法. function [BestX,BestY,AllABfarm,LC1, ...
- 基于蚁群算法的路由选择优化算法
哈喽!大家好,我是IT技术猿猴,最爱海贼王
- c#随机数生成编号_忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法...
今天我们来拆解 Snowflake 算法,同时领略百度.美团.腾讯等大厂在全局唯一 ID 服务方面做的设计,接着根据具体需求设计一款全新的全局唯一 ID 生成算法.这还不够,我们会讨论到全局唯一 ID ...
最新文章
- 让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录一键生成SCSS/LESS结构,敏捷开发必备插件!!!
- Android SystemTrace使用攻略
- 【Groovy】字符串 ( 字符串类型变量定义 | 字符类型变量定义 )
- 脑植入芯片实现脑机交互,脑神经链会如星链般放大马斯克的光环吗
- CozyRSS开发记录19-窗口标题栏交互
- Spring之高级装配(二)
- java 什么是线程同步,java多线程同步集合是什么?并发集合是什么?
- PHP笔记——java程序员看懂PHP程序
- day2 字典常用的方法
- ncurses输出函数:字符+字符串的输出
- 你有结账时发现太贵的尴尬吗?
- Java JavaFX 批量修改文件夹里面的文件的名字
- 使用Thread包装类进行多线程操作
- 【Amaple教程】4. 组件
- C语言源代码系列-管理系统之物业费管理
- 莫烦python强化学习笔记——Q learning
- 你想知道,Microsoft Edge这种巨型项目是如何进行版本管理的吗?
- Linux下Nginx+Resin负载均衡,session问题解决实例
- 四轮 控制算法 麦轮_纯野生黑科技,分分钟教你自制最skr的全向麦熊小车!
- git merge --no-ff 和git merge --squash的区别