【问题标题】:Find all answers to a Mixed-Integer-Linear-Program using branch and bound?使用分支定界查找混合整数线性程序的所有答案?
【发布时间】:2015-08-31 08:38:54
【问题描述】:

我正在尝试解决可能有多个答案的 MILP(所有答案都为目标函数提供相同的值)。基于分支定界的算法是否能够找到所有解决方案?

是否可以使用 MATLAB 找到此类 MILP 的所有解决方案(例如使用 intlinprog)。

谢谢。

【问题讨论】:

  • 请注意,对于任何重要的 MILP,可能只有少数或大量等效解决方案。构造具有显着内部对称性并表现出这种行为的问题是很容易的,并且一些现实世界的问题具有相似的特征。例如。电视广告插播,在休息之间交换不同但相似的广告,提供了具有相同目标的不同解决方案。

标签: linear-programming integer-programming


【解决方案1】:

如果节点的 LP 松弛的目标值大于或等于当前最佳上界(假设最小化问题),标准分支定界算法会计算一个节点。从理论上讲,您可以更改此设置,以便仅在 LP 值 严格 大于当前 UB 时才能了解节点。然后,您可以保留与当前 UB 相关的所有解决方案的列表。当你找到一个新的更好的 UB 时,清除列表并开始构建一个新的。

很明显,这会减慢搜索速度,尤其是如果正如 TimChippingtonDerrick 所说,有很多最优值。

这需要自定义 B&B 代码。我敢肯定,除非您编写自己的分支定界代码,然后从中调用 MATLAB 的 LP 求解器,否则您可以在 MATLAB 中执行此操作。您可能能够在 CPLEX 的 API 或其他一些求解器中完成。在任何情况下,您都可能不得不编写自己的 B&B 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2020-05-25
    • 1970-01-01
    • 2019-10-06
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多