避免隐藏大系数

避免隐藏大系数

如前所述,改进数值的典型建议是限制约束矩阵系数的范围。这条准则背后的基本原理是,在线性表达式中添加的项应该具有可比较的大小,以便使舍入误差最小化。例如:

\ {eqnarray *}开始x - 10 ^{6}上的y & \组0 \ \ y \ [0, 10] \ {eqnarray *}结束


通常被认为是数值不稳定性的潜在来源,因为约束中的系数范围很广。然而,很容易实现一个简单(但无用)的替代方案:

\ {eqnarray *}开始x - 10 y_1 & \ \ \ y_1组0 - 10 y_2 & = & 0 \ \ y_2 - 10 y_3  &=& ... ...& = & 0 \ \ y_4 - 10 y_5 & = & 0 \ \ y_5 - 10 y & = & 0上的\ \ y \ [0, 10] \ {eqnarray *}结束


这种形式在矩阵中有更好的值。然而,解决方案 < span > < / span > y = -10美元^ {6},x = 1美元< span > < / span >可能仍然被认为是可行的,因为变量的边界和约束可能在容差范围内被违反。一个更好的选择是重新规划

\ {eqnarray *}开始x - 10 ^{6}上的y & \组0 \ \ y \ [0, 10] \ {eqnarray *}结束


作为

\ {eqnarray *}开始x - 10 ^ {3} y ' & \组0 \ \ y ' &上的\ [0,10 ^ 4]\ \ \ {eqnarray *}结束


在哪里 <span>$</span>10^{-3} y' = y<span>$</span>.在此设置中,为< span > < /美元跨度> x < span > < / span >美元哪些可能被认为是可行的< span > < / span > -10美元^ {3}< span > < / span >美元,并为原件< span > < / span > y < span >美元< / span >变量是< span > < / span > -10美元^ {9}< span > < / span >美元,这比原来的情况有了明显的改善。