首页 > 解决方案 > MIP:在 CPLEX (C++) 中修复部分解向量

问题描述

我正在使用 C++ 中的 CPLEX 实现数学运算,其中我使用提供的不同部分解向量多次启动相同的 MIP。

但是,我不仅想提供一个起始解决方案,我还希望部分解决方案向量中的变量在整个优化过程中被视为固定的(原因是,始终以受控方式探索搜索空间的不同部分)。

通过 CPLEX 和此处的文档进行搜索,我真的找不到合适的函数调用来提供我正在寻找的功能,并且非常感谢提示如何以良好和有效的方式解决这个问题。

我能想到一种解决方法,即通过向模型添加约束(例如 y == 4)并在求解得到的子 MIP 后,从模型中移除约束(如此处所述)来修复变量。但是,是否有更好的选择来实现这一目标?是否有可能利用通过用固定部分解向量 a 求解一个 MIP 获得的预处理信息,然后用不同的固定部分解向量 b 求解相同的 MIP?毕竟,核心模型没有改变。

关于使用部分解决方案热启动 CPLEX,我找到了级别 3 CPX_MIPSTART_SOLVEMIP工作级别,其描述如下:

求解一个 subMIP。您必须在此努力水平上指定至少一个离散变量的值

但是我是否正确地解释了这一点,这意味着它试图通过解决 sub-MIP 来构建一个起始解决方案,然后继续处理整个优化问题,可能会改变起始解决方案中给出的变量,而我只对解决 subMIP 感兴趣。

谢谢!

标签: c++optimizationlinear-programmingcplexmixed-integer-programming

解决方案


推荐阅读