2017-05-26 23 views
0

モデルの次のステップを決定するために、最適なgurobi変数の値を数値と比較したいと思います。Gurobi/Pythonの変数値の取得と比較

from gurobipy import * 
m=Model("flow_model") 
arcs = [(0,1),(1,2),(3,4),(0,3), (1,4)] 
f= m.addVars((a for a in arcs), vtype=GRB.CONTINUOUS, name = "flow") 
d = [0,2,4,0,8]  
G = [10,0,0,4,0] 

for i,j in arcs: 
    m.addConstr(f.sum(i,'*') + d[i] == f.sum('*',i) + G[i], "node%d" %i) 

m.setObjective((quicksum(f[i,j] for i,j in arcs)), GRB.MAXIMIZE) 

m.optimize() 

for i,j in f: 
    if f[(i,j)] > 1 : 
     print('built a line') 

「Unorderable types:Var()> int()」というエラーが発生しました。私はまた、次のバリエーションを試みた:

var_ref = m.getVarByName("flow") 
for i,j in var_ref: 
    if var_ref[(i,j)] > 1 : 
     print('built a line') 

をしかし、このエラーはそのA「NoneTypeオブジェクト」と述べ、そう何も

答えて

0

f[(i,j)]は、Pythonで認識数型ではありませんvar_refに格納されていない、それはGurobiですVarオブジェクト。

あなたは、その値をgurobiを依頼する必要があります。

if f[(i,j)].X > 1: # attribute! No function! 
    ... 

これはin the docsを説明します

Variable value in the current solution. 

Overview of supported variable attributes