差分进化方法通常需要多少代才能达到全局最优?

计算科学 优化 迭代法 收敛
2021-12-06 23:20:50

对于优化中的差分进化方法,通常需要多少代才能达到全局最优?

我们如何知道这些值是否永远不会收敛?

2个回答

我认为没有足够的信息来给出启发式,比如“一般来说,它需要k迭代迭代以达到全局最优”。

首先,我们不知道确定性全局优化器需要多少次迭代才能收敛到全局ε- 一般情况下的最优性。在有限的特殊情况下,我们知道某些优化算法会在一定数量的步骤内收敛(例如,用于线性规划的单纯形算法、用于混合整数线性规划的分支定界算法、多项式整数规划、用于无约束凸的牛顿方法二次程序,无约束凸二次程序的共轭梯度方法,在二次收敛区域内无约束凸非线性程序的牛顿方法)。

其次,差分进化是一种非确定性的全局优化算法。非确定性全局优化算法的收敛理论比确定性优化算法弱。虽然确定性优化算法可以确定地收敛(前提是满足所用算法的假设),但如果非确定性全局优化算法具有收敛证明,则通常证明该方法以概率 1 收敛。这里是一篇论文的一个例子,它只是为遗传算法做的。“以概率一收敛”虽然精确,而且肯定比没有结果要好,但类似于说,“如果我们让这个算法运行足够长的时间,它最终会搜索整个搜索空间,并返回正确的答案” . 如果搜索空间是无限的,则可能需要无限的时间,这……不是一个很有帮助的结果。(公平地说,确定性情况在全局优化方面并没有那么好。)粗略的文献搜索表明,差分进化的收敛理论没有得到很好的发展,如果没有,很难说方法将完全收敛。

最后,对于一般问题的确定性算法,显着的最优性差距(即为目标函数值计算的上限和下限之间的差异)完全有可能持续数十到数百次迭代而几乎没有改进,并且对于该最优性差距的减少率取决于为给定问题实例提供给优化器的容差和算法启发式。为解决一般问题和“自动调整算法”(假设,例如,CPLEX 有一个)提出了“最佳输入容差和启发式”,这将确定这些容差和启发式的最佳值,为此付出了大量努力。您可能会发现,在您使用算法的过程中,您可以更好地了解如何在使用它时为差分进化选择输入容差和启发式方法,以及哪些值最适合不同类型的问题。数值算法通常需要进行实验(例如,使用迭代线性求解器求解线性方程组仍然需要大量实验)。你可能会找到论文调整和简化启发式优化很有帮助。

这种方法对正在优化的问题做出很少或没有假设,并且可以搜索非常大的候选解决方案空间。但是,DE 不保证为某些类型的问题找到最佳解决方案。DE 用于多维实值函数,但不使用被优化问题的梯度,这意味着 DE 不要求优化问题是可微的,这是经典优化方法所要求的,例如梯度下降和准-牛顿法。因此,DE 也可以用于不连续、嘈杂和随时间变化的优化问题。

生成大小在很大程度上取决于您想要接受的误差容限(精度)以及问题的难度。此外,交叉率(CR)也是一个重要的参数,尤其是当 CR≈0 时,DE 做出非常小的探索性动作。搜索以渐进但一致的方式进行,因为当移动较小时做出改进移动的可能性更高,即使解决方案质量的变化不是很大。当 CR≈0.9 时,DE 会进行较大的探索性动作,虽然不太可能改进,但可以大大提高解决方案的质量。这些大的移动也减少了种群的多样性,这是一个必要的步骤,以便随后的移动被适当地缩放,以便对解决方案空间进行更细粒度的搜索。当 CR≈0.5 时,DE 的行为与 CR = 0.9 时的行为比 CR = 0 时的行为更相似。