Model.addConstrs()
addConstrs ( genexpr, name="" )
Add multiple constraints to a model using a Python generator expression. Returns a Gurobi tupledict that contains the newly created constraints, indexed by the values generated by the generator expression.
The first argument is a Python generator expression, a special feature
of the Python language that allows you to iterate over a Python
expression. For addConstrs
, the expression should be a valid
Gurobi constraint, and the result will be that a new constraint is
added to the model for each iteration of the generator expression.
To give an example, if x
is a Gurobi variable, then
m.addConstr(x <= 1, name='c0')would add a single linear constraint involving this variable. In contrast, if
x
is a list of Gurobi variables, then
m.addConstrs((x[i] <= 1 for i in range(4)), name='c')would add four constraints to the model. The entire first argument is a generator expression, where the indexing is controlled by the statement
for i in range(4)
, The first constraint that results
from this expression would be named c[0]
, and would involve
variable x[0]
. The second would be named c[1]
, and
would involve variable x[1]
.
Generator expressions can be much more complex than this. They can involve multiple variables and conditional tests. For example, you could do:
m.addConstrs((x[i,j] == 0 for i in range(4) for j in range(4) if i != j), name='c')
Note that if you supply a name argument, the generator expression must be enclosed in parenthesis. This requirement comes from the Python language interpreter.
Arguments:
genexpr: A generator expression, where each iteration produces a constraint.
name: Name pattern for new constraints. The given name will be subscripted by the index of the generator expression (so, for example, c would become c[0], c[1], etc.).
Return value:
A dictionary of Constr objects, indexed by the values specified by the generator expression.
Example usage:
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))