Gurobi公差与双精度算术的局限性

Gurobi公差与双精度算术的局限性

这些原始和双可行性公差的默认值是<span> $ </ span> 10 ^ { -  6} <span> $ </ span>,并且完整性容差的默认是<span> $ </ span> 10 ^ { -  5} <span> $ </ span>。如果正确选择不等式和变量的范围,通常可以完全忽略容忍度问题。

举个例子,如果您的约束右侧是按顺序排列<span> $ </ span> 10 ^ 3 <span> $ </ span>然后,来自涉及约束(如果有的话)的计算的相对数字误差可能小于<span> $ </ span> 10 ^ { -  9} <span> $ </ span>,即不到十亿分之一。这通常比输入数据的准确性更准确,甚至可以在实践中测量的。

但是,如果您定义变量<span> $ </ span> x \在[-10 ^ { -  6},10 ^ { -  6}] <span> $ </ span>然后,相对数字误差可能与可变范围的50%一样大。

另一方面,如果您有变量<span> $ </ span> x \在[-10 ^ {10},10 ^ {10}] <span> $ </ span>中,并且您正在使用默认的原始可行性公差;那么你真正要求的是,对于相对数字错误(如果有的话)少于<span> $ </ span> 10 ^ { -  16} <span> $ </ span>。但是,这超出了双精度数字的比较范围。这意味着在测试特定变量的可行解决方案时,您并不允许任何截止错误。虽然这可能听起来像一个好主意,其实它真的很糟糕,因为任何圆形的计算可能导致你真正最佳的解决方案被拒绝那么不可行。