【问题标题】:Find exact solutions to Linear Program找到线性规划的精确解
【发布时间】:2016-03-27 11:11:32
【问题描述】:

我需要找到线性程序(所有输入都是整数)的精确解。重要的是求解器还将解输出为有理数,理想情况下无需对浮点数执行任何中间步骤。

GLPK 可以进行精确的算术运算,但不能将解显示为有理数(即我得到 0.3333 的 1/3)。我可能会尝试猜测这意味着哪个数字,但这似乎很脆弱。

我找不到可以做这种事情的 LP 求解器。有吗?性能不是一个大问题;我的问题很小。 (我确实考虑过使用像 Z3 这样的 SMT 求解器;他们可以解决这类问题并提供精确的合理解决方案,但他们诉诸于量词消除,而不是使用更适合 Simplex 等线性规划的算法)

【问题讨论】:

  • QSopt_ex Rational LP Solver (link) 有可用的源代码
  • 这看起来不错,而且因为它是免费软件而获得奖励积分。谢谢!如果你把它变成一个答案,我会接受它。
  • 为了未来读者的利益:我无法在我的系统上构建上述 QSopt_ex,但是 Github 上的这个 QSopt_ex 分支运行良好:github.com/jonls/qsopt-ex

标签: linear-programming arbitrary-precision


【解决方案1】:

SoPlex 可以使用有理算术精确求解 LP。像这样使用它:

soplex -X -Y -o0 -f0 problem.lp

选项XY 将以有理数打印原解和对偶解,而o0f0 将最优性和可行性容差设置为0,从而精确求解LP。

您需要安装 GMP(或在 Windows 上安装 MPIR)才能使用合理的功能。与 QSopt_exact 相比的一个优势是,SoPlex 使用了一种混合技术,将双精度计算的速度与有理算术的精确精度相结合 (iterative refinement)。

【讨论】:

  • 看起来不错。如果它是免费软件,我会更喜欢它,而且我的问题是 Cplex 格式,但它可能还是值得的。谢谢!
猜你喜欢
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多