# `optimize.slsqp`¶

This module implements the Sequential Least SQuares Programming optimization algorithm (SLSQP), originally developed by Dieter Kraft. See http://www.netlib.org/toms/733

## Module Contents¶

### Functions¶

 `approx_jacobian`(x,func,epsilon,*args) Approximate the Jacobian matrix of a callable function. `fmin_slsqp`(func,x0,eqcons=tuple,f_eqcons=None,ieqcons=tuple,f_ieqcons=None,bounds=tuple,fprime=None,fprime_eqcons=None,fprime_ieqcons=None,args=tuple,iter=100,acc=1e-06,iprint=1,disp=None,full_output=0,epsilon=_epsilon,callback=None) Minimize a function using Sequential Least SQuares Programming `_minimize_slsqp`(func,x0,args=tuple,jac=None,bounds=None,constraints=tuple,maxiter=100,ftol=1e-06,iprint=1,disp=False,eps=_epsilon,callback=None,**unknown_options) Minimize a scalar function of one or more variables using Sequential `fun`(x,r=list) Objective function `feqcon`(x,b=1) Equality constraint `jeqcon`(x,b=1) Jacobian of equality constraint `fieqcon`(x,c=10) Inequality constraint `jieqcon`(x,c=10) Jacobian of Inequality constraint
`approx_jacobian`(x, func, epsilon, *args)

Approximate the Jacobian matrix of a callable function.

x : array_like
The state vector at which to compute the Jacobian matrix.
func : callable f(x,*args)
The vector-valued function.
epsilon : float
The perturbation used to determine the partial derivatives.
args : sequence

An array of dimensions `(lenf, lenx)` where `lenf` is the length of the outputs of func, and `lenx` is the number of elements in x.

The approximation is done using forward differences.

`fmin_slsqp`(func, x0, eqcons=tuple, f_eqcons=None, ieqcons=tuple, f_ieqcons=None, bounds=tuple, fprime=None, fprime_eqcons=None, fprime_ieqcons=None, args=tuple, iter=100, acc=1e-06, iprint=1, disp=None, full_output=0, epsilon=_epsilon, callback=None)

Minimize a function using Sequential Least SQuares Programming

Python interface function for the SLSQP Optimization subroutine originally implemented by Dieter Kraft.

func : callable f(x,*args)
Objective function. Must return a scalar.
x0 : 1-D ndarray of float
Initial guess for the independent variable(s).
eqcons : list, optional
A list of functions of length n such that eqcons[j](x,*args) == 0.0 in a successfully optimized problem.
f_eqcons : callable f(x,*args), optional
Returns a 1-D array in which each element must equal 0.0 in a successfully optimized problem. If f_eqcons is specified, eqcons is ignored.
ieqcons : list, optional
A list of functions of length n such that ieqcons[j](x,*args) >= 0.0 in a successfully optimized problem.
f_ieqcons : callable f(x,*args), optional
Returns a 1-D ndarray in which each element must be greater or equal to 0.0 in a successfully optimized problem. If f_ieqcons is specified, ieqcons is ignored.
bounds : list, optional
A list of tuples specifying the lower and upper bound for each independent variable [(xl0, xu0),(xl1, xu1),…] Infinite values will be interpreted as large floating values.
fprime : callable f(x,*args), optional
A function that evaluates the partial derivatives of func.
fprime_eqcons : callable f(x,*args), optional
A function of the form f(x, *args) that returns the m by n array of equality constraint normals. If not provided, the normals will be approximated. The array returned by fprime_eqcons should be sized as ( len(eqcons), len(x0) ).
fprime_ieqcons : callable f(x,*args), optional
A function of the form f(x, *args) that returns the m by n array of inequality constraint normals. If not provided, the normals will be approximated. The array returned by fprime_ieqcons should be sized as ( len(ieqcons), len(x0) ).
args : sequence, optional
Additional arguments passed to func and fprime.
iter : int, optional
The maximum number of iterations.
acc : float, optional
Requested accuracy.
iprint : int, optional

The verbosity of fmin_slsqp :

• iprint <= 0 : Silent operation
• iprint == 1 : Print summary upon completion (default)
• iprint >= 2 : Print status of each iterate and summary
disp : int, optional
Over-rides the iprint interface (preferred).
full_output : bool, optional
If False, return only the minimizer of func (default). Otherwise, output final objective function and summary information.
epsilon : float, optional
The step size for finite-difference derivative estimates.
callback : callable, optional
Called after each iteration, as `callback(x)`, where `x` is the current parameter vector.
out : ndarray of float
The final minimizer of func.
fx : ndarray of float, if full_output is true
The final value of the objective function.
its : int, if full_output is true
The number of iterations.
imode : int, if full_output is true
The exit mode from the optimizer (see below).
smode : string, if full_output is true
Message describing the exit mode from the optimizer.
minimize: Interface to minimization algorithms for multivariate
functions. See the ‘SLSQP’ method in particular.

Exit modes are defined as follows

```-1 : Gradient evaluation required (g & a)
0 : Optimization terminated successfully.
1 : Function evaluation required (f & c)
2 : More equality constraints than independent variables
3 : More than 3*n iterations in LSQ subproblem
4 : Inequality constraints incompatible
5 : Singular matrix E in LSQ subproblem
6 : Singular matrix C in LSQ subproblem
7 : Rank-deficient equality constraint subproblem HFTI
8 : Positive directional derivative for linesearch
9 : Iteration limit exceeded
```

Examples are given in the tutorial.

`_minimize_slsqp`(func, x0, args=tuple, jac=None, bounds=None, constraints=tuple, maxiter=100, ftol=1e-06, iprint=1, disp=False, eps=_epsilon, callback=None, **unknown_options)

Minimize a scalar function of one or more variables using Sequential Least SQuares Programming (SLSQP).

ftol : float
Precision goal for the value of f in the stopping criterion.
eps : float
Step size used for numerical approximation of the Jacobian.
disp : bool
Set to True to print convergence messages. If False, verbosity is ignored and set to 0.
maxiter : int
Maximum number of iterations.
`fun`(x, r=list)

Objective function

`feqcon`(x, b=1)

Equality constraint

`jeqcon`(x, b=1)

Jacobian of equality constraint

`fieqcon`(x, c=10)

Inequality constraint

`jieqcon`(x, c=10)

Jacobian of Inequality constraint