【问题标题】:CPLEX giving different OPTIMAL solutions with very different objective valuesCPLEX 提供具有非常不同目标值的不同最优解
【发布时间】:2017-07-26 15:46:19
【问题描述】:

在相同的 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`

【问题讨论】:

    标签: algorithm optimization cplex


    【解决方案1】:

    这看起来像是常见的数值问题,并且很大程度上取决于您的建模(例如使用大 M 常量)。

    我从未使用过 CPLEX,但这个 official page 谈论病态 MIP 模型。

    相关的小摘录:

    如果 CPLEX 报告任何不适定碱基或超过 5% 的不稳定碱基,您应该重新考虑您的模型。

    在你的情况 A 中,你有超过 95% 的不稳定碱基:

    For MIPEmphasis = 3: .... Unstable bases = 0.966667 ...
    

    因此,A 的结果很可能不可信。此外,我会尝试重新制定我的模型。

    如果我们查看 B,您有 > 92.5% 的可疑碱基,所以即使在这种情况下,模型也可能在自找麻烦。

    由于我不熟悉所有的调整和默认设置,因此我无法就您的 MIPEmphasis 和 co 的这些完全不同的计算结果的来源提供任何见解。 (可能由于 MIPEphasis 生成更多的切割平面会导致更稳定的问题;只是猜测)。

    【讨论】:

    • 感谢您的洞察力!我跟着那个线索,发现了罪魁祸首。我的变量是具有非连续范围的整数变量:每个变量可以是x = 0a <= x <= bx = c。移除这些 OR 中的至少一个会导致 0 个不稳定的碱基。对如何最好地表现这一点有任何见解吗?
    猜你喜欢
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2022-01-06
    相关资源
    最近更新 更多