scipy.optimize.

LinearConstraint#

class scipy.optimize.LinearConstraint(A, lb=-inf, ub=inf, keep_feasible=False)[source]#

Linear constraint on the variables.

The constraint has the general inequality form:

lb <= A.dot(x) <= ub

Here the vector of independent variables x is passed as ndarray of shape (n,) and the matrix A has shape (m, n).

It is possible to use equal bounds to represent an equality constraint or infinite bounds to represent a one-sided constraint.

Parameters:
A{array_like, sparse array}, shape (m, n)

Matrix defining the constraint.

lb, ubdense array_like, optional

Lower and upper limits on the constraint. Each array must have the shape (m,) or be a scalar, in the latter case a bound will be the same for all components of the constraint. Use np.inf with an appropriate sign to specify a one-sided constraint. Set components of lb and ub equal to represent an equality constraint. Note that you can mix constraints of different types: interval, one-sided or equality, by setting different components of lb and ub as necessary. Defaults to lb = -np.inf and ub = np.inf (no limits).

keep_feasibledense array_like of bool, optional

Whether to keep the constraint components feasible throughout iterations. A single value sets this property for all components. Default is False. Has no effect for equality constraints. Note that finite difference approximation of the Jacobian may still violate the constraint; it is recommended to provide an analytical Jacobian function to handle this case.

Methods

residual(x)

Calculate the residual between the constraint function and the limits.

Notes

Whilst LinearConstraint can be used to specify constraints for many different optimizers, the class is not responsible for enforcing those constraints, that is done by the individual minimizer. Importantly, the keep_feasible keyword is only ever used within the trust-constr optimizer, the keep_feasible keyword is not used by other minimize methods. The other methods may, or may not, keep solutions strictly feasible during operation.