数学建模社区-数学中国

标题: 组合优化算法-现代优化算法(三):禁忌搜索算法 [打印本页]

作者: 浅夏110    时间: 2020-5-22 15:25
标题: 组合优化算法-现代优化算法(三):禁忌搜索算法
1 禁忌搜索算法的相关概念
( u( ?8 s; j/ q( n1 W! I禁忌搜索算法是组合优化算法的一种,是局部搜索算法的扩展。禁忌搜索算法是人 工智能在组合优化算法中的一个成功应用。禁忌搜索算法的特点是采用了禁忌技术。所 谓禁忌就是禁止重复前面的工作。禁忌搜索算法用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点。 禁忌搜索算法实现的技术问题是算法的关键。禁忌搜索算法涉及侯选集合、禁忌 对象、评价函数、特赦规则、记忆频率信息等概念。0 v2 [: ]( e3 Z7 H, V
" o0 |9 e. X4 m3 b+ }
(1)邻域
: ]9 Z# \" [# M' z; X  G* ~在组合优化中,距离的概念通常不再适用,但是在一点附近搜索另一个下降的点仍 然是组合优化数值求解的基本思想。因此,需要重新定义邻域的概念。
( r/ U5 N; U, F0 p. @6 Z1 G; T/ p2 L) C7 D& `

3 D# |( C5 e) s, T. H# Q+ j; w* |0 B1 B0 j$ x. f

/ b+ o4 x& i* [' D, V( n. b(2)侯选集合
- N$ ?9 B# w1 _- Q- s侯选集合由邻域中的邻居组成。常规的方法是从邻域中选择若干个目标值或评价 值最佳的邻居入选。/ B6 F) W3 c7 C  D' ~! t% p
9 g7 q! ^7 T- Y$ S1 G) e  A$ Q
(3)禁忌对象和禁忌长度; {: H) Z  H0 l! @& _
禁忌表中的两个主要指标是禁忌对象和禁忌长度。禁忌算法中,由于我们要避免 一些操作的重复进行,就要将一些元素放到禁忌表中以禁止对这些元素进行操作,这些元素就是我们指的禁忌对象。禁忌长度是被禁对象不允许选取的迭代次数。一般是给被禁对象 x 一个数(禁忌长度) t ,要求对象 x 在 t 步迭代内被禁,在禁忌表中采用 tabu(x) = t 记忆,每迭代一步,该项指标做运算 tabu(x) = t −1,直到 tabu(x) = 0时 解禁。于是,我们可将所有元素分成两类,被禁元素和自由元素。禁忌长度t 的选取可以有多种方法,例如t = 常数,或t = [  ],其中 n 为邻域中邻居的个数;这种规则容易在算法中实现。
7 D; A5 b+ J1 }) E+ y8 I  T; o% n& W8 E1 K3 P, y) w8 l
(4)评价函数
7 T- `: Q, g( m" c( {评价函数是侯选集合元素选取的一个评价公式,侯选集合的元素通过评价函数值 来选取。以目标函数作为评价函数是比较容易理解的。目标值是一个非常直观的指标, 但有时为了方便或易于计算,会采用其他函数来取代目标函数。
# }4 J( Y6 _5 n7 ^+ `& ]; H9 A( J+ x' E" A
(5)特赦规则
. o! W; I- c! V. i5 q在禁忌搜索算法的迭代过程中,会出现侯选集中的全部对象都被禁忌,或有一对 象被禁,但若解禁则其目标值将有非常大的下降情况。在这样的情况下,为了达到全局 最优,我们会让一些禁忌对象重新可选。这种方法称为特赦,相应的规则称为特赦规则。7 Y! F  u5 D% d9 n

* `; w% ]7 x$ }0 @. }% l9 `(6)记忆频率信息
* S( F! ~: |) l$ ~5 u在计算的过程中,记忆一些信息对解决问题是有利的。如一个最好的目标值出现 的频率很高,这使我们有理由推测:现有参数的算法可能无法再得到更好的解。根据解 决问题的需要,我们可以记忆解集合、被禁对象组、目标值集合等的出现频率。 频率信息有助于进一步加强禁忌搜索的效率。我们可以根据频率信息动态控制禁 忌的长度。一个最佳的目标值出现的频率很高,有理由终止计算而将此值认为是最优值。
: @* c5 ^6 o" l: p0 x; J, c  V8 s
2 模型及求解% F) V9 f" b3 T8 [! W
我们用禁忌搜索算法研究如下的两个问题:
* ^! u2 A+ L, n( J! c. i: D+ H7 j- [, X
(1)研究 1.2 中同样的问题。% a( b& t8 j; g7 o) J
: r7 F! A  x4 }5 W2 e' [

6 G3 d! y! {/ D# B" i" P9 @( A% D6 B  |) E8 J* M1 ?9 U+ W( v
2 I# h5 w6 t1 j+ r
" v' ^8 q1 z5 T" H4 P

9 K* W/ K/ d' S( m我方有一个基地,经度和纬度为(70,40)。假设我方飞机的速度为 1000 公里/小时。 我方派一架飞机从基地出发,侦察完敌方所有目标,再返回原来的基地。在敌方每一目 标点的侦察时间不计,求该架飞机所花费的时间(假设我方飞机巡航时间可以充分长)。) l  p6 N& }( K: X5 p  h( L
5 D! m6 [7 ?% P5 D  b+ \

4 Z  n7 [. o; D% P: [. V, F) D8 J
' g+ M) {$ I9 P% F8 j) U  ~(2)我方有三个基地,经度、纬度分别为(70,40),(72,45),(68,48)。假设我方 所有无人侦察机的速度都为 1000 公里/小时。三个基地各派出一架飞机侦察敌方目标, 怎样划分任务,才能使时间最短,且任务比较均衡。4 L; j$ l- i4 u5 f) H- j

) n; H* f. C& ^9 ~3 K) F+ ]2.1 问题(1)的求解
' G9 Q" x5 C% a: F- L6 k! m求解的禁忌搜索算法描述如下: (1)解空间% r% U8 ~9 b( y5 F- `

; v4 j# v) N" j* s; X: p+ B% Q1 [6 o

7 H- b2 f  h4 [$ a7 c8 q

(2)目标函数

目标函数为侦察所有目标的路径长度。我们要求

( E$ H( C8 u' {) Z
& N6 x& P; {% U) \  Q; F
(3)候选集合5 y- T6 \0 u) S; V& s( G

5 L+ k! y) j# F. Z0 H7 k* n0 \( @  i
5 U3 x& i' p8 z8 R

如果要考虑当前解的全部二邻域(或三邻域)的邻居,将面临着太大的工作量。 因此我们用随机选取的方法每次选取50个邻居组成的集合作为侯选集合。而将省下的 时间作更多次搜索,这样做同样可以保证较高的精确度,同时可以大大提高算法的效率。

(4)禁忌长度及禁忌对象


6 h0 ^1 X! S( Q& ]: C5 e; H: O9 Z, a% f

) _. {/ _& ]8 s. u2 i% u* W2 B/ J我们把禁忌表设计成一个循环队列,初始化禁忌表 H = Φ 。从候选集合C 中选出 一个向量 x ,如果 x ∉ H ,并且 H 不满,则把向量 x 添加到禁忌表中;如果 H 已满, 则最早进入禁忌表的向量出列,向量 x 进入到出列的位置。
6 G$ b( h" u& G$ S5 H( J  y$ G  Z% U9 K# {- _
(5)评价函数
$ j7 `8 ?# k! N' A
4 e/ W& J& T/ o* z- y- Y可以用目标函数作为评价函数,但是这样每选取一个新的路径都得去计算总时间, 计算量比较大。对于上述二邻域中的邻居作为侯选集合,每一个新路径中只有两条边发 生了变化,因此将目标函数的差值作为评价函数可以极大地提高算法的效率。评价函数 取为) z2 r; s" h, ?/ \
2 Z" K& _2 w# C$ _* V

9 e4 P) f" ?. e# n% F2 @$ ?  J! |6 f- X) f- Y
禁忌搜索算法的流程

禁忌搜索算法的流程如下:


/ s% a* ]3 e4 I6 ~+ W0 H% R3 v9 L! _+ ^& i6 f
) e# o% i. ~4 L+ q2 y7 K
  F8 x) ?# F3 \1 K! `* k7 ~

# _, X1 H8 L$ z% O利用 Matlab 程序求得,我们的巡航时间大约在 41 小时左右,其中的一个巡航路径 如下图所示$ M  G6 W3 R! q" Q  }' n

$ ~$ C" }1 T/ @
- @+ {4 r7 F5 g/ l, ?- r' l( D
, p8 t2 t) ]4 A" i2.2 问题(2)的求解

对于这个问题,我们的基本想法是,先根据敌方基地的分布特点将敌方的基地大体 划分在三个区域之内,并使三架侦察机分别对这三个区域的敌军基地进行侦察,求取各 自的最短时间。然后对任务不均衡区域之中的点做适当调整。 我们解决问题的步骤如下:

  t  y. D5 E3 _) y. `+ ~; W7 g
$ X/ L) T/ I7 q! ~5 }1 E0 U7 g& G" W

9 |& G5 S# q& o0 U2 p& _% r- l  |& ^: l; j& W. ]
————————————————! A- l6 i/ e7 {2 @/ j- T, X
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ i$ d0 {9 L* o1 Y* Q
原文链接:https://blog.csdn.net/qq_29831163/article/details/89670768
; j; B  F  y" s) n+ F, A% ?8 o5 @
, S! s0 A- V9 E
: ]5 w1 R( t; E- Y$ r7 n# o




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5