模拟退火和遗传算法有什么区别?

时间:2010-11-04 00:01:27

标签: artificial-intelligence genetic-algorithm simulated-annealing constraint-satisfaction

在模拟退火(使用bean搜索)和遗传算法之间,在性能和用例方面有哪些相关差异?

我知道SA可以被认为是人口规模只有一个的GA,但我不知道两者之间的关键区别。

此外,我正在考虑一种情况,即SA将胜过GA或GA将胜过SA。只有一个简单的例子可以帮助我理解就足够了。

3 个答案:

答案 0 :(得分:57)

答案 1 :(得分:5)

由于他们受到不同领域的启发,因此很难对这两者进行比较。

遗传算法维护一组可能的解决方案,并在每个步骤中选择可能的解决方案对,将它们组合(交叉),并应用一些随机变化(变异)。该算法基于“适者生存”的思想,其中选择过程根据适合度标准进行(通常在优化问题中,它仅仅是使用当前解决方案评估的目标函数的值)。完成交叉是希望两个好的解决方案结合起来可能会提供更好的解决方案。

另一方面,模拟退火仅跟踪可能解决方案空间中的一个解决方案,并且在每次迭代时考虑是否根据一些概率(随时间衰减)移动到相邻解决方案或保持在当前解决方案中。这与启发式搜索(比如贪婪搜索)的不同之处在于,它不会受到局部最优问题的影响,因为它可以从所有相邻解决方案都是当前最差解决方案的情况中解脱出来。

答案 2 :(得分:3)

我远不是这些算法的专家,但我会尽力帮忙。

我认为两者之间的最大区别在于GA的交叉思想,因此任何更适合GA而不是SA的学习任务的例子都取决于交叉在这种情况下的意义以及如何实施。

交叉的想法是你可以有意义地结合两种解决方案来产生更好的解决方案。我认为只有问题的解决方案以某种方式构建才有意义。我可以想象,例如,在多类分类中采用两个(或许多)分类器,这些分类器擅长对特定类进行分类,并通过投票将它们组合以制作更好的分类器。另一个例子可能是Genetic Programming,其中解决方案可以表示为树,但我发现很难找到一个很好的例子,你可以将两个程序结合起来创建一个更好的程序。

我认为很难为一个人提出一个引人注目的案例,因为他们真的是非常相似的算法,可能是从非常不同的起点开发的。