Model.addConstrs ()


Model.addConstrs ()

addConstrs(生成器,name="")

使用Python生成器表达式向模型添加多个约束。返回一个Gurobitupledict包含新创建的约束,由生成器表达式生成的值作为索引。

第一个论点addConstrs是一个Python生成器表达式,这是Python语言的一个特殊特性,允许您迭代Python表达式。在本例中,Python表达式将是一个Gurobi约束,生成器表达式将提供插入该约束的值。对于生成器表达式的每次迭代,一个新的Gurobi约束被添加到模型中。

举个例子,如果x是古罗比变量吗

m.addConstr(x <= 1, name='c0')
会添加一个包含这个变量的线性约束。相反,如果x是一个Gurobi变量列表,那么
m. addcors ((x[i] <= 1 for i in range(4)), name='c')
将向模型添加四个约束条件。整个第一个参数是一个生成器表达式,其中的索引由语句控制对于范围(4)中的I,由该表达式产生的第一个约束将被命名c [0],会涉及到变量x [0].第二个将被命名c [1],会涉及到变量x [1]

生成器表达式可以比这复杂得多。它们可以包含多个变量和条件测试。例如,你可以这样做:

m. adds ((x[i,j] == 0 for i in range(4)) for j in range(4) if i != j, name='c')

一个限制addConstrs在生成器表达式上的位置是,每个变量必须总是接受一个标量值(int浮动字符串,……)。因此,For I in [1,2.0, 'a', 'bc']是可以的,但对于[(1,2),[1,2,3]]中的I不是。

该方法可用于向模型添加线性约束、二次约束或一般约束。指的是TempConstrmanbet体育手机客户端有关所有可以添加的不同约束类型的更多信息的文档。

请注意,如果提供名称参数,则生成器表达式必须括在括号中。这个要求来自Python语言解释器。

参数:

发电机:生成器表达式,每次迭代都会生成一个约束。

的名字:新约束的命名模式。给定的名称会被生成器表达式的索引下标,所以如果索引是整数,c将成为c [0]c [1]等。请注意,生成的名称将存储为ASCII字符串,因此应该避免使用包含非ASCII字符的名称。此外,强烈禁止使用包含空格的名称,因为它们不能写入LP格式文件。

返回值:

一个字典的若干对象,由生成器表达式指定的值索引。

使用示例:

model.addConstrs (x。Sum (i, '*') <= capacity[i] for i in range(5)) model。addConstrs(x[i] + x[j] <= 1 for i in range(5) for j in range(5)) model.addConstrs(x[i]*x[i] + y[i]*y[i] <= 1 for i in range(5)) model.addConstrs(x.sum(i, '*') == [0, 2] for i in [1, 2, 4]) model.addConstrs(z[i] == max_(x[i], y[i]) for i in range(5)) model.addConstrs((x[i] == 1) >> (y[i] + z[i] <= 5) for i in range(5))