玻爾茲曼分布
\[p_t(x = i) = \frac}}e^}}\\
\\e(i) 表示在i狀態下的溫度
\\s表示所有的狀態
\\k表示玻爾茲曼常數
\\t為材料當前的溫度
\]思路介紹
如果從高溫開始非常緩慢的降溫,那麼粒子可以在每個溫度達到平衡metrppolis演算法當系統完全冷卻的時候,最終形成乙個低能狀態下的晶體
作用: 求組合優化問題,最小值問題等
最終當t降到0時,xi滿足如下分布
\[p_i^*=\left\
\frac}\mid},& &x_i\quad\in\quad s_\\
0, & &其他
\end
\right.
\]並且可知:
\[\sum_}p_i\quad=\quad1
\]應用舉例
解旅行商問題
**
import matplotlib.pyplot as plt
import numpy as np
import random
import math
a = np.random.rand();
point = np.random.rand(100,2)*100
# 計算每個點到每個點的距離
dist = np.zeros((100, 100), dtype=float)
for i in range(100):
for j in range(100):
dist[i][j] = math.sqrt((point[i][0]-point[j][0])**2 + (point[i][1]-point[j][1])**2)
# 多次隨機試探求得乙個相對較好的初始解
模擬退火求解TSP問題
1.尋找下乙個解 2.計算下乙個解的能量 3.決定是否接受這個解 4.降溫 double randfloat double t0 1000000 tk 1,t t0,d 0.9999 int x initx 當前解 初始解 int anse,nowe 全域性最優解的能量,當前解的能量 anse no...
模擬退火 解決 TSP 問題
tsp問題求解 n個城市之間有一定距離,現在讓選擇乙個城市出發,然後到達所有的城市,最後回到原點每個城市只到達一次,求出一條路徑並且求出最短的距離 tsp問題是乙個np問題,但是可以求近似解,通過模擬退火演算法實現,源 include include include include include ...
TSP問題的模擬退火解法
產生測試資料 import random as rd n eval input 城市數量 res for i in range 1,n for j in range i 1,n 1 f open input.txt w f.write str n str len res n for i in res...