禁忌搜索算法
注意:移动的意义是灵活的,目的是便于搜索。 注意:移动的意义是灵活的,目的是便于搜索。
17
二.禁忌搜索
2. 构成要素
禁忌表 禁忌表( 的作用: 禁忌表(T表)的作用:防止搜索出现循环 将移动、 ① 将移动、移动分量或适值作为禁忌对象 表的长度称为Tabu-Size, ② 表的长度称为Tabu-Size,可以用来控制局域 搜索和广域搜索 表是动态更新的——把最新的解记入, ——把最新的解记入 ③ 表是动态更新的——把最新的解记入,最老 的解从表中释放(解禁) 的解从表中释放(解禁)
第三章 禁忌搜索
1
第三章 禁忌搜索
一.导言 二.禁忌搜索 TS举例 三. TS举例 TS中短 中短、 四. TS中短、中、长期表的使用 学习TS TS的几点体会 五.学习TS的几点体会
2
一.导言
1. 问题描述
min f ( x)
目标函数
s.t. g ( x) ≥ 0
x∈ X
约束条件 定义域
注:X为离散点的集合,TS排斥实优化 为离散点的集合, 排斥实优化
12
一.导言
2. 局域搜索
优劣性 通用易实现, ① 通用易实现,易于理解 搜索结果依赖于初始点和邻域结构, ② 搜索结果依赖于初始点和邻域结构,容易陷 入局优
x0
x0
13
一.导言
2. 局域搜索
优劣性 通用易实现, ① 通用易实现,易于理解 搜索结果依赖于初始点和邻域结构, ② 搜索结果依赖于初始点和邻域结构,容易陷 入局优
2. 局域搜索
示例 方法: 方法:全邻域搜索 第 1步 N(xbest)={(ABCDE),(ACBDE),(ADCBE),(AECDB) ,(ABDCE),(ABEDC),(ABCED)}, , 对应目标函数为f(x)={45, 43, 45, 60, 60, 59, 44} 对应目标函数为 xbest:=xnow=(ACBDE)
则令 x = sk ( x) ,本次移动到邻域 本次移动到邻域N(x)中未被禁忌的最 中未被禁忌的最 优解 sk ( x)
19
二.禁忌搜索
2. 构成要素
渴望水平 渴望水平A(s,x)是一个取决于 和x的值,若有 是一个取决于s和 的值 的值, 渴望水平 是一个取决于
C ( s ( x ) ) < A ( s, x )
/~glover/
15
二.禁忌搜索
2. 构成要素
解的表达 编码方法:用数学的形式来表示问题的解。 ① 编码方法:用数学的形式来表示问题的解。 初始解的产生: ② 初始解的产生:随机产生或者采用启发式方 法产生一个可行解。 法产生一个可行解。 适值函数C(x)的构造 的构造: ③ 适值函数 ( )的构造:往往直接将目标函数 f(x)作为适值函数。 作为适值函数。 作为适值函数
6
练 习
定义邻域移动为:位值加1或减1 定义邻域移动为:位值加1或减1 对整数编码[ 对整数编码[ 2 2 3 5 3],下列编码是否在其邻 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]
18
二.禁忌搜索
2. 构成要素
选择策略 选择策略的作用:保证TS具有跳出局优的能力 选择策略的作用:保证TS具有跳出局优的能力 当前解x每一步总是移动到邻域 每一步总是移动到邻域N(x)中未被禁忌的最优 当前解 每一步总是移动到邻域 中未被禁忌的最优 解,即若
C ( sk ( x )) = Opt {C ( s ( x )), s ( x ) ∈ N ( x ) \ T }
为了得到好的解,可以采用的策略有 扩大 为了得到好的解,可以采用的策略有(1)扩大 邻域结构, 变邻域结构 变邻域结构, 多初始点 多初始点。 邻域结构,(2)变邻域结构,(3)多初始点。
14
二.禁忌搜索
1. TS的提出 TS的提出
人类在选择过程中局优记忆功能, 人类在选择过程中局优记忆功能,比如走迷宫 时,当发现有可能又回到某个地点的时候总会 有意识地避开先前选择的方向而选择其他的可 能性,这样就可以确定性的避开迂回搜索。 能性,这样就可以确定性的避开迂回搜索。 借鉴人类的智能思考特性, 借鉴人类的智能思考特性,采用禁忌策略尽量 避免迂回搜索就构成了TS算法。 TS算法 避免迂回搜索就构成了TS算法。 Glover在1977年提出 。相对于LS,TS的优点 Glover在1977年提出TS。相对于LS,TS的优点 年提出TS 是能够通过接受劣解来逃离局优, 90年代初 是能够通过接受劣解来逃离局优,在90年代初 开始受到广泛的关注。 开始受到广泛的关注。
是 是 否
8
一.导言
2. 局域搜索
局域搜索算法过程 Step 1 选定一个初始可行解x 选定一个初始可行解 0,记录当前最优解 xbest:=x0, T=N(xbest); ; Step 2 }=Φ时 或满足其他停止运算准则时, 当T\{xbest}= 时,或满足其他停止运算准则时, 输出计算结果,停止运算;否则, 输出计算结果,停止运算;否则,从T中选一 中选一 集合S,得到S中的最好解 中的最好解x 集合 ,得到 中的最好解 now;若 f (xnow)<f(xbest),则xbest := xnow ,T=N(xbest);否 , ; 则T:=T\S;重复Step 2。 ;重复Step 2。
( )
25
二.禁忌搜索
4. TS克服局优分析 TS克服局优分析
从选优规则看 始终保持历史上的最优解, 始终保持历史上的最优解,不以当前解为最优 从停止规则上看 不以最优判据为停止规则, 不以最优判据为停止规则,而是指定最大迭代 步数为停止条件,这样不能保证最优性。 步数为停止条件,这样不能保证最优性。
{
}
23
二.禁忌搜索
3. 算法步骤
Step 5 ∗ 若 C ( x ) < C x ,令 x ∗ = x , x ∗ = C ( x ) , C A ( s, x ) = C x∗ ; 注:Step 5的作用选优并记录历史最好点, 更新渴望水平 Step 6 更新T 更新T表,转Step 2 ;
( ) ( )
5
一.导言
2. 局域搜索
邻域的概念 例: 解的邻域映射可由2 opt,推广到k opt,即对k个元 解的邻域映射可由2-opt,推广到k-opt,即对 个元 素按一定规则互换。 素按一定规则互换。
邻域的构造依赖于解的表示, 邻域的构造依赖于解的表示,邻域的结构 在智能优化算法中起重要的作用。 在智能优化算法中起重要的作用。
1邻域移动 定义邻域移动s,例如, ① 定义邻域移动 ,例如,在函数优化问题中邻 域移动可以定义为给定步长和移动方向; 域移动可以定义为给定步长和移动方向;在 组合优化问题中邻域移动可以定义为某种排 练序列置换。 练序列置换。 邻域是由当前解x及其通过定义的邻域移动能 ② 邻域是由当前解 及其通过定义的邻域移动能 够达到的所有解构成的集合。 够达到的所有解构成的集合。
所有子集组成的集合。 所有子集组成的集合。 N(x)称为 的邻域, y ∈ N ( x) 称为 的一个邻居。 ( )称为x的邻域, 称为x的一个邻居。 的一个邻居
4
一.导言
2. 局域搜索
邻域的概念 TSP问题解的一种表示方法为 问题解的一种表示方法为D={x=(i1,i2,…,in)| 例:TSP问题解的一种表示方法为 的排列} i1,i2,…,in是1,2,…,n的排列},定义它的邻域映射为 的排列 2-opt,即x中的两个元素进行对换,N(x)中共包含 opt, 中的两个元素进行对换, 中共包含x 中共包含 个邻居和x本身 的Cn2=n(n-1)/2个邻居和 本身。 个邻居和 本身。 例如: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)}
成立,则s(x)不受T表限制。也就是说即使存在 不受T 成立, 不受 表限制。
s ( x) ∈ T
x仍然可以移动到 仍然可以移动到s(x)。 仍然可以移动到 A(s,x)一般选取为历史上所能达到的最优适值。 一般选取为历史上所能达到的最优适值。 一般选取为历史上所能达到的最优适值 禁忌策略和渴望水平共同构 成了TS的两大核心移动规则 成了 的两大核心移动规则
A B
C
D
E
11
一.导言
2. 局域搜索
示例 方法: 方法:全邻域搜索 第 2步 N(xbest)={(ACBDE),(ABCDE),(ADBCE),(AEBDC) ,(ACDBE),(ACEDB),(ACBED)}, 对应目标函数为f(x)={43, 45, 44, 59, 59, 58, 43} 对应目标函数为 xbest:=xnow=(ACBDE)
20
二.禁忌搜索
2. 构成要素
停止准则 ① 设定最大迭代次数 ② 得到满意解 ③ 设定某个对象的最大禁忌频率
21
二.禁忌搜索
3. 算法步骤
Step 1 ( T 选一个初始点 x( x ∈ X ),令 x∗ := x, = φ , * 渴望水平 A( s, x) = C ( x ) ,迭代指标 k=0; ; Step 2 则停止;否则令k=k+1;若 若 N ( x ) \ T = φ ,则停止;否则令 ; k>NG(其中 为最大迭代数),则停止; (其中NG为最大迭代数 则停止; 为最大迭代数) 注:N ( x ) \ T = φ 表示非正常终止,造成的原因: 表示非正常终止,造成的原因: 邻域小, 表长。正常设置为( 表长度 邻域大小) 表长度< 邻域小,T表长。正常设置为(T表长度<邻域大小)。 Step 2的作用是设置循环体出口。 的作用是设置循环体出口。 的作用是设置循环体出口