模擬退火求TSP問題的近似解

2022-05-28 14:45:09 字數 1652 閱讀 7797

玻爾茲曼分布

\[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...