我正在比较两个保护区设计工具,即Marxan和ConsNet,它们都使用元启发式算法来解决最小集覆盖问题的一个版本。Marxan 使用模拟退火,ConsNet 使用禁忌搜索。虽然我的背景是生物学,但我认为我能够通过元启发式掌握一些优化的概念。
但是,关于禁忌搜索,我还没有弄清楚两件事。首先是它如何逃避局部最优。我知道它不能逆转它的动作,这会阻止它循环,但我不知道是什么让它在找到它后留下局部最优值。我可以理解模拟退火是如何做到的——它有一定的概率接受一个更糟糕的解决方案,随着时间的推移它会减少,直到它不再接受一个更糟糕的解决方案——但我不知道 TS 是如何做到的。
第二个问题是,在ConsNet手册中,找到如下语句
搜索是完全确定性的,但它可以根据解决方案存档的当前状态或目标的当前状态来决定如何进行
TS 总是确定性的吗?通过阅读一些资料,我了解到移动可能是随机的,就像在 SA 中一样。但是后来有一些论文谈论“确定性禁忌搜索”。确定性禁忌搜索如何知道采取哪些行动以及如何摆脱局部最优?它有时必须接受更糟糕的解决方案,对吧?
提前谢谢了