在同一个ILP问题(完全相同的输入文件)上运行CPLEX时:
MIPEmphasis = 3
,我的客观价值为 6.81613e-06 MIPEmphasis = 4
,我的目标值为 1.03858 在这两种情况下,CPLEX都会返回OPTIMAL
状态。
从CPLEX用户手册:
要明确到目前为止已经提到的一个观点:
MIPEmphasis
的每一个选择都会导致搜索算法以最终找到并证明最优解的方式进行,或者证明没有整数可行解存在。重点的选择仅指导CPLEX以符合用户特定目的的方式生成可行的解决方案,但算法的准确性和完整性不会在此过程中牺牲。
我在这里遗漏了什么吗?我不仅使用MIPEmphasis
参数,而且还使用其他参数(例如ScaInd
)来解决此问题,其中通过改变参数,我获得了不同的OPTIMAL
解决方案质量。
这里有一些我似乎无法破译的信息。
MIPEmphasis = 3
:
Maximum condition number = 5.03484e+12,
Attention level = 0.290111,
Suspicious bases: 0.0111111,
Unstable bases = 0.966667,
Ill-posed bases = 0,
CPLEX Status = `OptimalTol`
MIPEmphasis = 4
:
Maximum condition number = 4.73342e+08,
Attention level = 0.00925,
Suspicious bases: 0.925,
Unstable bases = 0,
Ill-posed bases = 0,
CPLEX Status = `Optimal`
答案 0 :(得分:2)
这看起来像数字故障,这很常见,并且在很大程度上取决于您的建模(例如使用大M常数)。
我从未使用过CPLEX,但这篇official page讨论了病态的MIP模型。
与此相关的小摘录:
如果CPLEX报告任何不适当的碱基或超过5%的不稳定碱基,您应该重新考虑您的模型。
在你的案例A中,你有超过95%的不稳定基数:
For MIPEmphasis = 3: .... Unstable bases = 0.966667 ...
所以很有可能,A的结果不可信。此外,我会尝试重新制定我的模型。
如果我们看看B,你就得到了> 92.5%的可疑基数,所以即使在这种情况下,模型也会遇到麻烦。
由于我不熟悉所有的调音和默认值,因此我无法就MIPEmphasis和co的这些非常不同的计算结果的来源提供任何见解。 (由于MIPEmphasis导致产生更多切割平面会产生更稳定的问题;只是猜测)。