禁忌搜索算法Python实现
禁忌搜索算法的 Python 实现,蛮适合想深入优化算法的你玩一玩。压缩包里写的是用它来解旅行商问题,代码结构清晰,思路也比较实用。
旅行商问题的思路其实不难懂——n 个城市走一圈,回到起点,路径最短就赢了。用禁忌搜索来解这个问题,有点像“有点记性”的试错法。它会记住走过的烂路径,不让你再犯同样的错。挺适合那种局部最优容易卡住的问题。
实现里定义了城市坐标、邻接矩阵啥的,从一个随机路径开始走,每次换一换两个城市位置,看看是不是更短。如果是,嘿,就记下来;不是也没事,再试。但某些路径短是短,老是走回去也不行,所以就有了禁忌列表。最近走过的会被暂时“封禁”,你不能老是想着回头。
几个核心函数也直观,比如generate_initial_solution()
搞初始路径,neighbourhood()
生成邻居方案,fitness()
算路径长度。还有判断禁忌的is_tabu()
,每步都在打磨路径,但不瞎折腾。
代码还挺简洁的,适合拿来直接用或者改造成自己的版本。如果你对搜索算法感兴趣,尤其是 TSP 这类组合优化问题,可以先看看这个包,再参考一下其他算法做个对比,比如模拟退火或者遗传算法。
建议跑代码前,自己用几组城市坐标测一下,感受下每次迭代路径怎么变的。如果你在做算法题、比赛或者优化项目,这份资源还蛮能一些实战思路的。
3.3KB
文件大小:
评论区