- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试图通过将禁忌搜索与爬山算法结合使用来理解旅行商问题。
我了解“纯”爬山算法,但我不太清楚禁忌搜索如何改变该算法。
爬山示范:
假设,我们有 6 个城市 A,B,C,D,E,F,我们随机选择一个初始状态:(A,B, C,D,E,F) 旅费为 120。
然后我将选择一组相邻状态(通过将第一个元素与第二个、第三个、第四个等交换),并计算每个状态的旅行成本:
(B,A,C,D,E,F) = 110 /* <120; mark as optimal */
(C,B,A,D,E,F) = 127
(D,B,C,A,E,F) = 145
(E,B,C,D,A,F) = 102 /* <110; mark as optimal */
(F,B,C,D,E,A) = 80 /* <102; mark as optimal */
现在我们找到了局部最优:(F,B,C,D,E,A)。
禁忌搜索如何改变上述算法? 如果您能演示一两次迭代,我将非常感激。
最佳答案
与禁忌搜索 ( TS ) 的区别在于它保留的禁忌列表。以及它如何影响搜索。生成此类禁忌列表的最简单方法是跟踪最近的搜索并将它们包含在禁忌列表中,以便算法“探索”不同的可能性。禁忌列表启发式的一个例子是:如果你从城市 D 到城市 E 的迭代次数少于“n”次,其中“n”是要存储的先前解决方案的数量,它被添加到禁忌列表中(禁忌中的元素列表已过期)。
它执行的步骤与爬山几乎相同:
它选择一个初始状态(可能是随机的)并将其设置为最佳选项。
它进入一个循环,检查是否满足用户给出的中断条件(在本例中可以是阈值或旅行成本)。
它创建一个空的候选列表。不包含禁忌元素的给定邻居中的每个候选都被添加到这个空候选列表中。
它在此列表中找到最佳候选者,如果其成本优于当前最佳者,则将其标记为解决方案。
如果禁忌列表中的禁忌数已达到最大禁忌数(您定义的数量),则禁忌到期。列表中的禁忌按照输入的顺序过期。先进先出。
此过程会不断重复,直到达到用户定义的阈值。希望这有助于理解它是如何工作的:))
关于algorithm - 使用禁忌搜索解决旅行商问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368048/
我在前几天的测验中遇到了以下问题。 Consider the code fragment (assumed to be in a program in which all variables are
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我刚开始接触 Objective-C,一般来说是 C,所以我想这也是一个 C 问题。它更像是一个为什么的问题,而不是一个如何做的问题问题。 我注意到,在除以两个整数时,小数部分向下舍入为 0,即使结果
我是一名优秀的程序员,十分优秀!