Model.addGenConstrIndicator ()


Model.addGenConstrIndicator ()

addGenConstrIndicator(binvar, binval, lhs, sense=None, rhs=None, name="")

添加一个新的通用类型约束伽马射线爆发。GENCONSTR_INDICATOR一个模型。

一个指标约束<span>$</span>z = f \right tarrow a^Tx \leq b<span>$</span>表示如果二进制指示符变量< span > < / span > z < span >美元< / span >等于< span > < / span > f < span >美元< / span >,在那里< span > < /美元跨度> f \ \ {0,1 \} < span > < / span >美元,则为线性约束< span > < / span >美元^ Tx \ leq b < span > < / span >美元应该持有。另一方面,如果< span > < / span > z =美元行进< span > < / span >美元,则可能违反线性约束。线性约束的意义也可以指定为< span > < / span > = < span >美元< / span >< span > < /美元跨度> \组< span > < / span >美元

注意,指示器变量< span > < / span > z < span >美元< / span >的约束将被迫是二进制的,与它是如何创建的无关。

您还可以使用特殊的重载语法添加指示器约束。有关详细信息,请参阅下面的示例。

参数:

binvar (Var):二进制指示变量。

binval(布尔):强制满足线性约束的二进制指示变量的值。

lhs (float, Var, LinExpr,或TempConstr):指示器触发的线性约束的左侧表达式。可以是常数a吗Var,或者一个LinExpr.或者,可以使用临时约束对象来定义由指示符触发的线性约束。临时约束对象是使用重载比较运算符创建的。看到TempConstr为更多的信息。在这种情况下,“sense”和“rhs”参数必须保持其默认值没有一个

(字符):对线性约束的感知。选项是伽马射线爆发。LESS_EQUAL伽马射线爆发。平等的,或伽马射线爆发。GREATER_EQUAL

园艺学会(浮动):线性约束的右侧值。

名称(字符串,可选):新的通用约束的名称。请注意,的名字将被存储为ASCII字符串。因此,一个名字就像“一个< span > < /美元跨度> {\ rightarrow} < span > < / span >美元B”会产生错误,因为'< span > < /美元跨度> {\ rightarrow} < span > < / span >美元'不能用ASCII字符表示。还请注意,强烈不鼓励包含空格的名称,因为它们不能写入LP格式文件。

使用示例:

# x7 = 1 -> x1 + 2 x3 + x4 = 1模型。addGenConstrIndicator(x7, True, x1 + 2*x2 + x4, GRB.EQUAL, 1.0) # alternative form model.addGenConstrIndicator(x7, True, x1 + 2*x2 + x4 == 1.0) # overloaded form model.addConstr((x7 == 1) >> (x1 + 2*x2 + x4 == 1.0))