addConstr ( lhs, sense=None, rhs=None, name="" )

Add a constraint to a model.

Note that this method also accepts a TempConstr as its first argument (with the constraint name as its second argument). This allows you to use operator overloading to create a variety of different constraint types. See TempConstr for more information.


lhs: Left-hand side for the new constraint. Can be a constant, a Var, a LinExpr, a QuadExpr, or a TempConstr.

sense: Sense for the new constraint (GRB.LESS_EQUAL, GRB.EQUAL, or GRB.GREATER_EQUAL).

rhs: Right-hand side for the new constraint. Can be a constant, a Var, a LinExpr, or a QuadExpr.

name: Name for new constraint. Note that name will be stored as an ASCII string. Thus, a name like 'A<span>$</span>{\rightarrow}<span>$</span>B' will produce an error, because '<span>$</span>{\rightarrow}<span>$</span>' can not be represented as an ASCII character. Note also that names that contain spaces are strongly discouraged, because they can't be written to LP format files.

Return value:

New constraint object.

Example usage:

  model.addConstr(x + 2*y, GRB.EQUAL, 3*z, "c0")
  model.addConstr(x + y <= 2.0, "c1")
  model.addConstr(x*x + y*y <= 4.0, "qc0")
  model.addConstr(x + y + z == [1, 2], "rgc0")
  model.addConstr(z == and_(x, y, w), "gc0")
  model.addConstr(z == min_(x, y), "gc1")
  model.addConstr((w == 1) >> (x + y <= 1), "ic0")

A constraint can only have a single comparison operator.
While 1 <= x + y <= 2 or 1 <= x[i] + y[i] <= 2 for i in range(3)
may look like valid constraints, our Python API won't interpret them as they were intended, which will almost
certainly result in unexpected behavior.