【发布时间】:2015-07-05 11:31:21
【问题描述】:
== 在 Gurobi Python 中如何工作?
在我创建了所需的变量 (x[s,d,r]) 之后,我正在尝试创建一个类似于 x[s,d,r] == 1 的 if 语句。问题是,这个陈述总是正确的,所以不管我把它设置为x[s,d,r]==0 还是x[s,d,r]==2,它总是一样的。
x[s,d,r] 是由x[s,d,r] = m.addVar(0.0,1.0,1.0,GRB.BINARY,"x_"+ s+"_"+ d +"_" + r) 定义的二进制变量。
z = 0.0
for s in students:
for d in dates:
if (s,d) in preferences:
if preferences[s,d]!=0:
for r in rooms:
if (d,r) in tutorials:
if x[s,d,r]>0.001:
print('%s:%s:%s:%s '%(s,d,r,preferences[s,d]))
z = z + preferences[s,d]
else:
print('no')
m.setObjective((z), GRB.MAXIMIZE)
所以如果 x[s,d,r]>0.001: 是始终评估为“真”的部分。
【问题讨论】:
-
x[s,d,r]==0和x[s,d,r]==2是相等测试,而不是赋值。你没有改变价值。使用单个=分配:x[s,d,r] = 0。 -
所以这是我真正打算检查变量 x[s,d,r] 是设置为 1 还是仍为 0。 “x[s,d,r]==0”表示我已经更改了 if 语句,因此它会检查 x == 0。
-
对不起,这似乎是一个令人困惑的问题。
x[s,d,r]是一个 gurobi 变量。这不是一个数字。解决方案值x[s,d,r].x是一个数字,但您需要优化才能拥有它。目前还不清楚您要做什么。
标签: python if-statement gurobi