遗传算法与共轭梯度法

计算科学 优化 分子动力学 共轭梯度
2021-12-11 09:42:58

我正在尝试优化分子框架中的一些力场参数,以便模拟结果尽可能接近实验结构。

过去,我写过一个遗传算法,我基本上是随机抽样参数空间,选择效果最好的组合,创建变异参数集,然后重复这个过程,直到我得到某个目标函数的最佳参数。我还对算法本身进行了一些优化,其中优化了变异值的分布以促进更快的收敛。

我的导师没听说过遗传算法,我也没听说过他推荐的方法:共轭梯度法和单纯形算法。

在我的情况下,目标函数是每个原子偏离其实验位置的函数(因此它是结构优化)。该系统是4-10K原子。花一些时间学习 CGM 或单纯形算法是否值得?在所有三个中,哪种情况最适合这种情况?

2个回答

共轭梯度法适用于寻找严格凸泛函的最小值。当您将非线性椭圆 PDE 重新表述为优化问题时,这很典型。如果你想了解它,我建议你先阅读线性系统的 CG 方法,其中An Introduction to the Conjugate Gradient Method Without the Agonizing Pain是一个很好的参考。不幸的是,许多书籍通过将算法从帽子中抽出来来处理它,而不关心你是否在直观的层面上理解它,因此标题。从那里开始,了解如何设计非线性共轭梯度方法并不是一个很大的飞跃。

根据我对遗传算法的了解,它们更适合于找到具有许多局部最小值的目标泛函的全局最小值,这可能是具有大量亚稳态平衡的分子系统的情况。在这种情况下,目标函数并非处处凸,这就排除了 CG 的使用。代价是随机算法的收敛速度较慢。

你是否值得学习 CG 取决于:

  • CG是否适用
  • 你的方法已经有多快了
  • CG可能会快多少(我的猜测:很多,如果你可以使用的话)
  • 你将花多少时间学习/编码 CG
  • 你多么不想在你的顾问面前显得无知
  • 你希望你的问题以后会有多大。

我的两分钱:这是一个非常简洁的工具,但我一直在使用它,所以我有偏见。

您还可以查看CMAES它本质上归结为凸函数的 CG,但代表其他类型函数(包括具有多个最小值的非凸函数)的全局和鲁棒优化器。然而,我还没有看到它应用于任何大于几百个未知数的事物。

另请注意,CG 可以与 Tikhonov 正则化结合使用,这在某种程度上使您的函数更加凸出并且更容易最小化,尽管代价是解决方案中的一些偏差,这通常是可以接受的权衡。