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