1 禁忌搜索算法的相关概念* [1 v4 P0 g# a& N3 s/ z: M; B" z. h
禁忌搜索算法是组合优化算法的一种,是局部搜索算法的扩展。禁忌搜索算法是人 工智能在组合优化算法中的一个成功应用。禁忌搜索算法的特点是采用了禁忌技术。所 谓禁忌就是禁止重复前面的工作。禁忌搜索算法用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点。 禁忌搜索算法实现的技术问题是算法的关键。禁忌搜索算法涉及侯选集合、禁忌 对象、评价函数、特赦规则、记忆频率信息等概念。 . r/ p' b, q( k+ ]5 K. F* j7 @" f$ s. i' ] a# v
(1)邻域: U3 L7 y6 S; S. U# ?( }" g
在组合优化中,距离的概念通常不再适用,但是在一点附近搜索另一个下降的点仍 然是组合优化数值求解的基本思想。因此,需要重新定义邻域的概念。/ @$ t: D2 m. L- J! Z# w6 u. T
6 ]5 ~* m: D3 c w0 ? 4 g9 C& H# I, e# ~4 g8 W9 M: }! Z- _& v* H+ P1 I9 D8 w
" W7 ?7 P: C X l8 D4 c1 w(2)侯选集合 ' R# L. b' `% a" `+ W6 U( }, G+ O/ s2 X侯选集合由邻域中的邻居组成。常规的方法是从邻域中选择若干个目标值或评价 值最佳的邻居入选。 , w" [; U; d( L1 E$ C, ^" B: t% M% W+ y/ J6 f& y5 b# N. R
(3)禁忌对象和禁忌长度 9 C: A0 W1 q Q, r( o4 y' I! t禁忌表中的两个主要指标是禁忌对象和禁忌长度。禁忌算法中,由于我们要避免 一些操作的重复进行,就要将一些元素放到禁忌表中以禁止对这些元素进行操作,这些元素就是我们指的禁忌对象。禁忌长度是被禁对象不允许选取的迭代次数。一般是给被禁对象 x 一个数(禁忌长度) t ,要求对象 x 在 t 步迭代内被禁,在禁忌表中采用 tabu(x) = t 记忆,每迭代一步,该项指标做运算 tabu(x) = t −1,直到 tabu(x) = 0时 解禁。于是,我们可将所有元素分成两类,被禁元素和自由元素。禁忌长度t 的选取可以有多种方法,例如t = 常数,或t = [ ],其中 n 为邻域中邻居的个数;这种规则容易在算法中实现。 \5 B% P5 t8 `' N
3 Q! {7 d' g& I2 V/ t" i(4)评价函数 4 m; l4 m% o$ `: M5 g$ k4 G评价函数是侯选集合元素选取的一个评价公式,侯选集合的元素通过评价函数值 来选取。以目标函数作为评价函数是比较容易理解的。目标值是一个非常直观的指标, 但有时为了方便或易于计算,会采用其他函数来取代目标函数。 , Z9 w* M9 w7 a& Q 7 A L5 C9 m5 l3 s2 H* y) ](5)特赦规则, y0 L2 G; I" a% T/ _! X8 E
在禁忌搜索算法的迭代过程中,会出现侯选集中的全部对象都被禁忌,或有一对 象被禁,但若解禁则其目标值将有非常大的下降情况。在这样的情况下,为了达到全局 最优,我们会让一些禁忌对象重新可选。这种方法称为特赦,相应的规则称为特赦规则。/ z, n) r" f. `, M3 V
& K3 `4 l6 }$ c, o! m(6)记忆频率信息# w* t" G+ s& w2 C, O
在计算的过程中,记忆一些信息对解决问题是有利的。如一个最好的目标值出现 的频率很高,这使我们有理由推测:现有参数的算法可能无法再得到更好的解。根据解 决问题的需要,我们可以记忆解集合、被禁对象组、目标值集合等的出现频率。 频率信息有助于进一步加强禁忌搜索的效率。我们可以根据频率信息动态控制禁 忌的长度。一个最佳的目标值出现的频率很高,有理由终止计算而将此值认为是最优值。. v. }5 n4 n/ y