我知道进化策略 (ES)、遗传算法 (GA) 和粒子群优化 (PSO) 都是用于解决优化类型问题的算法,但是选择其中一种技术而不是另一种可能会使优化问题更好?
例如,我在一篇文章中读到遗传算法通常更适用于组合问题,但除了那句话左右,我还没有找到任何资料来解释何时可以选择其中一种技术而不是另一种.
在尝试决定使用哪种技术时,是否有一种通用的方法,或者它更像是一种猜测和检查类型的情况?如果有人可以帮助我了解这三种情况中的每一种何时可能是首选,那就太好了。
我知道进化策略 (ES)、遗传算法 (GA) 和粒子群优化 (PSO) 都是用于解决优化类型问题的算法,但是选择其中一种技术而不是另一种可能会使优化问题更好?
例如,我在一篇文章中读到遗传算法通常更适用于组合问题,但除了那句话左右,我还没有找到任何资料来解释何时可以选择其中一种技术而不是另一种.
在尝试决定使用哪种技术时,是否有一种通用的方法,或者它更像是一种猜测和检查类型的情况?如果有人可以帮助我了解这三种情况中的每一种何时可能是首选,那就太好了。
ES 和 PSO 都是被规范地描述为固有实值优化算法的算法。您可以(并且很多人已经)制定了这些算法的组合变体,但人们首先学习的变体包括将浮点数作为参数的运算符。我怀疑这是您正在寻找的答案的一部分。如果你被教导 ES 是针对实值问题的,那么你自然会倾向于认为其他东西更擅长组合问题。
一个可能准确的简短答案是“一个确实并不比另一个更好”。我们没有免费的午餐结果表明这一点在足够广泛的问题类别中是正确的,但即使在实践中,GA、ES、PSO,这些都是一些模糊的概念,它们相互融合,没有明确的界限。我可以采用 GA,对其进行修改以解决实际问题,如果我继续调整它,最终会得到一个 ES,它没有明确的定义边界,即它何时停止成为 GA 并开始成为 ES。在此过程中的任何时候,它在特定问题上的表现可能会更好,也可能不会。如果我从 ES 或 PSO 开始并制作组合版本,情况也是如此。这些版本有时在某些问题上会更好。
更深层次的答案实际上是我们只是不知道为什么会这样。没有很好的理论模型来解释为什么一种算法在特定问题上优于另一种算法。我已经有几年没有涉足这个研究领域了,所以我肯定不会知道一些发展,但总的来说,我认为这仍然是一个悬而未决的问题。你有时可以解决一个特定的问题并尝试分析一个特别成功的算法在做什么,但通常答案并不完全令人满意(例如,事实证明我的特定变异算子偏向于跳跃恰到好处的距离以逃避在这个特定问题上的局部最优,或其他)。
我也知道可能在 6 到 8 年前所做的工作,试图建立一个问题/算法性能数据集,人们可以将其提供给机器学习算法以希望获得洞察力,但我认为从未达到可以真正回答诸如“为什么这对组合问题更好”之类的一般问题。