Gurobi 7.0-如何找到MILP的n个最佳解决方案?
Gurobi 7.0-How to Find the n Best Solutions to MILP?
我正在通过 Matlab 使用 Gurobi 7.0。根据文档,为了找到 n 个最佳解决方案,您需要设置参数:
PoolSearchMode=2,以系统的方式寻找备选最优解。
PoolSolutions=n,池中的解数。
当我这样做时,我的结果包含与默认参数相同的字段,即只有一个解决方案。我也尝试过更改参数 SolutionNumber,但它不影响结果。
我怀疑正在找到替代的最佳解决方案,因为求解器在提示中报告了一个等于 n 且具有 objective 值的解决方案计数,但我无法检索它们。我希望这不是 Gurobi Matlab 的另一个限制 API.
此外,我知道我可以使用整数切割找到这些解决方案,但根据我的理解,这会效率低得多,因为它需要从头开始分支定界树。
这是不可能的。 Gurobi Matlab 接口是有限的,因为它不将模型视为 class,即使 Matlab 提供面向对象的编程。这限制了许多功能。然而,CPLEX 允许 Matlab 用户与模型交互 class 并从解决方案池中检索解决方案。
我正在通过 Matlab 使用 Gurobi 7.0。根据文档,为了找到 n 个最佳解决方案,您需要设置参数:
PoolSearchMode=2,以系统的方式寻找备选最优解。
PoolSolutions=n,池中的解数。
当我这样做时,我的结果包含与默认参数相同的字段,即只有一个解决方案。我也尝试过更改参数 SolutionNumber,但它不影响结果。
我怀疑正在找到替代的最佳解决方案,因为求解器在提示中报告了一个等于 n 且具有 objective 值的解决方案计数,但我无法检索它们。我希望这不是 Gurobi Matlab 的另一个限制 API.
此外,我知道我可以使用整数切割找到这些解决方案,但根据我的理解,这会效率低得多,因为它需要从头开始分支定界树。
这是不可能的。 Gurobi Matlab 接口是有限的,因为它不将模型视为 class,即使 Matlab 提供面向对象的编程。这限制了许多功能。然而,CPLEX 允许 Matlab 用户与模型交互 class 并从解决方案池中检索解决方案。