禁忌搜索算法.ppt

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


最好的新解比 是
BS好?

It’s in tabu?
• 相对于模拟退火和遗传算法,TS是又一种搜索特 点不同的算法。迄今为止,TS算法在组合优化、 生产调度、机器学习、电路设计和神经网络等领 域取得了很大的成功,近年来又在函数全局优化 方面得到较多的研究,并大有发展的趋势。
3
Tabu Search
• 特点 – Neighborhood search + memory • Neighborhood search • Memory –Record the search history –Forbid cycling search
假设记录生成相邻解的方法,Tabu list =
{②, ③, ④},下一步采用②方法生成了迄今
为止最好的解,仍然接受这个,更新Tabu
list={②, ③, ②},
11
分散搜索(Diversification)和 集中搜索(Intensification)策略
• 分散搜索:是为了对整个解的空间 进行更广泛的覆盖,而不是仅仅局 限在某个局部的区域。
9
禁忌表长度
太短:计算速度快,但容易陷入死循环 太长:计算速度慢
在搜索过程中,禁忌表长度设为固定 在搜索过程中,禁忌表长度可动态变化
禁忌表长度:5—10
10
藐视准则(Aspiration criterion)
如果找到了一个新的解比当前记录的最好 解还要好,那么即使从当前得到这个新的 解被tabu list禁止,仍然接受这个新的解, 并更新tabu list. 即tabu list对这个解没有禁 止作用
15
变量定义:
n = 搜索次数
N = 搜索N 次,程序结束
NI =连续没有找到更好解的次数
M =连续M次没有找到更好解, 执行分散搜索策略
BS = 找到的最好的解
16
Start
Tabu list 初始化(清空) 设M,N的值
求得初始解 BS=初始解
n=0;NI=0
求得一系列候选解, 并按优劣排序

最好的候选 是
解比BS好?

It’s in tabu? 否
接受新的解用新的 解替换当前解
是否为最后一是 接受新的解;用新 用新的解替换
个候选解?
的解替换当前解 BS;

找出下一个 次好的新解
更新tabulist NI=NI+1
NI=0 Intensification
n=n+1
否 NI=M?
是 Diversification NI=0 是
4
搜索陷入循环
1的邻域
2
Байду номын сангаас
1
4的邻域
4
2的邻域 3
在邻域中找到最好的解 5
加入禁忌表,避免陷入循环
禁忌表长度为3:{①, ②, ③}
规则:不得接受与禁忌表中相同的解
禁忌表的变化:
第一步搜索时{
}
第二步搜索时{①
}
第三步搜索时{①, ②, }
第四步搜索时{①, ②, ③}
6
避免循环的原理:当前解为④时,其领域中 最好的解为①,原本下一步应为①,但其与 禁忌表中的元素相同,所以选择次好的解⑤ ,从而避免死循环
禁忌搜索 Tabu Search
1
禁忌搜索概述
• 禁忌搜索(Tabu Search或Taboo Search, 简称TS)的思想最早由Glover(1986)提出, 它是对局部邻域搜索的一种扩展,是一种 全局逐步寻优算法,是对人类智力过程的 一种模拟。
2
禁忌搜索概述
• TS算法通过引入一个灵活的存储结构和相应的禁 忌准则来避免迂回搜索,并通过藐视准则来赦免 一些被禁忌的优良状态,进而保证多样化的有效 探索以最终实现全局优化。
n<N

17
End
City to city
1 2 3 4 5 6
TSP算例
1
2
3
4
5
6
12
4
7
9 10
11 20 13
8
6 17 13
6
9
15
18
Start
Tabu list 初始化(清空) 设M,N的值
求得初始解 BS=初始解
n=0;NI=0
求得一系列候选解, 并按优劣排序

最好的新解比 是
BS好?
无邻域的搜索 有邻域的搜索 有邻域的搜索 & 分散搜索策略
12
分散搜索(Diversification)和 集中搜索(Intensification)策略
• 集中搜索:如果当前搜索区域内发 现了比较好的解,如果进一步对当 前区域进行更集中的搜索,那么可 能会发现更多更好的解。
13
• 分散搜索策略(Diversification strategy)在当前 搜索区域内进行了一定次数的搜索了之后(如 25次),若不能发现更好的解,那么就执行分 散搜索策略。把tabu list清空,然后从一个新 的初始解开始搜索。

It’s in tabu?

接受新的解用新的 解替换当前解
是否为最后一 是 接受新的解;用新
个候选解?
的解替换当前解
用新的解替换 当前解;

找出下一个 次好的新解
更新tabulist NI=NI+1
NI=0 Intensification
n=n+1
否 NI=M?
是 Diversification
NI=0 是
1的邻域
2
1
5
4的邻域
4
2的邻域 3
7
禁忌表的更新
更新原则:先进先出 {①, ②, ③} {②, ③, ④} {③ , ④, ⑤} ….
8
禁忌表中元素
禁忌表中元素的可以是完整的解,可以是完 整解的一部分,也可以是采取的一个生成相 邻解的动作等等
完整解:{12345,13245,31245} 生成相邻解的操作(如交换的动作): {32, 31} 从12345开始,取3出来,插入1245 每个位置前面
n<N

19
End
Tabu list 初始化(清空)设M,N的值
• Tabu list { },长度为2。 记录从当前解生 成新的解的过程中,产生的新的相邻关系
• M=2 • N=4
20
Start
Tabu list 初始化(清空) 设M,N的值
求得初始解 BS=初始解
n=0;NI=0
求得一系列候选解, 并按优劣排序
• 集中搜索:如果最好解的记录被更新,那么就 执行集中搜索策略,即清空tabu list. 这样可以 在当前区域进行更自由的搜索。
14
要设计一个禁忌搜索算法,需要确 定以下环节
1)初始解和适配值函数(目标函数); 2)邻域结构(如何生成相邻解)和禁忌对象(禁
忌表中的元素); 3)候选解选择; 4)禁忌表及其长度; 5)藐视准则 6)集中搜索和分散搜索策略 7)终止准则。 ’
相关文档
最新文档