0

我正在研究一个线性问题以最小化。它定义明确,主要使用 [0;1] 范围内的数字。Excel 的线性求解器和 Mathematica 的 LinearProgramming 确实找到了一个解决方案,但是我认为它以一种糟糕的方式违反了我的一个约束:

约束必须等于 0 才能使我的解决方案有效,而两个求解器都将数字 ~10E-17 放在那里并将其视为满意。我尝试以准确性进行操作,但是当我低于 10E-17 时,它表明问题不是线性的,这是错误的。自动缩放也无济于事。

我知道它处理计算机中使用的浮点数的有限准确性。我想确定我是否注定要在这里,或者是否有任何技巧可以克服这个问题。

4

1 回答 1

4

线性规划求解器几乎可以肯定使用 IEEE 754 64 位二进制浮点。它存储相当于 53 个有效位,相当于大约 15.9 个十进制数字。使用这种表示,精确性是不可能的,并且在 10e-17 附近找到一个解决方案与您将获得的一样好。

首先要做的是检查您使用普通求解器获得的近似解是否足以解决您的实际问题。请记住,任何用作输入的测量物理量的已知精度要低得多。

@harold 在评论中指出“一些求解器具有精确模式,使用任意有理数。虽然非常慢。”。如果您确实需要精确性,那么寻找具有有理数表示的求解器是您唯一的解决方案。

于 2015-10-31T22:53:08.517 回答