您的当前位置:首页正文

【算法】禁忌算法+TSP问题 python代码

2024-11-07 来源:个人技术集锦

一、禁忌算法的概念

禁忌搜索是属于模拟人类智能的一种优化算法,它模仿了人类的记忆功能,在求解问题的过程中,采用了禁忌技术,对已经搜索过的局部最优解进行标记,并且在迭代中尽量避免重复相同的搜索(但不是完全杜绝),从而获得更广的搜索区间,有利于寻找到全局最优解。

二、相关名词解释

1、禁忌对象(Tabu Object,TO)

指禁忌表中被禁的那些变化元素。
例如在旅行商问题(TSP)中可以将交换的城市对作为禁忌对象,也可以将总路径长度作为禁忌对象。

2、禁忌表(Tabu List,TL)

用来存放(记忆)禁忌对象的表。它是禁忌搜索得以进行的基本前提。禁忌表本身是有容量限制的,它的大小对存放禁忌对象的个数有影响,会影响算法的性能。

3、禁忌期限(Tabu Tenure,TT)

也叫禁忌长度,指的是禁忌对象不能被选取的周期。
禁忌期限过短容易出现循环,跳不出局部最优。
紧急期限过长会造成计算时间过长。

4、藐视准则(Aspiration Criteria,AC)

也称为特赦规则。当所有的对象都被禁忌之后,可以让其中性能最好的被禁忌对象解禁,或者当某个对象解禁会带来目标值的很大改进时,也可以使用特赦规则。

5、终止准则

三种方法:

三、算法基本流程

Created with Raphaël 2.3.0 开始 初始化,随机生成一个解i,设置代数k=0,禁忌表H为空,最优解s = i
Top