- 在线时间
- 155 小时
- 最后登录
- 2013-4-28
- 注册时间
- 2012-5-7
- 听众数
- 5
- 收听数
- 0
- 能力
- 2 分
- 体力
- 2333 点
- 威望
- 0 点
- 阅读权限
- 50
- 积分
- 913
- 相册
- 1
- 日志
- 26
- 记录
- 52
- 帖子
- 291
- 主题
- 102
- 精华
- 0
- 分享
- 6
- 好友
- 84
升级   78.25% TA的每日心情 | 开心 2013-4-28 12:11 |
|---|
签到天数: 160 天 [LV.7]常住居民III
 群组: 数学软件学习 |
全局搜索和局部搜索.- j/ ^' i1 p$ w- ]1 ^6 C8 S
目前使用较普遍的、有影响的& x7 _- X0 j! J' U! o) N
全局搜索算法主要包括主从面算法、单曲面算法、级域算法、位码算法及NBS算法;
- W7 E0 G. B4 [" t. I局部接触搜索算法主要有基于"点面算法"、基于"小球算法"、基于光滑曲面(曲线)算法三大类.$ t* o, m% W7 G, x
接触界面算法目前主要有拉格朗日乘子法和罚函数法,以及扰动拉氏法和增广拉氏法.
4 w0 ^0 l$ H" C8 D* X0 n6 `此外,接触问题的并行计算也是不可忽视的研究内容
& L7 u- w: _5 U0 M3 Q9 O' v4 Z1 B; r' Z1 D i# W( i6 I
局部搜索算法、模拟退火算法和遗传算法等是较新发展起来的算法,算法引入了随机因素,不一定能找到最优解,但一般能快速找到满意的解。" h; B9 `- O- Y+ [' z2 Q
* K5 V3 K- c: k
局部搜索算法是从爬山法改进而来的。6 l: }: o1 S+ v1 \% T9 S
+ J& d( b$ y2 E& S5 |5 d! W爬山法:在没有任何有关山顶的其他信息的情况下,沿着最陡的山坡向上爬。
4 f/ `. W b$ P. c0 Y8 ?
& V/ ~8 b% a$ d2 ~0 h局部搜索算法的基本思想:在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索。- }$ ]( E+ {& R5 A3 d1 v" n3 P
5 {' ~# ~( u8 k/ G1 f9 G. |现实问题中,f在D上往往有多个局部的极值点。一般的局部搜索算法一旦陷入局部极值点,算法就在该点处结束,这时得到的可能是一个糟糕的结果。解决的方法就是每次并不一定选择邻域内最优的点,而是依据一定的概率,从邻域内选择一个点。指标函数优的点,被选中的概率大,指标函数差的点,被选中的概率小。考虑归一化问题,使得邻域内所有点被选中的概率和为1。
" O- r/ b' V/ A2 S5 ]1 g* }( L J0 r' f
一般的局部搜索算法是否能找到全局最优解,与初始点的位置有很大的依赖关系。解决的方法就是随机生成一些初始点,从每个初始点出发进行搜索,找到各自的最优解。再从这些最优解中选择一个最好的结果作为最终的结果。起始点位置影响搜索结果示意图5 r6 R+ U: z! F+ |
m) h, x6 Q) q# {- d爬山算法) q6 T9 Q& {0 }- _* L' Z
3 B# r$ A; j% u3 n3 b1, n := s;
1 p6 c% ^, \3 |( {4 R! c4 |+ o3 v8 r8 A
2, LOOP: IF GOAL(n) THEN EXIT(SUCCESS);
) w% h; x. g& g! I2 Y1 t3 K A2 o" C6 T; M- D4 I6 A3 H
3, EXPAND(n) →{mi},计算h(mi), nextn=min{h(mi)}
/ ~2 E: l* X' m# P6 F: z+ V8 Q k* p. d- P$ U3 @
4, IF h(n)<h(nextn) THEN EXIT(Fail);
& ?6 x2 D# a+ Y# l+ T& l0 b
g1 M. ]; e. B( r, \ q# \0 Y5, n:=nextn;
0 ~; q4 R/ M$ _$ u2 R: g: n' w
' W3 l6 F @' m( }% T" E5 N7 g6, GO LOOP;4 Y0 {5 F4 b& I% D v3 D3 m
" ^- k" \6 J- B/ V7 f4 F7 V! _该算法在单峰的条件下,必能达到山顶。. P4 C( ~" z2 i- b; F
& K, `: w- ?) h. t) r+ m5 X局部搜索算法1 I/ C/ h- X( V9 z6 H U1 @( o
& C' C# C2 I6 P* t% j(1)随机选择一个初始的可能解x0 ∈D,xb=x0,P=N(xb);
9 {7 {! b. S# _8 K8 O
7 H4 W. n: e0 ^8 K5 l2 {7 n# n* Y //D是问题的定义域, xb用于记录到目标位置的最优解,P为xb的邻域。
' C9 A& t- k! f+ q! o3 ?0 @; v% Z
2 z: }$ r$ p) l( R1 a3 M(2)如果不满足结束条件,则: //结束条件为循环次数或P为空等1 _. q1 m' P# V4 R! W
& D! O; x0 p& @1 y. L* F- L' ^' T(3)Begin+ _$ J( ?# {* y& W% x5 x
& c( v8 ^% s- {(4)选择P的一个子集P‘,xn为P’的最优解
! }: p8 K& {* p8 F# g/ L$ Q0 G3 |3 P5 k( ~7 ^
// P’可根据问题特点,选择适当大小的子集。可按概率选择
; L+ K# S+ [, ^" F' \3 L
) u/ x0 M; ^& }1 b. N8 N' i5 P) |(5)如果f(xn)<f(xb),则xb=xn,P=N(xb),转(2)! S& X4 w8 P" W! e( w# ~1 e
: {6 H. Y. a2 a _8 G // 重新计算P,f(x)为指标函数
8 L' p1 O0 O& X$ a `* N1 F" o; E2 U, X3 p$ |7 t
(6)否则P=P-P‘,转(2)- N ?& m+ ~- z: y
& Y2 c( g) V6 k6 w' i; Y(7)End
7 _! p" w3 J+ S/ D
F1 \- R0 I8 h; a(8)输出计算结果/ v2 S5 C# t& m4 A5 |- a
* U1 m7 E4 r8 ?1 \" s
(9)结束* p2 E! L. o5 I2 x4 K Q$ s/ z. P( E; W
, B6 K) w6 d1 P4 h7 K @2 W: f9 u+ U; l" P' N9 X
局部搜索算法2——可变步长/ M9 G" E( D4 A+ o4 c2 e V# q
' e+ M8 J x9 j3 \+ y% S3 ~ 8 n* s- @- B- ?% c6 ]* i) ?1 r2 E: R
! o9 A3 d# }! N" c2 l& M
(1)随机选择一个初始的可能解x0属于D,xb=x0,P=N(xb);0 C6 R8 ]) R" Q, m3 ]9 u' h
7 I! H, h; D, _; a3 z
//D是问题的定义域,xb用于记录到目标位置的最优解,P为xb的邻域。
( H% F4 F" ^+ B/ R- o, K! N9 q; p% |% j
(2)如果不满足结束条件,则: //结束条件为循环次数或P为空等
6 `! m, C4 y# ~. \; Z* L7 n! s6 ?; D4 P) `
(3)Begin
' K: P; ^* ]$ ]" t2 E# Y/ r* E
7 J( W' x/ C: Z( o+ [4 q5 ^(4)选择P的一个子集P‘,xn为P’的最优解
0 X; b; C. D9 |$ q- q* J6 T
0 ^1 z! p7 C; S' Y7 p(5)如果f(xn)<f(xb),则xb=xn
) D4 J1 X2 Z) }0 B0 @, y1 V5 q/ U+ k- q! p/ a% D
(6)按某种策略改变步长,计算P=N(xb),转(2) 继续" ]$ v" w7 ]5 R
1 B8 t, V2 w. I' H; E& I. }(7)否则P=P-P‘,转(2)
- c5 n% J7 F: r; J4 j1 x0 }, N/ d. F! m" t' | X$ Z! j
(8)End9 W' \3 Q$ `5 r- _4 W
! {/ s. L Z! h
(9)输出计算结果
h$ [+ L) H: f$ ^# X+ a
d* [5 T8 x- E2 _" p(10)结束
& W- p; l) H% O1 w' L
, R" k% D4 S) T9 L
7 S6 T8 T8 k @& `" {' v @; l局部搜索算法3——多次起始点
+ r( Z& ^& R5 n8 U: G( {* t. s; I
7 i/ {4 W1 ]( v) y, { 1 {# z8 \6 m* ]' N1 H
9 ~$ B$ O% k* } \' i( ]9 g* U7 s
(1)k=0
. J7 X, E* r" \" @) b' e1 [+ x% U. k0 ?; D8 J4 j
(2)随机选择一个初始的可能解x0属于D,xb=x0,P=N(xb);5 e$ S* N- y, b. }; W6 w
0 ^! u' e4 F2 i) m5 L(3)如果不满足结束条件,则:
5 g! p* J' ?9 w
, c. D& F3 H/ ~, e9 h8 `" B(4)Begin
9 D6 d0 f3 g1 m1 M
) \9 u$ a/ M7 T! m) t L. |(5)选择P的一个子集P‘,xn为P’的最优解
* T. X. F9 S" \% X9 |! R$ ]
9 M, K! ?, E* i/ T5 `' w(6)如果f(xn)<f(xb),则xb=xn,P=N(xb),转(3)" ^& R& c1 Z4 g8 O0 S
" d4 ?: n. v! B/ Q; Q$ L, k(7)否则P=P-P‘,转(3)- ~ B) _4 i' P
8 M3 l/ `1 M( s/ i+ E
(8)End( {: B5 {1 ^* |+ z ~
! A% b4 i( Y0 Z, l) s(9)k=k+1' t/ V% P v( z- t/ w
( u# s4 F5 g" G" z
(10)如果k达到了指定的次数,则从k个结果中选择一个最好的结果,否则转(2)! ~# R& k5 b# l, J, S- T+ c
2 f0 \7 }2 N$ T/ C3 C$ a, {% Z(11)输出结果
2 u% E2 H- v' d, C
7 ?3 I% P) w* J(12)结束 |
zan
|