model:sets:
cities
/1..9
/:level
;link(cities, cities): distance, x; !距離矩陣;
endsets
data:
distance =0
200660
170127
225490
420330
2000
820300
9060
310225
151660
8200
530770
1201110
1050
960170
300530
0280
350600
550450
12790
770280
0110
370310
210225
60120
350110
0280
250120
490310
1110
600370
2800
290190
420225
1050
550310
250290
0160
330151
960450
210120
1901600;
enddatan =
@size
(cities);
!目標函式;
min=
@sum(link:distance *
x);@for
(cities(k):
!進入城市k;
@sum(cities(i) | i #ne# k: x(i,k)) =1;
!離開城市k;
@sum(cities(j) | j #ne# k: x(k,j)) =1;
);!保證不出現子圈;
@for(cities(i) | i #gt# 1
:
@for(cities(j) | j #gt# 1 #and
# i#ne#j:
level(i)-
level(j) + n*x(i,j) <= n-1);
);!限制u的範圍以加速模型的求解,保證所加限制並不排除掉tsp問題的最優解;
@for(cities(i) | i #gt# 1: level(i) <= n-2);
!定義x為
0\1變數;
@for(link:@bin
(x));
end
posted @
2017-04-08 19:14
douzujun 閱讀(
...)
編輯收藏
TSP 旅行商問題 遺傳演算法
問題描述 對於n組城市座標,尋找最短路徑使其經過所有城市並回到起點。問題資料集 tsp.eil51問題1 37 52 2 49 49 3 52 64 4 20 26 5 40 30 6 21 47 7 17 63 8 31 62 9 52 33 10 51 21 11 42 41 12 31 32 ...
TSP 旅行商問題 模擬退火演算法
include include include include include include using namespace std define t0 50000.0 初始溫度 define t end 1e 8 define q 0.98 退火係數 define l 1000 每個溫度時的迭代...
旅行商問題
旅行商問題 乙個商人從城市a出發,訪問bcde等城市各一次最後回到a,問行程如何使得路程或費用最低。這是個np 非多項式可解,但一般驗證容易 問題,假設中間有4個城市,那麼全排列為4!24種,沒有很好的演算法,基本只能窮舉了。class vertex 4 public class lianxi pu...