模擬退火求解TSP問題

2021-08-29 12:20:59 字數 1067 閱讀 9934

1.尋找下乙個解

2.計算下乙個解的能量

3.決定是否接受這個解

4.降溫

double

randfloat()

double t0 =

1000000

,tk =

1,t = t0,d =

0.9999

;int x =

initx()

;//當前解(初始解)

int anse,nowe;

//全域性最優解的能量,當前解的能量

anse = nowe =

e(x)

;while

(t > tk)

//4.降溫

t *= d;

//5.更新全域性最優解

optimize

(anse,newe)

;}

交題鏈結

#include

#include

#include

#include

#include

#include

#define pr(x) std::cout << #x << ':' << x << std::endl

#define rep(i,a,b) for(int i = a;i <= b;++i)

#define int long long

int g[21]

[21];

int n,m;

intrun

(int x)

return ans;

}double

randfloat()

intsolve()

else preans = newans;

//4.降溫

t *= d;

}return ans;

}signed

main()

rep(i,

1,m)

std::cout <<

solve()

<< std::endl;

}

基於模擬退火的tsp問題求解

模擬退火演算法 於固體退火原理,是一種基於概率的演算法,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫公升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。這是關於模擬退火的科普 模擬退火 模擬退火實現起來主要分為三個部分 1....

TSP 模擬退火

都知道tsp是經典的np問題,從乙個點開始遍歷所有點,不重複,求最短路徑。可以用列舉終點,跑流量為2的最小費用,圖論來做,時間複雜度為 費用流已經用到堆優化了。顯然點,邊較多將無法承受。如果不要求精確解,使用模擬退火也是乙個不錯的選擇。模型簡單,轉移很暴力。先隨機生成一些解,然後隨機挑兩個點,開始試...

模擬退火 解決 TSP 問題

tsp問題求解 n個城市之間有一定距離,現在讓選擇乙個城市出發,然後到達所有的城市,最後回到原點每個城市只到達一次,求出一條路徑並且求出最短的距離 tsp問題是乙個np問題,但是可以求近似解,通過模擬退火演算法實現,源 include include include include include ...