当前位置:文档之家› 禁忌搜索算法

禁忌搜索算法


3 禁忌搜索的关键参数和操作
3.1 变化因素

禁忌表的主要指标(两项指标)
禁忌对象:禁忌表中被禁的那些变化元素
禁忌长度:禁忌的步数

状态变化(三种变化) 解的简单变化 解向量分量的变化
目标值变化
3 禁忌搜索的关键参数和操作
3.1 变化因素

解的简单变化
假设x, y D,邻域映射为 N,其中D为优化问题的定义域, 则简单解变化 x y N ( x) 是从一个解变化到另一 个解。
2 禁忌搜索
2.2 禁忌搜索示例

四城市非对称TSP问题
初始解x0=(ABCD),f(x0)=4,邻域映射为两个城市 顺序对换的2-opt,始、终点都是A城市。
2 禁忌搜索
2.2 禁忌搜索示例

四城市非对称TSP问题
第1步
解的形式 A B C D f(x0)=4 禁忌对象及长度 B A B C C D 候选解
2 禁忌搜索
2.1 算法的背景 使用传统的方法,我们必须对每一个问题都去设 计一套算法,相当不方便,缺乏广泛性,优点在 于我们可以证明算法的正确性,我们可以保证找 到的答案是最优的;而对于启发式算法,针对不 同的问题,我们可以套用同一个架构来寻找答案, 在这个过程中,我们只需要设计评价函数以及如 何找到下一个可能解的函数等,所以启发式算法 的广泛性比较高,但相对在准确度上就不一定能 够达到最优,但是在实际问题中启发式算法那有 着更广泛的应用。
此时H已达到4个解,新选入的解代替最早被禁的解
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
第5步—— xnow=(AECBD),f(xnow)=44,H={(ACBDE;43) , (ACBED;43) ,(ABCED;44) ,(AECBD;44)} Can_N(xnow)={(AEDBC;43),(ABCED;44), (AECBD;44),(AECDB;44),(AEBCD;45)}。 xnext=(AEDBC)
2 禁忌搜索
2.1 算法的背景

禁忌搜索是一种亚启发式随机搜索算法,它从一个初始可 行解出发,选择一系列的特定搜索方向(移动)作为试探,选 择实现让特定的目标函数值变化最多的移动。为了避免陷 入局部最优解,TS搜索中采用了一种灵活的“记忆”技术 ,对已经进行的优化过程进行记录和选择,指导下一步的 搜索方向。 TS是人工智能的一种体现,是局部领域搜索的 一种扩展。禁忌搜索是在领域搜索的基础上,通过设置禁 忌表来禁忌一些已经历的操作,并利用藐视准则来奖励一 些优良状态,其中涉及邻域 、禁忌表、禁忌长度、候选解 、藐视准则等影响禁忌搜索算法性能的关键因素。迄今为 止,TS算法在组合优化等计算机领域取得了很大的成功, 近年来又在函数全局优化方面得到较多的研究,并大有发 展的趋势。
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
第4步—— xnow=(ABCED),f(xnow)=44,H={(ABCDE;45), (ACBDE;43) ,(ACBED;43) ,(ABCED;44)} Can_N(xnow)={(ACBED;43),(AECBD;44), (ABCDE;45),(ABCED;44),(ABDEC;58)}。 xnext=(AECBD)
3.2 禁忌表

禁忌对象的选取
情况2:禁忌对象为分量变化
第2步—— xnow=(ACBDE),f(xnow)=43,H={(B,C)} Can_N(xnow)={(ACBED;43),(ADBCE;44), (ABCDE;45),(ACEDB;58),(AEBDC;59)}。
xnext=(ACBED)
禁忌搜索算法
(Tabu Search) 吴浩博
1 局部搜索 2 禁忌搜索
1 算法的主要思路 2 禁忌搜索示例
3 禁忌搜索的关键参数和操作
3.1 变化因素 3.2 禁忌表 3.3 其他
4 禁忌搜索的实现与应用
4.1 图结点染色
1 局部搜索
局部搜索示例

n个城市的对称旅行商问题
简单易行,但无法保证全局最优性;
这种变化最为简单,如从(ABCDE)变到(ABCED)
3 禁忌搜索的关键参数和操作
3.1 变化因素

