数学建模社区-数学中国
标题: 组合优化算法-现代优化算法(三):禁忌搜索算法 [打印本页]
作者: 浅夏110 时间: 2020-5-22 15:25
标题: 组合优化算法-现代优化算法(三):禁忌搜索算法
1 禁忌搜索算法的相关概念0 }+ E7 h, q- T2 h" c
禁忌搜索算法是组合优化算法的一种,是局部搜索算法的扩展。禁忌搜索算法是人 工智能在组合优化算法中的一个成功应用。禁忌搜索算法的特点是采用了禁忌技术。所 谓禁忌就是禁止重复前面的工作。禁忌搜索算法用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点。 禁忌搜索算法实现的技术问题是算法的关键。禁忌搜索算法涉及侯选集合、禁忌 对象、评价函数、特赦规则、记忆频率信息等概念。& W% l' j3 H; @ W- `% }, q F
0 c+ I! j# T" U- {6 [(1)邻域. }. ^& }0 D q6 {' f7 v
在组合优化中,距离的概念通常不再适用,但是在一点附近搜索另一个下降的点仍 然是组合优化数值求解的基本思想。因此,需要重新定义邻域的概念。6 P, d# A' u6 T3 y7 W: [
" W2 a; m6 i$ _' S* T
- Z" J9 [5 G2 F! D/ f$ N, ]8 b0 e0 Y; e5 D7 p: d, ^% c
B( Y+ s) v% t4 x) h' j
(2)侯选集合
8 O% j8 P* c, A4 k* e1 u- {侯选集合由邻域中的邻居组成。常规的方法是从邻域中选择若干个目标值或评价 值最佳的邻居入选。! G% K: M ]' K8 I1 e: ?
6 `( U, l5 r- Q3 `, \( s# B' ^# f
(3)禁忌对象和禁忌长度: Q! L) j ]6 s& h! R, g
禁忌表中的两个主要指标是禁忌对象和禁忌长度。禁忌算法中,由于我们要避免 一些操作的重复进行,就要将一些元素放到禁忌表中以禁止对这些元素进行操作,这些元素就是我们指的禁忌对象。禁忌长度是被禁对象不允许选取的迭代次数。一般是给被禁对象 x 一个数(禁忌长度) t ,要求对象 x 在 t 步迭代内被禁,在禁忌表中采用 tabu(x) = t 记忆,每迭代一步,该项指标做运算 tabu(x) = t −1,直到 tabu(x) = 0时 解禁。于是,我们可将所有元素分成两类,被禁元素和自由元素。禁忌长度t 的选取可以有多种方法,例如t = 常数,或t = [
],其中 n 为邻域中邻居的个数;这种规则容易在算法中实现。
$ r2 `4 |4 S0 @8 ]! _+ P/ F4 c. Y
$ V8 S7 f( S1 |$ _4 t4 x(4)评价函数7 M/ t7 q1 \9 t, |
评价函数是侯选集合元素选取的一个评价公式,侯选集合的元素通过评价函数值 来选取。以目标函数作为评价函数是比较容易理解的。目标值是一个非常直观的指标, 但有时为了方便或易于计算,会采用其他函数来取代目标函数。
# i( z; M* C3 {& |9 H1 v
' L+ \/ T [2 m9 L(5)特赦规则- o7 E. T6 J1 t( S( s( Q" g5 e
在禁忌搜索算法的迭代过程中,会出现侯选集中的全部对象都被禁忌,或有一对 象被禁,但若解禁则其目标值将有非常大的下降情况。在这样的情况下,为了达到全局 最优,我们会让一些禁忌对象重新可选。这种方法称为特赦,相应的规则称为特赦规则。
: ^$ l6 ~. a" f
' m U& A% n8 c" z0 m(6)记忆频率信息
7 `& G2 G; M+ a' i3 `) {" c8 J在计算的过程中,记忆一些信息对解决问题是有利的。如一个最好的目标值出现 的频率很高,这使我们有理由推测:现有参数的算法可能无法再得到更好的解。根据解 决问题的需要,我们可以记忆解集合、被禁对象组、目标值集合等的出现频率。 频率信息有助于进一步加强禁忌搜索的效率。我们可以根据频率信息动态控制禁 忌的长度。一个最佳的目标值出现的频率很高,有理由终止计算而将此值认为是最优值。" i" T4 F+ ?3 y( F+ o
6 }* [+ T4 F9 x" Z7 ?2 模型及求解
6 B7 [ g' r/ u) r% b& B我们用禁忌搜索算法研究如下的两个问题:9 D. B8 p9 g% V) I4 e- ~
; F3 _; `1 e7 f# h9 o2 S; p(1)研究 1.2 中同样的问题。
3 x) x& b/ ^* A# z( W
' G2 N% n8 s) K! {- t9 @
: d3 V/ n, j. L# ~
- s( l7 k- J3 c/ N
2 ?/ H: O; m' @' x
, p" |; g; c7 Z# c% {" P
2 U( E. e% F' H+ L; ~% K
我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。 我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地。在敌方每一目 标点的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。
' }" d' {: I$ |6 ]+ ]) _
; `/ K0 R8 G% I, \( ^
- ]0 s' s4 ?; X7 Y; V2 q/ o
, e* z# e. L$ l! w) u# _! }8 ^
(2)我方有三个基地,经度、纬度分别为(70,40),(72,45),(68,48)。假设我方 所有无人侦察机的速度都为 1000 公里/小时。三个基地各派出一架飞机侦察敌方目标, 怎样划分任务,才能使时间最短,且任务比较均衡。5 k+ h9 q$ n5 \' l$ I( P
' g8 n7 A4 n( f1 m0 Z6 ?1 l4 k# E
2.1 问题(1)的求解
' B* K; ]& @0 }求解的禁忌搜索算法描述如下: (1)解空间
/ m9 L5 F2 y+ N% ] Q/ w
4 Y$ F" |' H2 m6 ~ b
, X9 j; M7 D C4 D
3 k+ P5 u8 B7 a1 ^(2)目标函数
目标函数为侦察所有目标的路径长度。我们要求
9 {3 M) y% f" a% K! D( d! \, o
, G+ ~9 R" k/ n) r(3)候选集合4 q) V7 u5 T+ u
9 t: s5 {9 o4 }) t

