3
我需要使用不同的約束集來優化模型,但是這些約束的子集對於每個模型都是相同的。我的想法是建立一個包含所有變量和每次需要的所有約束的基礎模型。但是,它看起來不像Gurobi Model.copy()方法以我想象的方式複製變量。這是我希望能做的非常簡化的版本,它顯示我得到的錯誤。爲什麼在使用Model.copy()之後得到「GurobiError:變量不在模型中」?
>>> 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>
- 不m.addConstr(V> = 0)爲什麼可以找到變量v時m.getVars() 清楚地示出v是在模型?
- 是否有任何其他方式重用 中的同一組變量和約束,以避免從頭重建每個模型?
軟件:Python的2.7.11和Gurobi 6.5 OS X埃爾卡皮坦(也在Ubuntu 15.04測試)