向量分量的变化
设原有的解向量为(x1, …, xi-1, xi, xi+1, …, xn),向量 分量的最基本变化为
(x1, …, xi-1, xi, xi+1,…, xn)→(x1, …, xi-1, yi, xi+1,…, xn) 即只有第i个分量发生变化。 也包含多个分量变化的情形。
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
第3步—— xnow=(ACBED),f(xnow)=43,H={(ABCDE;45), (ACBDE;43) ,(ACBED;43)} Can_N(xnow)={(ACBED;43),(ACBDE;43), (ABCED;44),(AEBCD;45),(ADBEC;58)}。 xnext=(ABCED)
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
第1步—— xnow=(ABCDE),f(xnow)=45,H={(ABCDE;45)} Can_N(xnow)={(ACBDE;43),(ABCDE;45), (ADCBE;45),(ABEDC;59),(ABCED;44)}。
4.5 T 3.5 T
2 禁忌搜索
2 禁忌搜索示例

四城市非对称TSP问题
第5步
解的形式 A D B C f(x4)=4.5 禁忌对象及长度 B A B 0 C 1 2 C D 候选解
对换 评价值
CD BC BD
7.5 T 8 ☻ 4.5 T
TS算法 框架





(1)是否有其他形式的候选集? (2)禁忌的长度如何确定?如果在算法中记忆下搜索到 的当前最优解,极端的两种情况是:一是将所有的对换 个数作为禁忌长度,此时等价于将候选集中的所有的对 换遍历;另外则取为1,这等价于局部搜索算法。 (3)是否有评价值的其他替代形式?有时计算目标值的 工作量较大,或无法接受计算目标值所花费的时间,于 是需要其他的方法。 (4)被禁的对换能否再一次解禁?有这样的直观现象, 当搜索到一个局部最优解后,它邻域中的其他状态都被 禁,我们是否解禁一些状态以便跳出局部最优?解禁的 功能就是为了获得更大的搜索范围,以免陷入局部最优 。 (5)如何利用更多的信息?在禁忌搜索算法中,还可记 录其他一些信息。如一个被禁对象(交换)被禁的次数 ,评价值变化的大小等。 (6)终止原则,即一个算法停止的条件,怎样给出?
第1步—— xnow=(ABCDE),f(xnow)=45,H=Φ Can_N(xnow)={(ACBDE;43),(ADCBE;45), (AECDB;60),(ABEDC;59),(ABCED;44)}。
xnext=(ACBDE)
由于H为空集,从候选集中选最好的一个,它是B与C 的对换构成
3 禁忌搜索的关键参数和操作
3.2 禁忌表
t [tmin , tmax ]
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌长度的选取
禁忌长度过短,一旦陷入局部最优点,出现循环无 法跳出;
禁忌长度过长,造成计算时间较大,也可能造成计 算无法继续下去。
xnext=(ACBDE)
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
第2步—— xnow=(ACBDE),f(xnow)=43,H={(ABCDE;45), (ACBDE;43)} Can_N(xnow)={(ACBDE;43),(ACBED;43), (ADBCE;44),(ABCDE;45),(ACEDB;58)}。 xnext=(ACBED)
局部搜索主要依赖起点的选取和邻域的结构; 为了得到好的解,可以比较不同的邻域结构和不同 的初始点; 如果初始点的选择足够多,
总可以计算出全局最优解。
2 禁忌搜索
2.1 算法的背景

禁忌搜索算法(Tabu Search)是由美国 科罗拉多州大学的Fred Glover教授在 1986年左右提出来的,是一个用来跳出 局部最优的搜寻方法。在解决最优问题 上,一般区分为两种方式:一种是传统 的方法,另一种方法则是一些启发式搜 索算法。
3 禁忌搜索的关键参数和操作
3.1 隐含着解集合的变化。
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况1:禁忌对象为简单的解变化
禁忌长度为4,从2-opt邻域中选出最佳的5个解组 成候选集Can_N(xnow),初始解xnow=x0=(ABCDE), f(x0)=45,H={(ABCDE;45)}。
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况3:禁忌对象为目标值变化
第1步—— xnow=(ABCDE),f(xnow)=45,H={45} Can_N(xnow)={(ABCDE;45),(ACBDE;43), (ADCBE;45),(ABEDC;59),(ABCED;44)}。
3 禁忌搜索的关键参数和操作
3.2 禁忌表

禁忌对象的选取
情况2:禁忌对象为分量变化
第3步—— xnow=(ACBED),f(xnow)=43,H={(B,C),(D,E)} Can_N(xnow)={(ACBDE;43),(ABCED;44), (AEBCD;45),(ADBEC;58),(ACEBD;58)}。
相关主题