高级用户扩展

高级用户扩展

在前几节中,我们介绍了一些简单的策略来限制变量边界、约束右边、目标值和约束矩阵系数的范围。然而,也有可能发生这样的情况:当约束或变量缩放时,一些约束系数变得太小。注意,Gurobi将处理任何约束系数的绝对值< span > < / span > 10美元^ {-13}< span > < / span >美元为零。考虑以下例子:

\ {eqnarray *}开始10 ^ {7}10 x + y & \ leq& 10 \ \ x + 10 ^ 4 z \ leq&10 ^ 3 \ \ x, y, z \ geq&0 \ {eqnarray *}


在这个例子中,矩阵系数的范围是 < span > < /美元跨度> [10 ^ {7},10 ^ 4)< span > < / span >美元.如果我们乘以< span > < /美元跨度> x < span > < / span >美元系数的< span > < / span > 10 ^ 5美元美元< span > < / span >,第二个约束条件中的所有系数除以< span > < / span > 10 ^ 3美元美元< span > < / span >,我们得到:

\开始10 ^ {eqnarray *} {2} x ' + 10 y & 10 \ \ \ leq& 10 ^ 2 x + 10 z \ leq&1 \ \ x, y, z \ geq&0 \ {eqnarray *}结束


在哪里< span > < / span > x = 10 ^ 5美元美元x ' < span > < / span >.得到的矩阵系数的范围为 < span > < /美元跨度> [10 ^ {2},10 ^ 2)< span > < / span >美元.本质上,诀窍是同时缩放一列和一行,使系数矩阵的范围更小。

我们建议缩放矩阵系数,使它们的范围包含在6个数量级或更小的范围内< span > < /美元跨度> [10 ^ {3},10 ^ {6}]< span > < / span >美元