【发布时间】:2016-01-31 18:36:15
【问题描述】:
我正在研究一个线性问题以最小化。它定义明确,主要使用 [0;1] 范围内的数字。 Excel 的线性求解器和 Mathematica 的 LinearProgramming 确实找到了一个解决方案,但是我认为它以一种糟糕的方式违反了我的一个约束:
约束必须等于 0 才能使我的解决方案有效,而两个求解器都将数字 ~10E-17 放在那里并将其视为满意。我尝试以准确性进行操作,但是当我低于 10E-17 时,它表明问题不是线性的,这是错误的。自动缩放也无济于事。
我知道它处理计算机中使用的浮点数的有限精度。我想确定我是注定要死在这里还是有什么技巧可以克服这个问题。
【问题讨论】:
-
在更高的层面上,你能解释一下为什么 10e-17 不够好吗?
-
我有一个小案例的分析解决方案。它与求解器所说的不同,我相信这是原因,因为我仔细检查了所有内容。但是,我想将线性规划用于更大的实例。
-
一些求解器具有精确模式,使用任意有理数。不过很慢。
-
@harold:我在 QSopt_ex 方面取得了相当大的成功。 “精确模式”可以通过首先以双精度求解,然后检查(精确算术)是否已获得最佳基本解来完成。如果不是,请转到一些更高精度但仍然是固定精度的浮点运算。如果你有一个非常糟糕的最佳基础,你可能仍然会感到沮丧。
标签: floating-point precision linear-programming solver lpsolve