pyomo是否提供对cplex回调的访问权限?

时间:2018-11-12 22:30:08

标签: cplex pyomo

我在Pyomo中相对较新,在访问cplex回调以生成用户切割时遇到一些问题。 我使用的是Pyomo 5.5.0和cplex 12.8.0.0,我已经定义了一个Abstract模型并加载了数据,现在我想指定cplex UserCutCallback以便在分支分支中添加用户编写的剪切削减cplex执行的搜索。

我尝试了以下操作:

# model definition
model = AbstractModel()
...

# load the instance
instance = model.create_instance(data = 'data.dat')

# the callback that cplex should call during the branch-and-cut search
def cut_callback(solver, model):
    print("CB-Cut")

opt = SolverFactory('cplex_direct')
opt.set_callback('cut-callback', cut_callback)

但是我遇到了以下错误:

~/miniconda3/envs/opt/lib/python3.6/site-packages/pyomo/opt/bas/solvers.py in set_callback(self, name, callback_fn)
    815         if not self._allow_callbacks:
    816             raise pyutilib.common.ApplicationError(
--> 817                 "Callbacks disabled for solver %s" % self.name)
    818         if callback_fn is None:
    819             if name in self._callback:

ApplicationError: Callbacks disabled for solver cplexdirect 

当我没有指定任何回调时,接口cplex direct可以正常工作,但是当我调用set_callback方法时,出现了上面的错误,因此我开始怀疑是否有办法从pyomo中访问cplex回调。我真的需要那个!

此功能在pyomo中可用吗?我想念什么吗?

感谢您的帮助

0 个答案:

没有答案