520 likes | 708 Views
第三章 禁忌搜索. 第三章 禁忌搜索. 一 . 前言 二 . 禁忌搜索 三 . 算法举例 四 . 短、中、长期表的使用 五 . 学习 TS 的几点体会. 一 . 前言. 问题描述. 目标函数. 约束条件. 定义域. 一 . 前言. 局域搜索 邻域的概念 函数优化问题: 邻域 ( N ( x ) ) 通常定义为在给定距离空间内,以一点 ( x ) 为中心的一个球体。 组合优化问题: 且 ,称为一个 邻域映射 ,其中 表示 X 所有子集组成的集合。
E N D
第三章 禁忌搜索 一. 前言 二. 禁忌搜索 三. 算法举例 四. 短、中、长期表的使用 五.学习TS的几点体会
一.前言 • 问题描述 目标函数 约束条件 定义域
一.前言 • 局域搜索 • 邻域的概念 • 函数优化问题: 邻域(N(x))通常定义为在给定距离空间内,以一点 (x)为中心的一个球体。 • 组合优化问题: 且 ,称为一个邻域映射,其中 表示X 所有子集组成的集合。 N(x)称为x的邻域, 称为x的一个邻居。
一.前言 • 局域搜索 • 邻域的概念 例:TSP问题解的一种表示方法为D={x=(i1,i2,…,in)| i1,i2,…,in是1,2,…,n的排列},定义它的邻域映射为 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)}
一.前言 • 局域搜索 • 邻域的概念 例: 解的邻域映射可由2-opt,推广到k-opt,即对k个元素按一定规则互换。 邻域的构造依赖于解的表示,邻域的结构在智能优化算法中起重要的作用。
练 习 定义邻域移动为:位值+1或-1 对整数编码[2 2 3 5 3],下列编码是否在其邻域内: [2 3 3 5 3][2 3 2 5 3][2 2 3 5 5] [2 2 3 4 3][2 2 2 5 3][2 2 3 4 4]
练 习 定义邻域移动为:2-opt 对顺序编码[4 2 3 5 1],下列编码是否在其邻域内: [4 3 2 5 1][4 3 5 1 2][4 3 3 5 1] [5 2 3 4 1] [1 2 3 5 4] [3 4 2 5 1]
练 习 定义邻域移动为:位值+1或-1 对整数编码[2 2 3 5 3],下列编码是否在其邻域内: [2 3 3 5 3][2 3 2 5 3][2 2 3 5 5] [2 2 3 4 3][2 2 2 5 3][2 2 3 4 4] 否 是 否 是 是 否
练 习 定义邻域移动为:2-opt 对顺序编码[4 2 3 5 1],下列编码是否在其邻域内: [4 3 2 5 1][4 3 5 1 2][4 3 3 5 1] [5 2 3 4 1] [1 2 3 5 4] [3 4 2 5 1] 否 是 否 是 是 否
一.前言 • 局域搜索 • 算法流程 Step 1 选定一个初始可行解x0,记录当前最优解xbest=x0, T=N(xbest); Step 2 当T\{xbest}=Φ或满足其他停止运算准则时,停止运算,输出计算结果;否则,转Step 3; Step 3 从T中选一个集合S,得到S中的最好解xnow;若 f (xnow)<f(xbest),则xbest= xnow,T=N(xbest);否则,T=T\S,转Step 2。 若S=T,则称为全邻域搜索
一.前言 • 局域搜索 • 示例 例:五个城市的对称TSP问题 初始解为xbest=(ABCDE),f(xbest)=45,定义邻域映射为对换两个城市位置的2-opt,选定A城市为起点。
一.前言 • 局域搜索 • 示例 全邻域搜索 第1步 N(xbest)={(ABCDE),(ACBDE),(ADCBE),(AECDB),(ABDCE),(ABEDC),(ABCED)}, 对应目标函数为f(x)={45, 43, 45, 60, 60, 59, 44} xbest=xnow=(ACBDE) A B C D E
一.前言 • 局域搜索 • 示例 全邻域搜索 第2步 N(xbest)={(ACBDE),(ABCDE),(ADBCE),(AEBDC),(ACDBE),(ACEDB),(ACBED)}, 对应目标函数为f(x)={43, 45, 44, 59, 59, 58, 43} xbest=(ACBDE)
一.前言 • 局域搜索 • 优劣性 • 通用易实现,易于理解 • 搜索效果依赖于初始点和邻域结构,极易陷入局优
一.前言 • 局域搜索 • 优劣性 • 通用易实现,易于理解 • 搜索效果依赖于初始点和邻域结构,极易陷入局优 为了获得好解,可以采用的策略有(1)扩大邻域结构,(2)变邻域结构,(3)多初始点。但这些策略依然无法保证算法具备跳出局优的能力。
一.前言 • 局域搜索 • 优劣性 • 通用易实现,易于理解 • 搜索效果依赖于初始点和邻域结构,极易陷入局优 为了获得好解,可以采用的策略有(1)扩大邻域结构,(2)变邻域结构,(3)多初始点。但这些策略依然无法保证算法具备跳出局优的能力。
二.禁忌搜索 • TS(Tabu Search)的提出 • 人类在选择过程中具有记忆功能,比如走迷宫时,当发现有可能又回到某个地点的时候总会有意识地避开先前选择的方向而选择其他的可能性,这样就可以确定性的避开迂回搜索。 • 借鉴人类的智能思考特性,采用禁忌策略尽量避免迂回搜索就构成了TS算法。 • Glover在1977年提出TS。相对于LS,TS的优点是能够通过接受劣解来逃离局优,在90年代初开始受到广泛的关注。
二.禁忌搜索 • 构成要素 • 解的表达 • 编码方法:用数学的形式来表示问题的解。 • 初始解的产生:随机产生或者采用启发式方法产生一个可行解。 • 评价函数C(x)的构造:往往直接将目标函数f(x)作为评价函数。
二.禁忌搜索 • 构成要素 • 邻域及邻域移动 • 定义邻域移动s,例如,在函数优化问题中邻域移动可以定义为给定步长和移动方向;在组合优化问题中邻域移动可以定义为某种排练序列置换。 • 邻域是由当前解x及其通过定义的邻域移动能够达到的所有解构成的集合。 注意:移动的意义是灵活的,目的是便于搜索。
二.禁忌搜索 • 构成要素 • 禁忌表 禁忌表(T表)的作用:防止搜索出现循环 • 将移动、移动分量或适值作为禁忌对象 • 表的长度称为Tabu-Size,可以用来控制局域搜索和广域搜索 • 表是动态更新的:把最新的解记入,最老的解从表中释放(解禁)
二.禁忌搜索 • 构成要素 • 选择策略 选择策略的作用:保证TS具有跳出局优的能力 当前解x每一步总是移动到邻域N(x)中未被禁忌的最优解,即若 则令 ,本次移动到邻域N(x)中未被禁忌的最优解
二.禁忌搜索 • 构成要素 • 渴望水平 渴望水平A(s,x)是一个取决于s和x的值,若有 成立,则s(x)不受T表限制。也就是说即使存在 x仍然可以移动到s(x)。 A(s,x)一般选取为历史上所能达到的最优函数值。 禁忌策略和渴望水平构成了TS的两大核心移动规则
二.禁忌搜索 • 构成要素 • 停止准则 • 设定最大迭代次数 • 得到满意解 • 设定某个对象的最大禁忌频率
二.禁忌搜索 • 算法流程 Step 1 选一个初始点 x( ),令 , ,渴望水平 ,迭代指标 k=0; Step 2 若 ,则停止;否则令k=k+1;若k>NG(其中NG为最大迭代次数),则停止; 注: 表示非正常终止,造成的原因:邻域小,T表长。正常设置为T表长度<邻域大小。Step 2的作用是设置循环体出口。
二.禁忌搜索 • 算法流程 Step 3 若 且,令 ,转Step 5; Step 4 若 ,令 ; 注:Step 3的作用破禁检查 注:Step 4的作用邻域选优
二.禁忌搜索 • 算法流程 Step 5 若 ,令 , , ; Step 6 更新T表,转Step 2 ; 注:Step 5的作用更新历史最好解及渴望水平 注:x存入T表中的第一个位置
二.禁忌搜索 • TS克服局优分析 • 从邻域搜索的方法看 移向N(x)\T中最好的解,而不与当前解比较, 是 N(x)\T中的最好点,但 可能劣于
二.禁忌搜索 • TS克服局优分析 • 从选优规则看 始终保持历史最优解,不以当前解为最优 • 从停止规则上看 不以最优判据为停止规则,而是指定最大迭代步数为停止条件,这样不能保证最优性。
三.算法举例 • 问题提出 由7层不同的绝缘材料构成的一种绝缘体,应如何排 列顺序,可获得最好的绝缘性能?
三.算法举例 • 算法设计 • 编码方式:顺序编码 • 初始解的产生:随机产生,如2-5-7-3-4-6-1 • 适值函数:极大化目标值 • 邻域移动方式:2-opt,即两两交换 • 其他参数:禁忌对象为邻域移动方式,T表长度设为3,NG设为5
三.算法举例 • 初始表 初始编码:2-5-7-3-4-6-1 结论:交换4和5
三.算法举例 • 迭代1编码:2-4-7-3-5-6-1 结论:交换1和3
三.算法举例 • 迭代2编码:2-4-7-1-5-6-3 结论:因交换1和3已在禁忌表中,故只能交换2和4 若选择这项 C(x) =16,渴望水平 不能发生作用
三.算法举例 • 迭代3编码:4-2-7-1-5-6-3 结论:因渴望水平发挥作用,交换4和5 因C(x)=20>A(s,x)=18,此时渴望水平 发生作用,破禁。交换4和5。
三.算法举例 • 迭代4编码:5-2-7-1-4-6-3 结论:交换7和1
三.算法举例 • 迭代5编码:5-2-1-7-4-6-3 结论:迭代已到5次,得到最优解
作 业 小规模TSP问题 算法设置如下: 初始解为1-2-3-4-5; 评价函数为极小化巡回路程; 邻域移动方式为2-opt; 禁忌对象为邻域移动方式; T表长度设为3,NG设为5。 要求:给出完整的TS迭代过程。
四.短、中、长期表的使用 • 短期表-T表 • T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值
四.短、中、长期表的使用 • 短期表-T表 • T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值 变化因素 解分量的变化 函数值的变化 解的变化
四.短、中、长期表的使用 • 短期表-T表 • T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值 禁忌对象 移动 函数值 解
四.短、中、长期表的使用 • 短期表-T表 • T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值 受禁范围:解的变化 邻域移动 函数值 计算时间:函数值 邻域移动 解的变化 摆脱局优:函数值 邻域移动 解的变化
四.短、中、长期表的使用 • 短期表-T表 • T表的主要指标: 禁忌对象:T表中被禁忌的那些变化元素 禁忌长度:T表的长度,禁忌对象的最大值 • 设为常数,易于实现 • 设为变化的数,在 之间变化 禁忌长度过短,一旦陷入局部最优点,出现循环无法跳出; 禁忌长度过长,造成计算时间较大,也可能造成计算无法继续下去。
四.短、中、长期表的使用 • 中期表-频数表 • 频数表的作用:频数表是用来记忆不同方向的移动次数,从而加以惩罚(比如2-Opt,记录每对交换的发生次数),从而提高搜索方向的多样性 在邻域选优公式中,令 其中,E(s(x))表示移动s(x)的出现频数,α为惩罚因子 注:惩罚因子α的取值一般应远小于目标值(1%目标值或1‰目标值),α越大分散性越好,广域搜索能力强,但会损坏邻域搜索。
四.短、中、长期表的使用 • 中期表-频数表 • 频数表的记录方法 • 建立n×n的数组,对上半部分每做一步搜索将所有>0的数减1; • 对数组上半部分,给新发生的移动所对应的数组元加上Tabu-Size; • 下半部分用来记频数,每次(i,j) (i<j)交换,对应的((j,i)+1)来记忆频数。 频数表的优点:同一数组作为T表和频数表共同使用,方便操作又节省时间。
四.短、中、长期表的使用 频数表:Tabu-Size=7
四.短、中、长期表的使用 频数表:Tabu-Size=7
四.短、中、长期表的使用 • 长期表- 多阶段TS • 长期表的作用:长期表用来记录每个阶段的初始解,在下一阶段产生初始解时,使之尽可能与已有的初始解有较大的距离
四.短、中、长期表的使用 • 长期表- 多阶段TS • 公式 其中B是已选初始解的集合,这种方法的目的是使 初始解充分分散到可行域的不同部分。
五.学习TS的几点体会 • TS的记忆功能—短、中、长期表要灵活使用 • TS局域搜索能力强,但全局搜索能力较弱; • 改善TS的全局搜索能力,提高TS的分散性的方法 • 用长期表 • 加大T表长度 • 加大对频数的惩罚 • TS仍是一种启发式,不能保证最优性 • TS的理论工作较少