mod文件:
param n;
set ARCS := {i in 1..n, j in 1..n: i<>j};
param distance {ARCS} >=0;
var Route {ARCS} binary;
var Load {2..n} >=1, <= n-1;
minimize Total_distance: sum {(i,j) in ARCS} distance [i,j] * Route[i,j];
subject to Out_Of {i in 1..n}: sum {(i,j) in ARCS} Route[i,j] = 1;
subject to Route_Continuity {i in 1..n}:sum {(i,j) in ARCS} Route[i,j]= sum {(j,i) in ARCS} Route[j,i];
subject to Load_Continuity{i in 2..n, j in 2..n: i<>j}: Load[i] - Load[j] +1 - n*(1-Route[i,j]) <=0;
dat文件:
param n := 9;
param distance:
1 2 3 4 5 6 7 8 9 :=
1 . 4000 3600 3700 4600 3200 3500 4200 1400
2 3300 . 1600 2300 1500 400 2800 3300 1500
3 3800 1600 . 1000 200 1300 2500 5100 2800
4 3500 2100 700 . 900 1600 3600 4200 2400
5 3900 2100 300 1100 . 1200 3100 4900 1200
6 1700 400 1500 1700 1200 . 2500 4600 2100
7 2800 1800 3200 3900 3200 2000 . 2700 3100
8 4700 4100 4800 5300 4300 4300 2800 . 4400
9 1300 1500 1800 2300 2100 1300 2500 3400 . ;
[1] Wen-Tsao Pan. A new Fruit Fly Optimization Algorithm: Taking the financial distress model as an example[J]. Knowledge-Based Systems, 2012, 26(2): 69-74.