我需要用不同的约束集优化模型,但是这些约束的子集对于每个模型都是相同的。我的想法是构建一个基本模型,其中包含每次需要的所有变量和所有约束条件。不过,它看起来不像古罗比模型.复制()方法以我想象的方式复制变量。这是一个非常简单的版本,我希望它能显示出我得到的错误。在
>>> from gurobipy import Model
>>> m0 = Model("test")
>>> v = m0.addVar(lb=-1, ub=1)
>>> m0.update()
>>> print m0
<gurobi.Model Continuous instance test: 0 constrs, 1 vars, Parameter changes: LogFile=gurobi.log>
>>> print v in m0.getVars()
True
>>> m = m0.copy()
>>> print m
<gurobi.Model Continuous instance test_copy: 0 constrs, 1 vars, Parameter changes: LogFile=gurobi.log>
>>> print v in m.getVars()
True
>>> m0.addConstr(v <= 0)
<gurobi.Constr *Awaiting Model Update*>
>>> m0.update()
>>> print m0
<gurobi.Model Continuous instance test: 1 constrs, 1 vars, Parameter changes: LogFile=gurobi.log>
>>> m.addConstr(v >= 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "model.pxi", line 2196, in gurobipy.Model.addConstr (../../src/python/gurobipy.c:66304)
File "model.pxi", line 2089, in gurobipy.Model.__addConstr (../../src/python/gurobipy.c:64663)
gurobipy.GurobiError: Variable not in model
>>> print m
<gurobi.Model Continuous instance test_copy: 0 constrs, 1 vars, Parameter changes: LogFile=gurobi.log>
软件:在OS X El Capitan上的Python2.7.11和Gurobi6.5(也在Ubuntu15.04上测试过)
关于为什么m.getVars()中的v在原始示例中返回True,我找不到问题1的明确答案。我想“in”只是比较对象内部的值,而不是对象本身,但是我没有这个来源。在
关于问题2,我找到了一个解决方案:
简单示例:
更复杂的例子:
^{pr2}$。。。等等。在
相关问题 更多 >
编程相关推荐