The SQPlab (pronounce S-Q-P-lab) software presented in these pages is a modest Matlab implementation of the SQP algorithm for solving constrained optimization problems. The functions defining the problem can be nonlinear and nonconvex, but must be differentiable.

A particular attention will  be paid to problems with an optimal control structure.

SQP stands for Sequential Quadratic Programming, a method invented in the mid-seventies, which can be viewed as the Newton approach applied to the optimality conditions of the optimization problem. Each iteration of the SQP algorithm requires finding a solution to a quadratic program  (QP). This is a simpler optimization problem, which has a quadratic objective and linear constraints. This QP is still difficult to solve however; in particular it is NP-hard when the quadratic objective is nonconvex. On the other hand, as a Newton method, the SQP algorithm converges very rapidly, meaning that it requires few iterations (hence QP solves) to find an approximate solution with a good precision (this is particularly true when second derivatives are used). Therefore, one can say that

the SQP algorithm is an appropriate approach when the evaluation of the functions defining the nonlinear optimization problem, and their derivatives, is time consuming.

Indeed, in this case, the time spent in finding the solution to the QP's is counterbalanced by the time spent in evaluating nonlinear functions. Since the functions are evaluated once at each iteration, one can then benefit from the small number of iterations required by the method. If the rule above does not apply, a nonlinear interior point algorithm can do better.

The SQPlab piece of software has actually been designed to accompany the book Numerical Optimization: Theoretical and Practical Aspects  (2006, second edition), by J.F. Bonnans, J.Ch. Gilbert, C. Lemaréchal, and C.A. Sagastizábal, Springer. It is the result of the Hanging Chain Project, during which the software is developped and tested on a practical problem (see the sections 13.8, 14.7, 15.4, 17.4, and 18.4 of the book).

SQPlab has been interfaced with ooDACE (2014).