作为模拟退火算法应用,讨论货郎担问题(Travelling Salesman Problem,简记为TSP):设有n个城市,用数码1,…,n代表。城市i和城市j之间的距离为d(i,j) i, j=1,…,n.TSP问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短.。 1 ^! {9 }/ q& ~\" P+ Q, g
求解TSP的模拟退火算法模型可描述如下: ! X8 S2 C$ c- M/ \& E; N R3 b
解空间 解空间S是遍访每个城市恰好一次的所有回路,是{1,……,n}的所有循环排列的集合,S中的成员记为(w1,w2 ,……,wn),并记wn+1= w1。初始解可选为(1,……,n) * j% z; u3 k( P
目标函数 此时的目标函数即为访问所有城市的路径总长度或称为代价函数: - z8 e( L- u' D1 b
. f4 k$ v7 Y3 H2 }4 b! n( }
我们要求此代价函数的最小值。 ' N- E2 b& W6 V1 y/ g
新解的产生 随机产生1和n之间的两相异数k和m,若k<m,则将 : ~! a0 W1 j* {1 L ~0 n
(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn) \" \( t# D. ]5 R
IF the-halt-condition-is-TRUE THEN ; V: s Y3 k& v9 i: e
termination=true; % M: F% ^; H G1 P4 H& X
End; . z0 ~$ F! [2 M/ Q$ E+ Q
T_lower; 2 _ V. Y6 i1 o% L
End; 8 M8 p1 \) W9 z1 ]' c/ F4 v
End f( \1 P0 O! E( i1 |! f. M2 J
模拟退火算法的应用很广泛,可以较高的效率求解最大截问题(Max Cut Problem)、0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)、调度问题(Scheduling Problem)等等。 \" y\" a2 K# @& X: M3 c
4 k) n6 b$ B# H& H2 a4 w- a
3.5.3 模拟退火算法的参数控制问题 ; ]# K# W9 f- V, v* m
模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问题有以下三点: 2 a$ V- k7 z) s1 X1 Q* z
(1) 温度T的初始值设置问题。 3 I8 }% ~2 ^1 b$ t
温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。 8 K( ^5 B' i4 w% R1 `& i5 H. W& w