0
我有一个线性规划模型,用于最小路径问题。这是模型:如何在gmlp中打印变量
/* Min path problem
file: minPath.mod */
set V;
set E within V cross V;
param cost{E};
param S symbolic;
param T symbolic;
var flow{E} integer, >= 0;
minimize min_path: sum{(a,b) in E} cost[a,b] * flow[a,b];
s.t. conservazione{v in V: v != S and v != T}:
sum{(a,b) in E: a == v} flow[a,b] ==
sum{(a,b) in E: b == v} flow[a,b];
s.t. sorgente: sum{(a,b) in E: a == S} flow[a,b] == 1;
s.t. destinazione: sum{(a,b) in E: b == T} flow[a,b] == 1;
display {(a,b) in E} flow[a,b];
data;
set V := A B C D E;
set E := (A,B) (A,C) (B,D) (B,E) (C,D) (D,E);
param S := A;
param T := D;
param cost := [A,B] 2 [A,C] 1 [B,D] 3 [B,E] 1 [C,D] 1 [D,E] 1;
end;
目标值为3为我的例子,和最小路径是:
A -> C -> D -> E
由于这个原因,该载体流动必须是1在边缘上,即我在上面写过。顺便说一下,当我显示矢量流与声明:
display {(a,b) in E} flow[a,b];
该矢量为0在所有的位置。
flow[A,B].val = 0
flow[A,C].val = 0
flow[B,D].val = 0
flow[B,E].val = 0
flow[C,D].val = 0
flow[D,E].val = 0
我试图改变语法,但我不能强制glpsol打印真正的价值。
我错过了什么吗?
非常感谢你的疯狂,你是最棒的! – optimusfrenk