获取并比较 Gurobi/Python 中的变量值
Get and compare Variable Values in Gurobi/Python
我想将最佳 gurobi 变量的值与一个数字进行比较,以确定模型的下一步。
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')
但是这个错误表明它是 "NoneType Object",所以 var_ref
中没有存储任何内容
f[(i,j)]
不是 python 识别的数字类型,它是一个 Gurobi Var 对象。
需要向gurobi询问其值:
if f[(i,j)].X > 1: # attribute! No function!
...
这个解释in the docs:
Variable value in the current solution.
我想将最佳 gurobi 变量的值与一个数字进行比较,以确定模型的下一步。
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')
但是这个错误表明它是 "NoneType Object",所以 var_ref
中没有存储任何内容f[(i,j)]
不是 python 识别的数字类型,它是一个 Gurobi Var 对象。
需要向gurobi询问其值:
if f[(i,j)].X > 1: # attribute! No function!
...
这个解释in the docs:
Variable value in the current solution.