generate(S′form S); { 从当前回路S产生新回路S′} 3 ^4 H. m. ?+ L1 [' d Z& o: H0 ]
Δt:=f(S′))-f(S);{f(S)为路径总长} * u$ `' b) e; s; |. {
IF(Δt<0) OR (EXP(-Δt/T)>Random-of-[0,1]) ?( ~6 N9 o. Q4 ]3 m
S=S′; , q0 G4 A3 J, m- A4 o& x
IF the-halt-condition-is-TRUE THEN 0 c; }) k' S8 S4 O- U\" v
termination=true; : _6 d7 ~0 ?1 l, F/ }
End; $ R$ w+ M\" l( E; @; s2 q9 C$ q- t
T_lower; 8 @* H- s R7 W. x: e, G
End; 6 Q7 o( {5 K: A2 V( v- f) g
End 3 x8 f* P- v\" @; R\" u& Q
模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、调度问题(Scheduling Problem)等等。 ! l. [& L6 t$ n) f z
3 y0 [' w( u# S4 w0 I0 @$ A4 x* K
3.5.3 模拟退火算法的参数控制问题 * T: J7 z. w! c4 R9 E* h( q
模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问题有以下三点: . B+ ~\" J; [. V+ a\" m
(1) 温度T的初始值设置问题。 % `$ N4 n* ]4 n; `
温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。 % }4 g5 U, p: ]( `, `
(2) 退火速度问题。 2 R\" k, a- n\" [
模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质和特征设置合理的退火平衡条件。 - U$ u) @& W- l+ _+ N+ x2 B' r3 P, u
(3) 温度管理问题。 ( p3 ?9 g: c* P
温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式: . R M- N1 v( T$ F