变量


变量

决策变量捕获优化的结果。在可行解中,决策变量的计算值满足模型的所有约束条件。其中一些约束与单个变量相关(例如,变量边界),而另一些则捕获变量之间的关系。我们首先考虑可以添加到Gurobi模型的不同类型的决策变量,以及与这些变量类型相关的隐式和显式约束。

在开始之前,我们应该指出关于数学规划模型中的变量的一件重要的事情:它们的计算解的值将只满足边界对公差,意味着变量可能会违反其规定的界限。数学规划基本上是建立在线性代数的基础上的,特别是线性方程组的数值解。这些线性系统采用有限精度算法求解,这意味着小误差是不可避免的。对于某些模型来说,大的误差也是不可避免的;我们将在本节稍后回到这个主题。

可用的变量类型有连续一般整数二进制半连续,semi-integer

连续变量

可用变量类型中最简单、约束最小的是连续变量。这个变量可以取其上界和下界之间的任何值。在数学编程中,除非另有说明,否则变量都是非负的,所以如果你没有明确地为一个变量提供边界,你应该假设下界是0,上界是无限的。

Gurobi api提供了一个符号常量,允许你表示一个边界是无限的(GRB_INFINITYC语言和c++语言,伽马射线爆发。∞c#, Java和Python)。一个变量可以有一个无限大的上界,一个无限大的下界(负无穷),或者两者兼有。具有无限上界和下界的变量称为A自由变量.任何大于1e30的边界被视为无限大。

如前所述,变量可能会因容差而违反它们的界限。对于可变边界,相关的容差值为FeasibilityTol.您可以减少这个公差参数的值,但由于数值误差,可能无法达到您想要的精度。

一般整数变量

一般整数变量比连续变量约束更大。除了遵循指定的上下边界外,整型变量也接受整型值。

由于有限精度算法的限制,整型变量通常取的值不是完全整数。允许违反完整性的大小由IntFeasTol参数。您可以收紧该参数以减少这些完整性违规的程度,但解决优化问题的成本可能会因此显著增加。

现代计算机使用32位值表示整数值,这一事实对整型变量的范围造成了一些限制。具体来说,整数变量的最大和最小界限是+/- 2,000,000,000。此外,具有无限边界的整数变量实际上有这些值作为它们的隐式边界。除非所有整数变量的值都满足这些边界,否则一个解是不可行的。

二元变量

二元变量是可以添加到模型中的最受约束的变量类型。二进制变量的值为0或1。

同样,由于有限精度算法的限制,二进制变量通常会取不完全是整数的值。允许违反完整性的大小由IntFeasTol参数。

半连续和半整数变量

还可以向模型中添加半连续或半整数变量。半连续变量具有这样的属性:它的值为0,或者在指定的上界和下界之间。半整型变量增加了额外的限制,即该变量也接受整型值。

同样,这些变量可能会违反这些限制,直到允许范围。在这种情况下,相关的公差为IntFeasTol(即使是半连续变量)。