我用解算器gurobi解决问题,我得到以下错误:Gurobi 5.1.0:无界; variable.unbdd返回。
我的代码:
example.mod
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.dat
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;
我无法看到问题。有什么建议吗?请解释一下。
答案 0 :(得分:0)
你的问题是无限的,因为变量v
是无界的,只出现在目标中。因此,您可以通过选择适当的v
小值来使目标任意小。