高级用户扩展

高级用户扩展

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

< span > < / span > \美元开始10 ^{数组}{rcl} {7} 10 x + y & \ leq& 10 \ \ x + 10 ^ 4 z \ leq&10 ^ 3 \ \ x, y, z \ geq&0 \{数组}< span > < / span >美元
在这个例子中,矩阵系数的范围是 < span > < /美元跨度> [10 ^ {7},10 ^ 4)< span > < / span >美元.如果我们把它们相乘< span > < /美元跨度> x < span > < / span >美元系数的< span > < / span > 10 ^ 5美元美元< span > < / span >,并将第二个约束中的所有系数除以< span > < / span > 10 ^ 3美元美元< span > < / span >,我们得到:
< span > < / span > \美元开始10 ^{数组}{rcl} {2} x ' + 10 y & 10 \ \ \ leq& 10 ^ 2 x + 10 z \ leq&1 \ \ x, y, z \ geq&0 \结束美元{数组}< span > < / span >
在哪里< span > < / span > x = 10 ^ 5美元美元x ' < span > < / span >.得到的矩阵系数有一个范围 < span > < /美元跨度> [10 ^ {2},10 ^ 2)< span > < / span >美元.关键在于同时缩放列和行,使系数矩阵的范围更小。

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