我试图让 Gurobi 在找到最佳解决方案后回拨(使用 Java 接口)。
背景:我正在研究一种方法,该方法需要(1)找到一个(非常)好的解决方案,然后(2)为问题添加一个惰性约束。首先必须找到一个好的解决方案,因为在我的情况下,确定一个合理的新惰性约束需要一个好的解决方案。
一般来说,这不是问题,因为 Gurobi 使用 MIP、MIPSOL 等进行回调;然后我可以检查当前解决方案的差距并决定添加下一个惰性约束。
然而,当寻找一个非常好的解决方案时,Gurobi 有时会找到一个最佳解决方案(例如在切断节点之后)。在这种情况下,没有额外的 MIP、MIPSOL 或任何其他可用的回调允许我添加额外的惰性约束。
我已经发现可以使用 MIPNODE_STATUS 识别截止值。然而,我还没有找到一种方法来检查这个截止是否会导致当前的解决方案被证明是最优的。
有谁知道识别这种情况并仍然添加一个惰性约束?