什么时候使用禁忌搜索与遗传算法,什么时候不使用?

时间:2011-05-06 12:33:15

标签: performance artificial-intelligence genetic-algorithm

Tabu Search可能正在Genetic Algorithms使用。

遗传算法可能需要很多代才能获得成功,因此以高性能运行对他们来说非常重要。 Tabu搜索用于增强以避免局部最大值,并且具有良好的内存机制以通过迭代获得更好的成功。然而,禁忌搜索使算法比平常更慢,除了它的好处。

我的问题是:

是否有关于何时使用基因算法禁忌搜索的研究?何时没有?

3 个答案:

答案 0 :(得分:4)

一般来说,GAs花费大量时间采样非常不理想的点。假设你正在优化一个看起来像几个驼峰的功能。 GA最初会在整个地方转移点,并慢慢收敛到位于驼峰顶部的点。然而,即使是非常简单的局部搜索算法也可以在GA的斜率上产生GA,并且基本上立即将其直接推到驼峰的顶部。如果让每次GA产生点通过这个简单的局部优化,那么你就结束了一个GA搜索仅局部最优,这通常会大大提高你找到最佳的解决方案的机会的空间。问题在于,当你开始真正的问题而不是驼峰时,简单的局部搜索算法通常不足以找到真正好的局部最优,但是像tabu搜索这样的东西可以用在它们的位置。

有两个缺点。其一,GA的每一代都要慢得多(但通常需要更少的代数)。第二,你会失去一些多样性,这会导致你更频繁地收敛到次优解决方案。

在实践中,我会总是尽可能在GA中包含某种形式的本地搜索。没有免费的午餐告诉我们,有时候你会让事情变得更糟,但是经过十年左右的时间专业地进行GA和本地搜索研究,我几乎总是提出一个清晰的新100美元账单,说本地搜索将改善事物对于你真正关心的大多数情况。它不一定是禁忌搜索;你可以使用模拟退火,VDS,或者只是一个简单的下一个登山攀岩者。

答案 1 :(得分:2)

当您将多个启发式方法组合在一起时,您可以使用所谓的混合启发式方法。

在过去十年左右的时间里,探索混合启发式在优化“群体”中的优势和劣势是一种趋势。

关于这个主题有几百篇的论文,其中很多都很好。我已经看过在每一代GA中为每个后代采用局部搜索(爬山,而不是禁忌)的文件,以将每个后代引导到局部最优。作者报告了良好的结果。我还看到过使用GA来优化模拟退火算法的冷却时间表的论文,用于特定问题实例和一般情况,并且具有良好的结果。我还阅读了一篇论文,它为模拟退火算法添加了一个禁忌列表,这样它就可以防止重新访问过去n次迭代中看到的解决方案,除非满足一些愿望功能。

如果您正在进行时间表(正如您的其他评论所示),我建议您阅读一些来自PATAT的文章(自动时间表中的实践和理论),特别是来自EKBurke和P.Brucker的非常活跃和良好的文章。在该领域已知。很多PATAT程序都是免费提供的。

尝试像这样的学术搜索:

http://scholar.google.com/scholar?q=%22hybrid+heuristics%22+%22combinatorial+optimization%22+OR+timetabling+OR+scheduling&btnG=&hl=en&as_sdt=0%2C5&as_ylo=2006

很难用数学方法证明这些启发式的收敛性。我已经看到了模拟退火的马尔可夫链表示,它显示了收敛的上下界,并且存在类似的GA。通常,您可以在单个问题上使用许多不同的启发式方法,只有实验结果才会显示哪个更好。您可能需要进行计算实验,以确定您的GA是否可以通过TS或更通用的本地搜索进行改进,但总的来说,混合启发式算法似乎已成为现实。

答案 2 :(得分:0)

我还没有将禁忌搜索遗传算法结合起来,但我有combined it with simulated annealing。它不是真正的禁忌搜索,它更多使用tabu增强其他算法

根据我的经验,检查某些内容是否为禁忌并不会产生高性价比