在处理我的项目时,我需要使用回调函数来更改我的MIP模型。我仔细阅读了文档,但总是收到错误消息。
我相信,错误是cbGet-function带来的,没有这个,我会得到一个输出,尽管我不知道它是否正确。
没有回调函数,我的模型可以正常工作。
这是我的代码:
import gurobipy as gb
...
some code with the model
...
def cb(mod, where):
if where == gb.GRB.Callback.MIP:
print(mod.cbGet(gb.GRB.Callback.MIP_NODCNT))
def cb2(mod, where):
if where == gb.GRB.Callback.MIP:
print(gb.GRB.Callback.MIP_NODCNT)
m.optimize(cb(m, gb.GRB.Callback.MIP))
请注意,如果我使用cb2
作为回调函数,则会得到退出代码0和输出。我不确定此输出是否正确。
但是,当我使用cb
作为回调函数时,会收到错误消息
Traceback (most recent call last):
File "C:/Users/dbigb/PycharmProjects/MA/MIP_model.py", line 39, in <module> m.optimize(cb(m, gb.GRB.Callback.MIP))
File "C:/Users/dbigb/PycharmProjects/MA/MIP_model.py", line 32, in cb print(mod.cbGet(gb.GRB.Callback.MIP_NODCNT))
File "model.pxi", line 4136, in gurobipy.Model.cbGet
AttributeError: 'NoneType' object has no attribute '_cbdata'
我不知道哪个属性不存在,_cbdata
也不是什么属性,或者我在哪里可以找到并检查此属性。任何帮助将不胜感激。
我没有包括整个模型,因为它运行良好。如果对解决方案很重要,我将编辑问题并添加代码。