前言
一、算法原理
为了找到在距原子核任何距离内找到任何电子的总概率,将原子核周围的体积想象成薄的球形同心层。假设它们处于基态能量。量子数n是确定的,并与电子轨道的半径有关。n值较小的层中的电子与半径较小、能级较低的轨道有关。原子核周围的电子可以通过光子(光)的作用、与粒子或磁场的相互作用而激发,从而导致能量的吸收或发射。将电子从壳层中移除所需的能量被定义为结合能。如果一个电子吸收的能量小于它的结合能,它将在外轨道上经历一个跃迁到一个激发能级。如果一个电子吸收的能量超过它的结合能,它将被重新定位到内轨道的较低能级。
Aos算法就模拟了电子的两种状态的转移,在高低能态之间的转移过程。在该算法中,每一电子代表一个可行解x,在搜索空间中,电子的所出现层的概率服从正态分布。PDF是表示该变量在特定范围内的可能性的函数。如图1:
在整个空间中的可行解如下:
K 为第k个虚拟层,n为最大的虚拟层数;i为电子(可行解)的数目,j为可行解的维数;是第k个虚拟层中的第i个解。
类似于其他的算法存在全局最优和当前最优。Aos将整个搜索域的最优适应度叫做LE;将第k个虚拟层中的最优解叫做。类似于粒子群算法,通过全局最优和当前最优对粒子的位置进行牵引寻优。在AOS的更新公式中分别使用LE和LEk。
通过全部的可行解的均值和适应度的均值,确定整体的结合态BS和结合能BE,公式如下:
通过第K个虚拟层的可行解的均值和适应度均值,得到第k个虚拟层的的结合态和结合能
,公式如下:
二、算法更新
如原理中所说,通过光子或磁场使电子产生“运动”,从数学上表达为rand;光子速率定义为Pr,若rand>Pr,作用是可能的。此时有两种情况:释放or吸收。
情况一:释放,当>
,跃迁至低的虚拟层,更新方式如下:
情况二:吸收, 当<
,跃迁至高的虚拟层,更新方式如下:
在式子中,
和
都为rand。
若rand<Pr,此时在通过其他作用影响,而不是光子作用:
r为rand的向量。
伪代码:
三、数据
与粒子群算法、反向精英粒子群算法(ipso)进行了对比,求取了25次平均值、标准差、最优值、最差值作为评判的一个依据。对f1、f3、f5、f7、f9、f11、f13进行了测试。测试的结果如下所示。
f1 | mean |