% p2 c3 T. P' J9 ? S0 ^
+ D. ] o( T( y如果要考虑当前解的全部二邻域(或三邻域)的邻居,将面临着太大的工作量。 因此我们用随机选取的方法每次选取50个邻居组成的集合作为侯选集合。而将省下的 时间作更多次搜索,这样做同样可以保证较高的精确度,同时可以大大提高算法的效率。
(4)禁忌长度及禁忌对象
9 s7 H& D6 P% ?$ D! `* B
. V: e: D, R$ _) u/ I3 `. E' ]( O) X+ v
我们把禁忌表设计成一个循环队列,初始化禁忌表 H = Φ 。从候选集合C 中选出 一个向量 x ,如果 x ∉ H ,并且 H 不满,则把向量 x 添加到禁忌表中;如果 H 已满, 则最早进入禁忌表的向量出列,向量 x 进入到出列的位置。& r$ Y/ j0 U; o5 d( ]4 |2 g* Y# ?$ n
O! ?7 K7 G# u& N% C( d* @
(5)评价函数( I* Y) [) y) G
1 v, B2 b6 ?# F' x4 ?. J6 p7 }" _可以用目标函数作为评价函数,但是这样每选取一个新的路径都得去计算总时间, 计算量比较大。对于上述二邻域中的邻居作为侯选集合,每一个新路径中只有两条边发 生了变化,因此将目标函数的差值作为评价函数可以极大地提高算法的效率。评价函数 取为$ W; H. J% t. K1 m/ d6 T9 f1 V7 g; \
( ?% v, G' Q, E1 Q5 }* q
; P: n! m$ \. b# W# A
3 g$ h& x! q# V. ^禁忌搜索算法的流程禁忌搜索算法的流程如下:
3 D: J# Z0 f* s$ r2 Z( E0 l3 D4 m# I' ]

' P. s f8 Q' O# I& U5 }% y* \
, G3 W$ R) y5 H0 f
7 p+ K4 A: ]7 z6 Z1 a9 E* E+ z9 I6 _
利用 Matlab 程序求得,我们的巡航时间大约在 41 小时左右,其中的一个巡航路径 如下图所示3 _* h6 a) A4 ?" z
+ ~) d, s" Q3 Z# x( Z' N% U
% V( o* o L) O+ _& v. @
2 }& j. B/ m/ E+ n; q" ]( b' G2.2 问题(2)的求解对于这个问题,我们的基本想法是,先根据敌方基地的分布特点将敌方的基地大体 划分在三个区域之内,并使三架侦察机分别对这三个区域的敌军基地进行侦察,求取各 自的最短时间。然后对任务不均衡区域之中的点做适当调整。 我们解决问题的步骤如下:
: A$ k2 @1 d$ t& w8 F3 ~& `: |. k
- D6 T# q$ o, ?$ A

) N, n) X9 u1 t# a" j2 ]: K0 L7 R- o9 [6 }) s
————————————————* t- M2 S- U m# p* ~6 v
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. a% H4 U2 M0 j2 |
原文链接:https://blog.csdn.net/qq_29831163/article/details/89670768
- |; s; f1 p$ B* n3 }% f) j9 x" r4 a1 z
! x# M9 X' M: h& z9 P
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |