粒子群算法(PSO)指令
在晶体和簇结构预测领域,一些算法对于小体系非常成功。粒子群算法,在这个领域 由Boldyrev 27 所倡导,是进化算法的特殊情形,大量的(集群)候选值(称为“微粒”) 根据一些简单的公式移动到搜索空间。微粒的运动由它们在搜索空间中自已最显著的位置决定,和全体 集群最显著的位置一样。首先,微粒的坐标\(\chi \)和’速度’ \(\upsilon \)随机产生。随后每一步, 位置和速度都根据以下公式更新:
这里\(\omega \),\(\varphi _{p}\)和\(\varphi _{g}\)是加权因子,控制PSO算法的行为和效率; \(r_{p}\)和\(r_{g}\)是[0; 1]范围内的随机数,分别在每一步为 每一个微粒产生;\(p_{i}\)是微粒\(i\) 最显著 的位置,\(g\)是整个集群最显著的位置。
这种算法,尽管它简单但可以工作 27 。改进之前安装运行 27; 28 的关键:(1)搜索空间的度量(单独在坐标系中绘制各个晶体结构不重要);(2)用PSO进 化结构的方法,也就是变异操作。
通过直接由原子坐标和两个结构的参数决定的速度\(\upsilon _{i}\) (??)来进化微粒是不可行的。 我们的问题是用指纹距离 16 作为能谱最原始的坐标,且USPEX用来进化PSO微粒的变量作为进化 种群结构最有效公正的方法。即,微粒要么突变(模拟自由移动),要么是以最佳位置参与遗传或最佳的种群 位置(模拟PSO朝这些方向移动)参与遗传。代替了在所有的移动的每一步都加上一些权重(see Eq. ??), 我们通过以下描述的可能性一次性加上:
其中\(D_{p}\)是一个微粒现在和最佳位置间的指纹间距,\(D_{g}\)是微粒现在位置和全部种群最佳位置的指纹间距。 我们的测试在几个不同的系统进行,表明这种方法(我们称之为“cor-PSO”,即校正PSO)是比较成功的。 而且比PSO之前的版本好,但在成功率和效率方面仍不能和USPEX算法【3,41】相比。
下面的变量对calculationMethod=PSO是唯一的:
\(\triangleright \) variable PSO_softMut
Meaning: 软模变异的权重(公式eq. ??中的\(\omega \))
Default: 1
Format:
1 : PSO_softMut
\(\triangleright \) variable PSO_BestStruc
Meaning: 用同样PSO微粒的最好位置遗传的权重(\(\varphi _{p}\) in eq. ??)。
Default: 1
Format:
1 : PSO_BestStruc
\(\triangleright \) variable PSO_BestEver
Meaning: 由全局遗传最好PSO的微粒(\(\varphi _{g}\)的权重eq. ??。
Default: 1
Format:
1 : PSO_BestEver