详细内容

MS软件gulp模块中文翻译25-能量最小化

能量最小化

到目前为止,使用GULP执行的最常见任务将是能量最小化,因为这通常是大多数其他类型计算的先决条件。

根据定义,所有静止点对于所有原子都必须具有零梯度,或者在用于计算它们的方法的数值限制内尽可能接近零。同样重要的是在驻点处的二阶导数或Hessian矩阵。

驻点的性质可以用Hessian的虚本征值的数量来表征。一个真正的极小值应该具有所有的实本征值,在这种情况下,Hessian被认为是正定的。具有N个虚模的驻点可以被描述为N阶跃迁状态。最重要的是一阶跃迁态,它代表两个极小值之间的最低能量路径。重要的是要记住,能量最小值可能只是局部最小值,而不一定是全局能量最小值。一般来说,对于任何复杂的系统来说,搜索全局最小值都是非常困难的。一种可能的方法是使用遗传算法,这是GULP中提供的功能。

找到全局能量最小值的第一步是定位最接近初始结构输入的局部能量最小值。关于任何给定点的能量都可以展开为泰勒级数:

image.png 

其中

E0x)是x处一阶导数的向量

E00x)为二阶导数的矩阵。随后,泰勒展开将在二阶项处终止,忽略高阶项。这对于谐波能量表面来说是精确的,但更正常的情况下,这只是一阶近似。

对这个表达式进行微分可以得到从当前点到能量最小值的向量dx的估计值。对于谐波能量表面,位移矢量dx将在一步中导致局部能量最小。在一般情况下,上述过程可以反复使用,直到达到最小值,因为能量通常相当接近最小值附近的谐波。这个过程被称为牛顿-拉斐森方法。

然而,有两个复杂情况。首先,二阶导数矩阵在计算上比梯度和能量更昂贵。因此,重复计算二阶导数和矩阵求逆是不可取的。其次,如果Hessian不是正定的,那么Newton-Raphson过程将沿着任何虚模收敛到最大值,而不是最小值。

已经发展了大量的方法,其中基于来自当前和先前循环的梯度g和位置x矢量在最小化循环之间更新反Hessian

最早也是最著名的方法之一是,由于DavidonFletcherPowellDFPFletcher1980):

image.png 

BroydenFletcherGoldfarbShannoBFGSPress等人,1992)提出了一种后来改进的替代方法,该方法与DFP方法相同,只是增加了一个术语:

image.png 

其中向量u是根据以下方程定义的:

image.png 

 

两种方法的主要区别在于在更新过程中保证反Hessian的正定性的保留程度。GULP提供这两种方案,尽管默认情况下使用BFGS

理论上,任何正定矩阵都足以作为DFPBFGS更新方案的起点。随着最小化的进展,矩阵应该趋向于精确的逆二阶导数矩阵。默认情况下,GULP以精确的逆二阶导数矩阵为起点。如果二阶导数矩阵的行列式为零(导致反演失败),则对角元素的绝对大小将被反演,以确保得到合理的正定矩阵结果。或者,可以指定一个单位矩阵。由于不需要计算二阶导数,因此一开始速度明显更快。然而,在随后的计算中收敛非常缓慢。

随着最小化的进行,Hessian可以在固定次数的循环后重置,或者当最小化器决定近似Hessian不再合适时重置。因为最小化步骤的公式只是一个近似值,所以希望在每个循环期间执行行搜索。

这也防止了条件不良的Hessian导致最小化向过渡状态倾斜,就像在纯Newton-Raphson计算中发生的那样。

在二阶导数计算非常昂贵的情况下,可以采取两种方法。首先,如上所述,BFGS方法可以与初始单位矩阵结合使用。其次,共轭梯度方法也是可用的,该方法同样仅使用梯度并且基于更新方案。不同之处在于,后者根本不需要使用Hessian,因此在形式上需要更少的阵列空间。

在所有最小化之后,重要的是通过表征黑森人来检查是否确实达到了最小值。有一种最小化方法,称为有理函数优化(RFO)或特征向量跟随(Banerjea et al1985),在理论上,它保证在指定的参数空间内获得真正的最小值,条件是在任何虚方向上都有梯度分量。在这种方法中,在每一步对Hessian进行对角化,以获得Hessian的特征值和特征向量。如果Hessian具有错误数量的虚本征值,则有效地添加“电平偏移”以获得正确的数量。通过重复此过程,系统将向上或向下发展,直到找到正确性质的静止点。通过这种方式,可以定位过渡状态以及最小值。

当搜索鞍点时,没有必要遵循最软的特征值上坡。可以在开始时为特征向量选择一个特定的模式,程序将在选择每个步骤的模式,以最大限度地与上一步骤的模式重叠。在RFO优化过程中限制最大步长是很重要的,因为过大的步长可能导致具有不同曲率的区域。

如果RFO方法保证了正确曲率的最小值的位置,那么可能会问为什么不一直将其用作默认的最小值。主要原因是RFO在计算上比BFGS方法更昂贵,因为Hessian的特征向量是确定的,并且由于Hessian更频繁地进行精确计算。最小化的最佳方法是在梯度高时开始使用BFGS(在某些情况下甚至是共轭的),然后在梯度范数低于一定容差时切换到RFO最小化器。


最新评论
请先登录才能进行回复登录
技术支持: CLOUD | 管理登录
seo seo