mathematical-optimization - GLPK( PuLP 包装机)中的约束违规

标签 mathematical-optimization glpk pulp

我正在使用带有 GLPK 求解器的 Pulp 并具有以下约束:

-1000000*f1 + v1 + 1000000*f2 - v2 >= -10.999

求解器:

problem.solve(GLPK(options=['--mipgap', '0.000001', '--cuts']))

但结果我解决了违反约束的问题(状态“最佳”):

f1 = 0
v1 = 11
f2 = 1
v2 = 1000000

那么,在这种情况下我能做什么呢?我可以以某种方式提高准确性或使用其他解决方案吗?

最佳答案

我认为,您遇到了数值准确性问题。您的系数为 1.e7(并且您需要 1.e-6 的解)。该解决方案至少需要在 1.e11 中正确才能保持约束,并且根据参数,您需要最大 1.e-14 相对误差。

对于纯数值求解器来说,这实在是太多了。 (预计最大 1.e-6 到 1.e-7 能够可靠地运行 LP 求解器)有像 QSopt 这样的精确求解器,我也认为,soplex 现在有了这些功能。

这是 QSopt 的链接 http://www.math.uwaterloo.ca/~bico/qsopt/downloads/downloads.htm

这是这个复杂内容的链接。 http://soplex.zib.de/doc/html/EXACT.php

QSopt 仅以二进制形式提供(我认为),SoPlex 可免费用于研究(据我了解)。

此外,您还可以将 SCIP 与 SoPLex 一起使用。他们已经或曾经有过一些确切的知识产权项目。因此,如果许可证适合您,在这种情况下我会选择 SCIP。

也许,您可以更深入地了解您的应用程序,以便可以重新制定您的限制。

关于mathematical-optimization - GLPK( PuLP 包装机)中的约束违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431567/

相关文章:

java - 无法加载 GLPK for Java 的动态链接库。 eclipse

python - 如何在Alpine Linux上安装GLPK?

python - PuLP:每组仅使用一项

R:二次规划/等渗回归

data-structures - 保持多维整数框的质心并删除一些 "orthants"

c++ - 凹壳取边界上多边形的所有点

python - 未知类型名称 'glp_long' (mac osx python, pyglpk)

python - 具有冗余约束的不可行解 - PuLP 和 COIN-OR

python - PuLP 中的弹性子问题如何用作约束?

f# - 使用 F# 进行优化