我正在尝试学习使用python3
和Gurobi
做一些简单的优化工作。我遵循一些示例代码,但是我的代码无法正常工作。代码附在下面。有人可以指出错误在哪里吗?谢谢!
from gurobipy import *
x = np.arange(0, 10001, 1)
y = np.arange(0, 10001, 1)+1
z = np.arange(0, 10001, 1)+1
dic_sysc_1 = dict(zip(x, y))
dic_sysc_2 = dict(zip(x, z))
m = Model()
cp1 = m.addVar(vtype=GRB.INTEGER, lb=5, ub =10000, name="cp1")
m.update()
cp2 = m.addVar(vtype=GRB.INTEGER, lb=999, ub =10000, name="cp2")
m.update()
m.setObjective( dic_sysc_1[cp1]+dic_sysc_2[cp2], GRB.MAXIMIZE)
m.setParam('OutputFlag',0)
m.optimize()
print ("Obj:", m.objVal)
print (cp1, dic_sysc_1[cp1])
print (cp2, dic_sysc_2[cp2])
输出结果是:
Obj: 3.0
<gurobi.Var cp1 (value 5.0)> 1
<gurobi.Var cp2 (value 999.0)> 2
此外,然后我添加了另一个约束
m.addConstr( (dic_new_1[cp1]+dic_new_2[cp2]) <= 20, "c90" )
其中dic_new_1
和dic_new_2
是两个类似于dic_sysc_1
和dic_sysc_2
的新字典。该模型显示错误消息:
unsupported operand type(s) for -: 'bool' and 'NoneType'
答案 0 :(得分:0)
这不是整数程序(MIP)的形式。您需要将模型重新构造为MIP或使用其他工具。