模擬退火算法
模擬退火算法是是爬山算法的改進算法,算法過程中是以一定的概率接受一個比當前解更差的解,故有可能跳出局部最優解從而達到全局最優解。更新解的情況如下:
1.移動後得到更優解,則總是接受該移動
2.移動後比當前解要差,則以一定概率接受該移動
模擬退火算法解決旅行商問題
旅行商問題:亦稱貨郎擔問題,從N個城市的某個城市A,唯一遍歷剩下的N-1個城市,最後回到城市A,並使得代價最小。
初始化一個可行解L(a,b,…i,j,…n),即已經存在的滿足條件的解,這個解一般不會是最優解,計算其代價cost_1;
按照一定的方法產生新的解M,並計算此時的代價cost_2,比較cost_1,cost_2:
1、cost_1>=cost_2,接受M爲新解;
2、cost_1<cost_2,以一定概率接受M爲新解;
一定的方法:常見的有三種,對於可行解L(a,b,c,…i,j,…n)分別採取以下三種策略
1、任意交換兩個節點(城市),例如新解可能爲M(a,b,c,…j,i,…n);
2、任意選擇連個節點,交換節點內的順序,例如選擇a,j,新解M(a,i…c,b,j,…n)
3、任意選擇n,m,k節點,講n,m之間的節點移動到k後,例如新解M(c,a,b,…i,j,…n)