如何在gmlp中打印变量

时间:2013-11-03 20:12:10

标签: glpk

我有一个线性编程模型,针对最小路径问题。这是模型:

/* 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打印真实值。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

你必须提出声明:

solve;
显示语句前的