变量

决策变量捕获优化的结果。在一个可行解,计算模型的决策变量的值满足所有约束。一些限制与个人相关的变量(例如,变量范围),而其他捕获变量之间的关系。我们将首先考虑不同类型的决策变量,可以添加到一个Gurobi模型,并与这些相关联的隐式和显式约束变量类型。

在开始之前,我们应该指出数学规划中的一个重要的变量模型:他们的计算解决方案只会满足边界值对公差,也就是说,一个变量可能违反规定范围。数学规划基本上是建立在线性代数和在特定的线性方程组的数值解。这些线性系统是使用有限精度算法解决,这意味着小错误是不可避免的。对于一些模型,大错误是不可避免的;我们将在本节的后面回到这个话题。

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

连续变量

最简单和最不限制可用的变量类型是连续变量。这个变量可以取任何值较低和上限之间。在数学规划,该公约是变量非负除非表示,否则,如果你不显式地为一个变量提供界限,你应该假设下界是0和上界是无限的。

Gurobi api提供了一个象征性的常数可以表明一个绑定是无限的(GRB_INFINITY在C和c++中,GRB.INFINITY在c#、Java和Python)。一个变量可以有无限上界,无限下界(负无穷大),或两者兼而有之。一个变量与无限的称为上下界自由变量。任何约束大于1 e30看作是无限的。

如前所述,变量可能违反他们的公差范围。在变量范围的情况下,相关的公差值FeasibilityTol。可以减少这个公差参数的值,但由于数值错误不可能达到你想要的准确性。

一般整数变量

一般比连续变量约束整数变量。除了尊重指定的上下边界,整数变量也积分值。

由于有限精度算法的局限性,整数变量通常会值不完全积分。的大小允许违反完整性的控制IntFeasTol参数。你可以加强这个参数来减少这些违反完整性的大小,但解决优化问题的成本可能会显著增加。

事实上,现代计算机使用32位值表示整型值的地方一些限制一个积分变量的范围。具体来说,最大的和最小的范围,可以放置在一个整数变量+ / - 2000000000。此外,整数变量与无限边界实际上这些值作为隐式边界。一个解决方案并不被认为是可行的,除非所有整数变量值,满足这些界限。

二元变量

二进制变量是最受约束的变量类型,可以添加到你的模型。一个二进制变量值0或1。

再次,由于有限精度算法的局限性,二进制变量通常会值不完全积分。的大小允许违反完整性的控制IntFeasTol参数。

半连续和Semi-Integer变量

您还可以将半连续或semi-integer变量添加到您的模型。半连续变量属性,它的值为0,或指定的上下边界之间的一个值。semi-integer变量添加了额外的限制,变量也不可或缺的价值。

再一次,这些变量可能违反这些限制公差。在这种情况下,相关的公差是多少IntFeasTol(甚至为半连续变量)。