dimod.binary.BinaryQuadraticModel.add_linear_inequality_constraint#

BinaryQuadraticModel.add_linear_inequality_constraint(terms: Iterable[Tuple[Hashable, int]], lagrange_multiplier: float | floating | integer, label: str, constant: int = 0, lb: int = -9223372036854775808, ub: int = 0, cross_zero: bool = False, penalization_method: Literal['slack', 'unbalanced'] = 'slack') Iterable[Tuple[Hashable, int]][source]#

Add a linear inequality constraint as a quadratic objective.

The linear inequality constraint is of the form: \(lb <= \sum_{i,k} a_{i,k} x_{i,k} + constant <= ub\).

For constraints with fractional coefficients, multiply both sides of the inequality by an appropriate factor of ten to attain or approximate integer coefficients.

Parameters:
  • terms – Values of the \(\sum_{i} a_{i} x_{i}\) term as an \(i\)–length iterable of 2-tuples, (variable, bias), with each tuple constituting a term in the summation.

  • lagrange_multiplier – Weight or penalty strength. The linear constraint is multiplied by this value (which does not appear explicitly in the above equation) when added to the binary quadratic model.

  • label – Prefix for labels of any slack variables used in the added objective.

  • constant – Value of the constant term of the linear constraint.

  • lb – Lower bound for the constraint.

  • ub – Upper bound for the constraint.

  • cross_zero – When True, adds zero to the domain of constraint.

  • penalization_method – Whether to use slack variables or the unbalanced penalization method [1]. (“slack”, “unbalanced”) [1] https://arxiv.org/abs/2211.13914

Returns:

Values of \(\sum_{i} b_{i} slack_{i}\) as an \(i\)–length iterable of 2-tuples, (slack variable, bias), with each tuple constituting a term in the summation.

Return type:

slack_terms