我正在尝试解决可能有多个答案的MILP(都为目标函数提供相同的值)。基于分支定界的算法是否能够找到所有解决方案?
是否可以使用MATLAB找到这种MILP的所有解决方案(例如使用intlinprog)。
谢谢。
答案 0 :(得分:1)
标准的分支定界算法如果其LP弛豫的目标值大于或等于当前最佳上限(假设最小化问题),则探测节点。从理论上讲,如果LP值严格大于当前UB,您可以更改此值,以便仅了解节点。然后,您可以保留所有与当前UB相关的解决方案的列表。找到新的更好的UB后,清除列表并开始构建新的UB。
显然,这会减慢搜索速度,特别是如TimChippingtonDerrick所说,有很多最佳选择。
这需要自定义B& B代码。我确定你可以不在MATLAB中这样做,除非你编写自己的分支定界代码,然后从中调用MATLAB的LP求解器。您可以在CPLEX的API或其他解算器中执行此操作。可能你不得不在任何情况下编写自己的B& B代码。