【问题标题】:CPLEX heuristics give different computational resultsCPLEX 启发式给出不同的计算结果
【发布时间】:2016-06-21 07:47:46
【问题描述】:

当我们使用 cplex 解决最大化 mip 问题时,cplex 启发式会影响目标值的上限吗?

据我了解,cplex 启发式可以提高最优值的下限,但不能提高上限。但在我的测试中,如果我关闭 cplex 启发式,它会给出非常差的上限。上限(启发式开/关)的差异非常大,不容忽视。帮帮我:-(

【问题讨论】:

  • 启发式可以找到好的或好的解决方案,甚至可能是最优的。这样做,在许多情况下,关于已知(次优)解决方案的额外信息当然会改善下限。我看不出为什么上限也不能更新的明显原因,基于来自启发式的新信息,通过修剪搜索空间。当然,他们不会找到比完整搜索更好的解决方案。

标签: java cplex heuristics branch-and-bound


【解决方案1】:

本研究的一个基本示例,假设您的 MIP 是一个纯二元线性规划 (BLP),只有二元值决策变量(没有混合连续变量)。此外,假设 CPLEX 仅使用基本的分支定界 (BAB) 来求解 MIP,而忽略了高级分支和节点选取技术。

正如您所提到的,由于您的程序是最大化程序之一,因此良好的启发式自然会影响最佳解决方案的目标函数值的下限。

在我们的简单示例中,上限将主要基于当前最佳(最佳 w.r.t. max. obj. function value)解决方案,以解决连续松弛的 BLP 子问题。即,您的 BAB 树中活动节点(尚未修剪分支)的 LP 解决方案,其中对您的决策变量的二元约束,例如 x_i ∈ {0, 1}^n,已被其连续松弛所取代,例如 x_i ∈ [0, 1]^n

在这一点上,(元)启发式可以对例如产生很大的影响

  • 我们如何选择要在 BAB 树中处理的节点。即,在一个节点被修剪或分支后,我们如何决定下一个选择哪个节点?
  • 此外,如果启发式算法可以在早期为我们提供良好的下限(例如,最佳现有解决方案),那么我们可能会迅速修剪(有界)树中的许多节点,否则我们可能会这样做明确处理,以防没有良好的下限。

节点的选择对求解过程中上界(最大问题)的进度影响很大,同样;自然,较小的解决方案空间(由于许多修剪节点)将增加改善问题上限的可能性/“速度”。

好的启发式方法可以对整个求解过程产生影响的另一点自然是在预处理阶段;在开始 BAB 树遍历之前。真正聪明的启发式方法可以大大减少解决方案空间,特别是如果我们试图解决一个允许明显重构/分解为不太复杂的问题的问题。就其本身而言,此类预处理步骤可能不是启发式(因此当您关闭 CPLEX 启发式时不会停用),但我会说它们生活在同一个家庭中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 2013-01-31
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多