Model.addConstrs ()


Model.addConstrs ()

addConstrs(generator, name="")

使用Python生成器表达式向模型添加多个约束。返回一个Gurobitupledict它包含新创建的约束,并根据生成器表达式生成的值进行索引。

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

举个例子,如果x是一个古罗比变量,那么

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

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

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

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

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

注意,如果提供name参数,则生成器表达式必须用括号括起来。这个要求来自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))

警告
一个约束只能有一个比较操作符。而1 <= x + y <= 2可能看起来是一个有效的约束,addConstr不会接受它。