Sequential Linear Programming (SLP) with Trust Region (TR) and Sequential Quadratic Programming (SQP) with Line Search or TR Strategy


Updated 11 Oct 2020

View License

Solve constrained, nonlinear, parameter optimization problems using sequential linear programming with trust region strategy (slp_trust), sequential quadratic programming with trust region strategy (sqp_trust), or sequential quadratic programming with line search (sqp), similar to fmincon in the Optimization Toolbox. SQP is a second-order method, following Schittkowski's NLPQL Fortran algorithm. SLP is a first-order method, but may be more efficient for large numbers of design variables. They are implemented using the original calling sequence of the obsolete MATLAB constr.m function in Version 1 of the optim toolbox, but may alternatively accept the problem data structure used by fmincon as an input argument. The original calling sequence had the advantage that one user function computed the objective and constraint values together, with a separate function for their gradients when finite differences were not used.

Complex-step derivatives, which can be accurate to machine precision, are a feature of sqp, slp_trust, and sqp_trust, in place of finite difference derivatives, when the user does not supply a function that computes the derivatives.

Compatible with Octave (MATLAB-compatible GNU Scientific Programming Language) <>.

Capt. Mark Spillman (USAF) wrote the original sqp.m code with me at AFIT.
Blake M. Van Winkle is gratefully acknowledged for initial Octave-compatible code.

Cite As

Robert Canfield (2023). slp_sqp (, MATLAB Central File Exchange. Retrieved .

Canfield, Robert A. “Quadratic Multipoint Exponential Approximation: Surrogate Model for Large-Scale Optimization.” Advances in Structural and Multidisciplinary Optimization, Springer International Publishing, 2017, pp. 648–61, doi:10.1007/978-3-319-67988-4_49.

View more styles

Schittkowski, K. “NLPQL: A Fortran Subroutine Solving Constrained Nonlinear Programming Problems.” Annals of Operations Research, vol. 5, no. 2, Springer Science and Business Media LLC, June 1986, pp. 485–500, doi:10.1007/bf02022087.

View more styles
MATLAB Release Compatibility
Created with R2019b
Compatible with R2014b to R2019b
Platform Compatibility
Windows macOS Linux
Find more on Quadratic Programming and Cone Programming in Help Center and MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

OutputPlotFcnsExampleOctave tested. sqp returns Best for all termination criteria. sao_trust handles bounds-only problems again.


Octave compatibility, introduced in 1.4, streamlined in 1.4.1


MultiPoint Exponential Approximation (MPEA). Canfield, R. A. "Quadratic Multipoint Exponential Approximation: Surrogate Model for Large-Scale Optimization," 12th World Congress of Structural and Multidisciplinary Optimization (WCSMO12), June 2017

Trust region filter is new default for sip_trust. sqp handles quadprog error return better.
Trust region filter is new default for sip_trust. sqp handles quadprog error return better.

Compatible with R2016b Optimization Toolbox version 7.5 optimoptions function.

Adds trust region filter. [Nocedal and Wright, Numerical Optimization, 2006] Algorithms 4.1, 15.1. See also [Fletcher and Leafier, Mathematical Programming Vol. 91, No. 2, 2002] doi: 10.1007/s101070100244

Set options.TrustRegion='TRAM' instead of 'on' or 'off' in sip_trust to exercise variable move limit reduction and expansion. Loosely implements trust region approximation method: Wujek, B. A., and Renaud, J. E., AIAA J., 1988.

Removed .git folder
Removed .git folder