如何在CPLEX中检查MILP是否有可行的解决方案

如何在CPLEX中检查MILP是否有可行的解决方案,cplex,Cplex,我想知道是否有一种快速的方法来检查具有给定输入的MILP是否有可行的解决方案。我有一个MILP公式,并试图随机生成问题的输入,可能有也可能没有可行的解决方案。我想用CPLEX检查一下 我知道检查问题是否有可行解的一种方法是将目标函数设置为常量(例如,0),以便CPLEX返回找到的第一个可行解。如果我们生成的输入有可行的解决方案,这可能是最快的方法 如果我们以某种方式生成的问题输入没有可行的解决方案,我想知道使用CPLEX检查生成的输入没有可行的解决方案的最快方法是什么 谢谢。一般来说,可行性和最

我想知道是否有一种快速的方法来检查具有给定输入的MILP是否有可行的解决方案。我有一个MILP公式,并试图随机生成问题的输入,可能有也可能没有可行的解决方案。我想用CPLEX检查一下

我知道检查问题是否有可行解的一种方法是将目标函数设置为常量(例如,0),以便CPLEX返回找到的第一个可行解。如果我们生成的输入有可行的解决方案,这可能是最快的方法

如果我们以某种方式生成的问题输入没有可行的解决方案,我想知道使用CPLEX检查生成的输入没有可行的解决方案的最快方法是什么


谢谢。

一般来说,可行性和最优性一样困难,所以通常你必须以某种方式解决MIP。检测可行性的一种方法确实是将目标归零,然后看看CPLEX是否找到了可行的解决方案。但是,根据您的问题结构,有意义的目标值可能比全0目标更有效。您可以将“solution limit”(解决方案限制)参数设置为1,以便在这种情况下CPLEX在第一个可行的解决方案处停止


另一种选择是使用CPLEX的feasopt功能,请参阅。CPLEX试图找到一个最小的放松。它从一个总是可行的问题开始。如果原始模型可行,则feasopt最终将以目标值为0的解决方案终止。如果您的初始模型不可行,那么CPLEX对feasopt模型的最佳界限最终将超过0,此时算法可以停止。有时这会更快地发现不可行之处。

亲爱的丹尼尔,非常感谢你的建议。这很有帮助。