智能优化算法:材料生成优化算法-附代码
智能优化算法:材料生成优化算法
文章目录
- 智能优化算法:材料生成优化算法
- 1.算法原理
- 1.1 模拟化合物
- 1.2 模拟化学反应
- 1.3 模拟化学稳定性
- 2.实验结果
- 3.参考文献
- 4.Matlab
摘要:材料生成优化算法(Material Generation Algorithm, MGA)是于2021年提出的一种新型智能优化算法,该算法通过模拟材料化学行为来达到寻优的目的,具有收敛速度快,寻优能力强的特点。
1.算法原理
首先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)M a t=\left[\begin{array}{c} M a t_{1} \\ M a t_{2} \\ \vdots \\ M a t_{i} \\ \vdots \\ M a t_{n} \end{array}\right]=\left[\begin{array}{cccccc} P T E_{1}^{1} & P T E_{1}^{2} & \cdots & P T E_{1}^{j} & \cdots & P T E_{1}^{d} \\ P T E_{2}^{1} & P T E_{2}^{2} & \cdots & P T E_{2}^{j} & \cdots & P T E_{2}^{d} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ P T E_{i}^{1} & P T E_{i}^{2} & \cdots & P T E_{i}^{j} & \cdots & P T E_{i}^{d} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ P T E_{n}^{1} & P T E_{n}^{2} & \cdots & P T E_{n}^{j} & \cdots & P T E_{n}^{d} \end{array}\right],\left\{\begin{array}{l} i=1,2, \cdots, n \\ j=1,2, \cdots, d \end{array}\right. \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是在搜索空间随机确定的:
PTEij(0)=PTEi,minj+Unif(0,1)⋅(PTEi,maxj−PTEi,minj),{i=1,2,⋯,nj=1,2,⋯,d(2)P T E_{i}^{j}(0)=P T E_{i, \min }^{j}+U n i f(0,1) \cdot\left(P T E_{i, \max }^{j}-P T E_{i, \min }^{j}\right),\left\{\begin{array}{l} i=1,2, \cdots, n \\ j=1,2, \cdots, d \end{array}\right. \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.1 模拟化合物
为了对化合物进行数学建模,假设所有PTEPTEPTE都处于基态,基态可以由磁场、光子或光的能量吸收以及与离子或其他单个电子有关的不同碰撞体或粒子的相互作用在外部激发。由于元素的稳定性不同,它们有失去、获得甚至与其他PTEPTEPTE共享电子的趋势,从而形成离子或共价化合物。为了模拟离子和共价化合物,使用初始MatMatMat(式(1))选择ddd个随机PTEPTEPTE。对于所选择的PTEPTEPTE,通过概率对电子的丢失、获得或共享过程进行建模。为了实现这一目标,对每个PTEPTEPTE使用连续概率分布来配置化合物,该化合物被视为新的PTEPTEPTE,如下所示:
PTEnewk=PTEr1r2±e−,k=1,2,⋯,d(3)P T E_{n e w}^{k}=P T E_{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)中:
Matnew 1=[PTEnew 1PTEnew 2⋯PTEnew k⋯PTEnew d],k=1,2,⋯,d(4)M a t_{\text {new } 1}=\left[\begin{array}{lll} P T E_{\text {new }}^{1} & P T E_{\text {new }}^{2} & \left.\cdots P T E_{\text {new }}^{k} \cdots P T E_{\text {new }}^{d}\right], k=1,2, \cdots, d \end{array}\right.\tag{4} Matnew 1=[PTEnew 1PTEnew 2⋯PTEnew k⋯PTEnew d],k=1,2,⋯,d(4)
然后,将所有候选解决方案组合在一起,如下所示:
Mat=[Mat1Mat2⋮Mati⋮MatnMnew]=[PTE11PTE12⋯PTE1j⋯PTE1dPTE21PTE22⋯PTE2j⋯PTE2d⋮⋮⋮⋱⋮PTEi1PTEi2⋯PTEij⋯PTEid⋮⋮⋮⋱⋮PTEn1PTEn2⋯PTEnj⋯PTEndPTEnew 1PTEnew 2⋯PTEnew k⋯PTEnew d],{i=1,2,⋯,nj=1,2,⋯,dk=1,2,⋯,d(5)M a t=\left[\begin{array}{c} M a t_{1} \\ M a t_{2} \\ \vdots \\ M a t_{i} \\ \vdots \\ M a t_{n} \\ M_{n e w} \end{array}\right]=\left[\begin{array}{cccccc} P T E_{1}^{1} & P T E_{1}^{2} & \cdots & P T E_{1}^{j} & \cdots & P T E_{1}^{d} \\ P T E_{2}^{1} & P T E_{2}^{2} & \cdots & P T E_{2}^{j} & \cdots & P T E_{2}^{d} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ P T E_{i}^{1} & P T E_{i}^{2} & \cdots & P T E_{i}^{j} & \cdots & P T E_{i}^{d} \\ \vdots & \vdots & & \vdots & \ddots & \vdots \\ P T E_{n}^{1} & P T E_{n}^{2} & \cdots & P T E_{n}^{j} & \cdots & P T E_{n}^{d} \\ P T E_{\text {new }}^{1} & P T E_{\text {new }}^{2} & \cdots & P T E_{\text {new }}^{k} & \cdots & P T E_{\text {new }}^{d} \end{array}\right],\left\{\begin{array}{c} i=1,2, \cdots, n \\ j=1,2, \cdots, d \\ k=1,2, \cdots, d \end{array}\right.\tag{5} Mat=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡Mat1Mat2⋮Mati⋮MatnMnew⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡PTE11PTE21⋮PTEi1⋮PTEn1PTEnew 1PTE12PTE22⋮PTEi2⋮PTEn2PTEnew 2⋯⋯⋯⋯⋯PTE1jPTE2j⋮PTEij⋮PTEnjPTEnew k⋯⋯⋱⋯⋱⋯⋯PTE1dPTE2d⋮PTEid⋮PTEndPTEnew d⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,⎩⎨⎧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(P T E_{n e w}^{k} \mid \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μ是对应于所选随机PTE(PTEr1r2)PTE(PTE_{r_1}^{r_2})PTE(PTEr1r2)分布的均值或期望值;σ\sigmaσ是标准差;σ2\sigma^2σ2是方差;eee是自然对数的自然基或NaperianNaperianNaperian基。
1.2 模拟化学反应
化学反应是一种生产过程,在这种过程中,不同的化学变化被确定,以便生产出不同的产品,其性质甚至与初始反应物不同。为了通过化学反应概念对生产新材料的过程进行数学建模,确定了一个整数随机数(lll),该数与参与化学反应的初始材料的数量有关。然后,生成lll个整数随机数(mjmjmj)以确定选定材料在初始材料中的位置,因此,新解是其他解的线性组合。对于每种材料,还计算了参与因子(PPP),因为不同的材料将参与不同过程的反应,数学表示如下:
Matnew2=∑m=1l(pm⋅Matmj)∑m=1l(pmj),j=1,2,⋯,l(7)M a t_{n e w 2}=\frac{\sum_{m=1}^{l}\left(p_{m} \cdot M a t_{m j}\right)}{\sum_{m=1}^{l}\left(p_{m j}\right)}, 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是该化学反应模型生成的新材料。
1.3 模拟化学稳定性
物质稳定性原则涉及自然系统在所有结构层次上寻求局部和全局平衡的趋势。材料稳定性在数学上是通过确定解的质量来表示的。稳定性水平最高的材料与稳定性水平最低的材料相当于优化运行中所有候选解决方案的最佳和最差适应度值。考虑到化合物和化学反应构型方法,总体备选方案组合如下:
Mat=[Mat1Mat2⋮Mati⋮MatnMnew1Mnew2],i=1,2,⋯,n(8)M a t=\left[\begin{array}{c} M a t_{1} \\ M a t_{2} \\ \vdots \\ M a t_{i} \\ \vdots \\ M a t_{n} \\ M_{n e w_{1}} \\ M_{n e w 2} \end{array}\right], i=1,2, \cdots, n\tag{8} Mat=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡Mat1Mat2⋮Mati⋮MatnMnew1Mnew2⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤,i=1,2,⋯,n(8)
此外,应考虑初始材料和新生产材料的稳定性水平,以决定新材料是否应包括在与备选解决方案对应的总体材料列表(MatMatMat)中。然后将新的候选解的质量与初始解进行比较,由此,新材料应被初始材料替换,初始材料具有与最差稳定性水平对应的最差适应度值。
MGA算法流程图如图所示:
2.实验结果
![请添加图片描述](https://img-blog.csdnimg.cn/855df119eb8d407c9ed907d830f7852b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pm66IO9566X5rOV56CU5a2m56S-77yISmFja-aXre-8iQ==,size_20,color_FFFFFF,t_70,g_se,x_16
3.参考文献
[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.
4.Matlab
智能优化算法:材料生成优化算法-附代码相关推荐
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于蜣螂优化的Elman神经网络数据预测-附代码
基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 【AI超级美发师】深度学习算法打造染发特效(附代码)
[新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...
- python写算法求最短路径,Python实现迪杰斯特拉算法并生成最短路径的示例代码
def Dijkstra(network,s,d):#迪杰斯特拉算法算s-d的最短路径,并返回该路径和代价 print("Start Dijstra Path--") path=[ ...
- [CS229学习笔记] 5.判别学习算法与生成学习算法,高斯判别分析,朴素贝叶斯,垃圾邮件分类,拉普拉斯平滑
本文对应的是吴恩达老师的CS229机器学习的第五课.这节课介绍了判别学习算法和生成学习算法,并给出了生成学习算法的一个实例:利用朴素贝叶斯进行垃圾邮件分类. 判别学习(Discriminative L ...
最新文章
- 全员编程时代,人类高质量程序员应具备哪三大特质?
- CentOS5.5环境下布署LVS+keepalived
- Spark技术在京东智能供应链预测的应用——按照业务进行划分,然后利用scikit learn进行单机训练并预测...
- 内存溢出原因及解决方案
- etcd安装及go简单操作
- /usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/cgi/php-cgi] Err
- 数据量大和高并发解决方法
- PHP实现单击“添加”按钮增加一行表单项,并将所有内容插入到数据库中
- STM32中GPIO_Mode--GPIO配置
- 诗与远方:无题(六十五)- 杂诗
- 腾讯广告算法大赛高分秘籍来袭!大咖直播详解TI-ONE与Angel框架
- 图文细谈远程桌面之3389
- 浅谈人工智能搜索技术论文
- 微软 smtp 服务器,配置 SMTP 服务器
- 干支纪年法简便算法_基于回弹法的混凝土实体质量过程控制研究
- iOS打包导出时出现Missing iOS Distribution signing identity问题
- xbox手柄映射_如何在Windows 10中重新映射Xbox One控制器的按钮
- 题解 P3513 【[POI2011]KON-Conspiracy】
- 《大掌门》欧阳刘彬:基于Cocos2d-x引擎开发经验分享
- java实现简单的文件下载
热门文章
- 使用Connector/C++操作MySQL
- 使用JAVA的keytool生成jks证书,通过jks证书生成pfx证书,tomcat配置https
- java acm包,Java利用ACM外置包的基本图形操作
- 40个经典单片机实验_太经典啦!单片机常用的14个C语言算法(附详细代码)
- python切片将两个list合并_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...
- python random random_【python】random与numpy.random
- mysql date_default_timezone_set,date_default_timezone_set
- Vue:echarts异步加载数据显示
- linux下copy命令c实现,C语言自己实现linux下cp文件复制命令
- Java计划任务:ScheduledThreadPoolExecutor