1、1,第三章 禁忌搜索,2,第三章 禁忌搜索,一.导言 二.禁忌搜索 三. TS举例 四. TS中短、中、长期表的使用 五.学习TS的几点体会,3,问题描述,一.导言,目标函数,约束条件,定义域,注:X为离散点的集合,TS排斥实优化,4,局域搜索 邻域的概念 函数优化问题: 邻域(N(x)通常定义为在给定距离空间内,以一点 (x)为中心的一个球体 组合优化问题:且 ,称为一个邻域映射,其中 表示X 所有子集组成的集合。 N(x)称为x的邻域, 称为x的一个邻居。,一.导言,5,局域搜索 邻域的概念例:TSP问题解的一种表示方法为D=x=(i1,i2,in)| i1,i2,in是1,2,n的排列,
2、定义它的邻域映射为2-opt,即x中的两个元素进行对换,N(x)中共包含x的Cn2=n(n-1)/2个邻居和x本身。例如:x=(1,2,3,4),则C42=6,N(x)=(1,2,3,4), (2,1,3,4), (3,2,1,4), (4,2,3,1), (1,3,2,4), (1,4,3,2), (1,2,4,3),一.导言,6,局域搜索 邻域的概念例: 解的邻域映射可由2-opt,推广到k-opt,即对k个元素按一定规则互换。,一.导言,邻域的构造依赖于解的表示,邻域的结构在智能优化算法中起重要的作用。,7,练 习,定义邻域移动为:位值加1或减1 对整数编码 2 2 3 5 3,下列编码
3、是否在其邻 域内:2 3 3 5 3 2 3 2 5 3 2 2 3 5 52 2 3 4 3 2 2 2 5 3 2 2 3 4 4,是,否,否,是,是,否,8,练 习,定义邻域移动为:2-Opt 对顺序编码 4 2 3 5 1,下列编码是否在其邻 域内:4 3 2 5 1 4 3 5 1 2 4 3 3 5 15 2 3 4 1 1 2 3 5 4 3 4 2 5 1,是,否,否,是,是,否,9,局域搜索 局域搜索算法过程 Step 1 选定一个初始可行解x0,记录当前最优解xbest:=x0, T=N(xbest); Step 2 当Txbest=时,或满足其他停止运算准则时,输出计算结
4、果,停止运算;否则,从T中选一集合S,得到S中的最好解xnow;若 f (xnow)f(xbest),则xbest := xnow ,T=N(xbest);否则T:=TS;重复Step 2。,一.导言,10,局域搜索 示例 例:五个城市的对称TSP问题,一.导言,初始解为xbest=(ABCDE),f(xbest)=45,定义邻域映射为对换两个城市位置的2-opt,选定A城市为起点。,11,局域搜索 示例 方法:全邻域搜索第1步N(xbest)=(ABCDE),(ACBDE),(ADCBE),(AECDB),(ABDCE),(ABEDC),(ABCED),对应目标函数为f(x)=45, 43,
5、 45, 60, 60, 59, 44xbest:=xnow=(ACBDE),一.导言,A B C D E,12,局域搜索 示例 方法:全邻域搜索第2步N(xbest)=(ACBDE),(ABCDE),(ADBCE),(AEBDC),(ACDBE),(ACEDB),(ACBED),对应目标函数为f(x)=43, 45, 44, 59, 59, 58, 43xbest:=xnow=(ACBDE),一.导言,13,局域搜索 优劣性 通用易实现,易于理解 搜索结果依赖于初始点和邻域结构,容易陷入局优,一.导言,14,局域搜索 优劣性 通用易实现,易于理解 搜索结果依赖于初始点和邻域结构,容易陷入局优
6、,一.导言,为了得到好的解,可以采用的策略有(1)扩大邻域结构,(2)变邻域结构,(3)多初始点。,15,TS的提出 人类在选择过程中局优记忆功能,比如走迷宫时,当发现有可能又回到某个地点的时候总会有意识地避开先前选择的方向而选择其他的可能性,这样就可以确定性的避开迂回搜索。 借鉴人类的智能思考特性,采用禁忌策略尽量避免迂回搜索就构成了TS算法。 Glover在1977年提出TS。相对于LS,TS的优点是能够通过接受劣解来逃离局优,在90年代初开始受到广泛的关注。,二.禁忌搜索,http:/spot.colorado.edu/glover/,16,构成要素 解的表达 编码方法:用数学的形式来表
7、示问题的解。 初始解的产生:随机产生或者采用启发式方法产生一个可行解。 适值函数C(x)的构造:往往直接将目标函数f(x)作为适值函数。,二.禁忌搜索,17,构成要素 邻域及邻域移动 定义邻域移动s,例如,在函数优化问题中邻域移动可以定义为给定步长和移动方向;在组合优化问题中邻域移动可以定义为某种排练序列置换。 邻域是由当前解x及其通过定义的邻域移动能够达到的所有解构成的集合。,二.禁忌搜索,注意:移动的意义是灵活的,目的是便于搜索。,18,构成要素 禁忌表 禁忌表(T表)的作用:防止搜索出现循环 将移动、移动分量或适值作为禁忌对象 表的长度称为Tabu-Size,可以用来控制局域搜索和广域搜
8、索 表是动态更新的把最新的解记入,最老的解从表中释放(解禁),二.禁忌搜索,19,构成要素 选择策略 选择策略的作用:保证TS具有跳出局优的能力 当前解x每一步总是移动到邻域N(x)中未被禁忌的最优解,即若则令 ,本次移动到邻域N(x)中未被禁忌的最优解,二.禁忌搜索,20,构成要素 渴望水平 渴望水平A(s,x)是一个取决于s和x的值,若有成立,则s(x)不受T表限制。也就是说即使存在x仍然可以移动到s(x)。 A(s,x)一般选取为历史上所能达到的最优适值。,二.禁忌搜索,禁忌策略和渴望水平共同构成了TS的两大核心移动规则,21,构成要素 停止准则 设定最大迭代次数 得到满意解 设定某个对
9、象的最大禁忌频率,二.禁忌搜索,22,算法步骤 Step 1 选一个初始点 x( ),令 , ,渴望水平 ,迭代指标 k=0; Step 2 若 ,则停止;否则令k=k+1;若kNG(其中NG为最大迭代数),则停止;,二.禁忌搜索,注: 表示非正常终止,造成的原因:邻域小,T表长。正常设置为(T表长度邻域大小)。Step 2的作用是设置循环体出口。,23,算法步骤 Step 3 若 ,若 ,令 ,转Step 5;Step 4 若 ,令 ;,二.禁忌搜索,注:Step 3的作用破禁检查,注:Step 4的作用邻域选优,24,算法步骤 Step 5 若 ,令 , ,;Step 6 更新T表,转St
10、ep 2 ;,二.禁忌搜索,注:Step 5的作用选优并记录历史最好点,更新渴望水平,注:x存入T表中的第一个位置,25,TS克服局优分析 从邻域搜索的方法看移向N(x)T中最好的解,而不于当前解比较, 是 N(x)T中的最好点,但 可能劣于,二.禁忌搜索,26,TS克服局优分析 从选优规则看 始终保持历史上的最优解,不以当前解为最优从停止规则上看 不以最优判据为停止规则,而是指定最大迭代步数为停止条件,这样不能保证最优性。,二.禁忌搜索,27,问题提出 由7层不同的绝缘材料构成的一种绝缘体,应如何排 列顺序,可获得最好的绝缘性能?,三.TS举例,28,算法设计 编码方式:顺序编码 初始解的产
11、生:随机产生,如2-5-7-3-4-6-1 适值函数:极大化目标值 邻域移动方式:2-OPT,即两两交换 其他参数:禁忌对象为邻域移动方式,T表长度设为3,NG设为5,三.TS举例,29,初始表 初始编码:2-5-7-3-4-6-1结论:交换4和5,三.TS举例,30,迭代1 编码:2-4-7-3-5-6-1结论:交换1和3,三.TS举例,31,迭代2 编码:2-4-7-1-5-6-3结论:因交换1和3已在禁忌表中,故只能交换2和4,三.TS举例,若选择这项 C(x) =16,渴望水平 不能发生作用,32,迭代3 编码:4-2-7-1-5-6-3结论:因渴望水平发挥作用,交换4和5,三.TS举
12、例,因C(x)=20A(s,x)=18,此时渴望水平 发生作用,破禁。交换4和5。,33,迭代4 编码:5-2-7-1-4-6-3结论:交换7和1,三.TS举例,34,迭代5 编码:5-2-1-7-4-6-3结论:迭代已到5次,得到最优解 5-2-7-1-4-6-3和5-2-1-7-4-6-3,三.TS举例,35,短期表-T表 T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值,四.TS中短、中、长期表的使用,36,短期表-T表 T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值,四.TS中短、中、长期表的
13、使用,37,短期表-T表 T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值,四.TS中短、中、长期表的使用,38,练 习,初始解:(ABCDE),邻域移动方式为2-OPT,T表长度为4,NG=5,分别以解、移动和函数值为禁忌对象进行求解,并分析各自的特点。,39,短期表-T表 T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值,四.TS中短、中、长期表的使用,受禁范围:解的变化 邻域移动 函数值,计算时间:函数值 邻域移动 解的变化,摆脱局优:函数值 邻域移动 解的变化,40,短期表-T表 T表的主要指标
14、: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值 设为常数,易于实现 设为变化的数,在 之间变化,四.TS中短、中、长期表的使用,禁忌长度过短,一旦陷入局部最优点,出现循环无法跳出; 禁忌长度过长,造成计算时间较大,也可能造成计算无法继续下去。,41,练 习,初始解:(ABCDE),邻域移动方式为2-OPT,以移动为禁忌对象,NG=5,T表长度分别设为2,4和6进行求解,并分析各自的特点。,42,中期表-频数表 频数表的作用:频数表是用来记忆不同方向的移动次数,从而加以惩罚(比如2-OPT,记录每对交换的发生次数)从而提高搜索方向的多样性在邻域选优公式中,令其中
15、,E(s(x)表示移动s(x)的出现频数,为惩罚因子,四.TS中短、中、长期表的使用,注:惩罚因子的取值一般应远小于目标值(1%目标值或1目标值),越大分散性越好,广域搜索能力强,但会损坏邻域搜索。,43,中期表-频数表 频数表的记录方法 建立nn的数组,对上半部分每做一步搜索将所有0的数减1; 对数组上半部分,给新发生的移动所对应的数组元加上Tabu-Size; 下半部分用来记频数,每次(i,j) (ij)交换,对应的(j,i)+1)来记忆频数,四.TS中短、中、长期表的使用,频数表的优点:同一数组作为T表和频数表共同使用,方便操作又节了时间。,44,频数表:Tabu-Size=7,四.TS
16、中短、中、长期表的使用,45,频数表:Tabu-Size=7,四.TS中短、中、长期表的使用,46,长期表- 多阶段TS 长期表的作用:长期表用来记录每个阶段的初始解,在下一阶段产生初始解时,使之尽可能与已有的初始解有较大的距离,四.TS中短、中、长期表的使用,47,长期表- 多阶段TS 函数表达式,四.TS中短、中、长期表的使用,48,TS的记忆功能短、中、长期表要灵活使用 TS相对于GA是更快的算法,局域搜索能力强,但全局搜索能力较弱; 改善TS的全局搜索能力,提高TS的分散性的方法 用长期表 加大Tabu Size 加大对频数的惩罚,即增大 TS仍是一种启发式,不能保证最优性 TS的理论工作较少,五.学习TS的几点体会,49,作 业,30城市TSP问题(d*=423.741 by D B Fogel),TSP Benchmark 问题41 94;37 84;54 67;25 62;7 64;2 99;68 58;71 44;5462;83 69;64 60;18 54;22 60;83 46;91 38;25 38;24 42;58 69;71 71;74 78;87 76;18 40;13 40;82 7;62 32;58 35;45 21;41 26;44 35;4 50,