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