【发布时间】:2015-03-31 09:59:22
【问题描述】:
我正在使用 Gurobi 6.0 和 Python 2.7。我很想知道 Gurobi 是否允许目标函数的值来自具有决策变量索引的字典。附上代码:
from gurobipy import *
d = {
(0, 0): 0,
(0, 1): -5,
(1, 0): 4,
(1, 1): 2,
(2, 0): 0,
(0, 2): 10
}
m = Model()
x = m.addVar(vtype=GRB.INTEGER)
y = m.addVar(vtype=GRB.INTEGER)
m.update()
m.addConstr(x + y <= 2)
m.setObjective(d[(x, y)], GRB.MAXIMIZE)
m.optimize()
print m.objVal
print x.x
print y.x
模型的答案是
-5.0
-0.0
-0.0
这显然没有意义,因为 max(d[(x,y)]) = 10 根据给定的数据发生在 x=0 和 y=2 处。这里有什么问题? Gurobi 甚至允许这样的字典引用吗?甚至允许吗?
【问题讨论】:
-
你没有传递字典,你传递了一个值(
0,如果x和y默认为零);d[(x, y)]在函数被调用之前 被评估,result 是参数。 -
虽然默认 x 和 y = 0 有意义,但在这种情况下 m.objVal 不应该也返回 0 而不是 -5 吗?我不确定它是如何得出 -5 值的 ..
标签: python python-2.7 dictionary mathematical-optimization gurobi