python - 做ILP时的多种解决方案

标签 python numpy scipy pulp

目前我正在使用 PuLP 来解决最大化问题。它工作正常,但我希望能够获得 N 种最佳解决方案,而不仅仅是一个。有没有办法在 PuLP 或任何其他免费/Python 解决方案中执行此操作?我曾想过从最优解中随机选择一些变量并将它们丢弃并重新运行的想法,但这似乎完全是一个 hack。

最佳答案

如果你的问题很快就能解决,你可以尝试从上面逐步限制目标。例如,如果最优解的目标值为 X,尝试使用附加约束重新运行问题:

problem += objective <= X - eps, ""

缩减步骤 eps 取决于您对问题的了解。

当然,如果你只是盲目地挑选一些eps并得到一个解决方案,你不知道这个解决方案是第2最好的,第10最好的还是第1000最好的......但是你可以对 eps 参数做一些系统的搜索(二进制,网格)(如果问题真的很快就能解决的话)。

关于python - 做ILP时的多种解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307155/

相关文章:

python - 守护进程不允许有 child

python - 替代 python 脚本中的 mpirun

python - Numpy:通过多维数组对多维数组进行排序

python-3.x - Python 3D 图像分割在分水岭的距离图中找到局部峰值

python - 对像 Digg 这样的东西进行建模的最佳方法是什么?

python - 使用 scipy curve_fit 通过两个数据点拟合指数函数

python - 安装 Graphviz 2.38 后的 "RuntimeError: Make sure the Graphviz executables are on your system' s 路径

python - 如何提取 python Dict 值的每个可能值以列出

python - 多维数组上的 Numpy 直方图

python - 规范化多维数组