2016-10-08 7 views
2

私はソルバーグロビの問題を解決していますが、次のエラーが表示されます:Gurobi 5.1.0:無制限。 variable.unbddが返されました。AMPL EROR - 無制限の変数

マイコード:

は、私は問題を見ることができない

set nusos:= 1 2 3 4 5 6 7 8 9; 
set centr:= 1 2 3 4; 
set links:= 
(1,5) 
(3,8) 
(5,6) 
(5,8) 
(5,9) 
(6,7) 
(7,2) 
(7,9) 
(8,5) 
(8,6) 
(9,4) 
(9,7); 

set origens:= 1 3; 
set destins:= 2 4; 

set odpair:= 
(1,2) 
(3,4); 

param g:= 
1 2 400 
3 4 400; 


param t0:= 
1 5 0.1 
3 8 0.1 
5 6 0.2 
5 8 0.7 
5 9 0.5 
6 7 1.0 
7 2 0.1 
7 9 0.1 
8 5 1.0 
8 6 1.0 
9 4 0.08 
9 7 0.7; 

example.dat

set nusos; 
set centr within nusos; 
set links within (nusos cross nusos); 
set origens within centr; 
set destins within centr; 
set odpair within (origens cross destins); 
set destperorig { i in origens } := 
setof { (i1, j1) in odpair : i = i1 } j1; 

param g{odpair} >0; 
param t0{links}; 
param Tdreta { i in nusos, k in origens }:= 
if i in destperorig[k] then -1.0*g[k, i] 
else 
if i = k then sum {j in destperorig[k]} g[k, j] else 0; 

node N {i in nusos, k in origens}: net_out = Tdreta[i, k]; 

arc v_k { (i, j) in links, k in origens } >= 0, 
from N[i, k], to N[j, k] ; 

var v { (i, j) in links }; 

minimize Vg: sum { (i, j) in links } v[i, j]*t0[i, j]; 

をexample.mod。なにか提案を?説明付きでお願いします。

答えて

0

変数vは無制限で、目的にのみ表示されるため、問題は無制限です。したがって、vの適切な小さな値を選択することによって、目的を任意に小さくすることができます。

+0

私はv [i、j] =合計{k in origens} v_k [i、j、k]を試しました。しかし、私はこのエラーが表示されます:vはすでに定義されています –

+0

宣言に 'var v {(i、j)in links} = sum {k in origens} v_k [i、j、k];' – vitaut