数学建模社区-数学中国
标题:
【转】模拟退火算法心得
[打印本页]
作者:
我要吃章鱼丸子
时间:
2016-4-11 17:37
标题:
【转】模拟退火算法心得
模拟退火算法心得
本文属于原创,make by 刘润佳,转载请注明出处。
! p* x& e* d: X3 L
" R! J& |3 m4 P1 G
文件
http://www.cnblogs.com/growing/archive/2010/12/16/1908255.html
b6 V) c) z' O1 R' |- R
由于在做一些Sat(可满足性问题)的事情,所以也尝试了多种方法来求解,其中模拟退火算法是一种不完全方法。首先看看模拟退火算法的思想:
% w, g m7 K/ ~- Q; i- S; a+ I8 ~- D
一、模拟退火算法的起源
1 h& U1 V' Q/ X; t+ S" r
1)它受益于物理退火过程
8 a/ X& {: G6 R1 `* J0 @( ^
加温过程
+ H! M4 d3 d9 ]" i1 c) t
等温过程
$ B% e7 h2 z7 r
冷却(退火)过程
$ g3 U; J/ \( ^8 }
2)等温下热平衡过程可用Monte Carlo方法模拟,计算量大。
! c; C* J8 q. q9 u- @; d% O* t- `
3)1953年,Metropolis提出重要性采样法,即以概率接受新状态,称Metropolis准则,计算量相对Monte Carlo方法显著减少。
9 {8 R) n. _; W! A( D* v- A& f
% R1 }# w4 Q+ @5 t# p5 u
4)1983年,Kirkpatrick等提出模拟退火算法,并将其应用于
组合优化问题
的求解。
# v7 x+ `# l2 R8 B4 b1 `& t
二、模拟退火的基本思想
: ~7 k; Z2 M0 o0 p5 Q. u
它可以分解为解空间、目标函数和初始解三部分。
( U4 @7 V5 S* K0 C1 H
(1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点), 每个T值的迭代次数L
(2) 对k=1,……,L做第(3)至第6步:
(3) 产生新解S′
(4) 计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数
(5) 若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解.
(6) 如果满足终止条件则输出当前解作为最优解,结束程序。终止条件通常取为连续若干个新解都没有被接受时终止算法。
(7) T逐渐减少,且T->0,然后转第2步。
" t3 W( H! S O1 Q" ]
三、模拟退火算法的流程
/ m" | ?& }, `# W' |% v+ g) s
1 ~# z& e, A# e" f4 X: a7 Z, A7 v
四、需注意因素
2 k, N0 D1 s4 X& e& f
# {9 s: u9 f4 B* V. k* @7 z3 `3 y
7 X4 ^3 `" T# L1 |- q/ q2 q
' J& d/ N |4 S& N
+ M$ L; X' ]1 p: p {+ @
9 Z: q! ~1 n9 ^+ ` R. z% [" n
9 w X. p/ P* d: ~$ m6 B5 y
% D9 D4 D" G- H* F) Z6 T6 M C
9 k/ \& {% p0 L; T$ G& e
2 R$ @2 p7 H8 X; g- b
五、本人的心得
* S' i0 U+ _ t, A" Q, t& V: W5 w/ {
在使用模拟退火算法求解Sat问题时,遇到了几个问题,觉得有必要提出来探讨一下,这也是模拟退火算法需要注意的地方:
3 S- { E" h8 Z+ e6 t% Q
1)温度的设定及其变化函数;
" k* z k3 z) \/ B% p7 j9 C
2)在每个温度值下,进行尝试的次数;
5 u. E# m' K7 O. A" n% X
3)评估函数选取问题。
; H) B `6 K4 y0 U; X6 g( }
这三个问题我觉得需要经过不断的实验得出一个最优值,目前本人的研究及实验都很有限,得出这几个结论未必正确,如果有新的建议可以提出,谢谢。同时,由于本人目前还没有找到自认为比较合理的解决方案,所以具体算法及所列三个问题将在后期发布,有兴趣者可以留意。
0 h1 c) P# ]( T' H* y
" h* M/ @/ j9 S- J
4 @ I( r- H5 {5 s: K( T
; b* v0 K" z4 P4 Y! e
7 V& b3 I4 C% b5 ?' G) j) G7 c
P$ ?0 j8 a, p9 |; u. Q
3 p3 n) H% f) A. U8 B' ~8 K5 D
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5