我正在研究CPLEX上的MIP问题。主要模型目标是最小化一个函数,例如min f(x)。
以下步骤是我要做什么的想法:
但是,我要迭代执行步骤1)到4),直到主模型最优为止。
由于它很复杂,我尚未完成此操作。如果有人可以指导,指出正确的方向或提供一些示例,我将不胜感激。
答案 0 :(得分:0)
您所描述的正是可以使用惰性约束回调的情况:每当CPLEX找到新的可行候选方案时,都会调用该回调。您可以检查此解决方案。如果它违反了您的某些约束,则可以添加它们,CPLEX将放弃该解决方案。如果该解决方案可行,则让其通过,CPLEX将用作新的现有解决方案。
您可以使用旧版回调API或通用回调(自12.9版以来新增)来实现惰性约束回调。看一下CPLEX附带的示例bendersatsp.py
和bendersatsp2.py
。前者着重于功能__call__
,后者着重invoke
。用分隔您的约束的代码替换从那里调用的各种separate
函数。