2013-11-03 88 views
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打印真正的價值。

我錯過了什麼嗎?

回答

0

你必須把聲明:

solve; 

顯示語句之前!

+0

非常感謝你的瘋狂,你是最棒的! – optimusfrenk