This code implements a sequential quadratic programming (SQP) algorithm for nonlinearly constrained gradientbased optimization, and was originally written by Dieter Kraft and described in: Dieter Kraft, "A software package for sequential quadratic programming", Technical Report DFVLRFB 8828, Institut für Dynamik der Flugsysteme, Oberpfaffenhofen, July 1988. Dieter Kraft, "Algorithm 733: TOMP–Fortran modules for optimal control calculations," ACM Transactions on Mathematical Software, vol. 20, no. 3, pp. 262281 (1994). (I believe that SLSQP stands for something like Sequential LeastSquares Quadratic Programming, because the problem is treated as a sequence of constrained leastsquared problems, but such a leastsquares problem is equivalent to a QP.) The actual Fortran file was obtained from the SciPy project, who are responsible for obtaining permission to distribute it under a freesoftware (3clause BSD) license (see the permission email from ACM at the top of slsqp.c, and also projects.scipy.org/scipy/ticket/1056). The code was modified for inclusion in NLopt by S. G. Johnson in 2010, with the following changes. The code was converted to C and manually cleaned up. It was modified to be reentrant, preserving the reversecommunication interface but explicitly saving the state in a data structure. The reversecommunication interface was wrapped with an NLoptstyle inteface, with NLopt stopping conditions. The inexact line search was modified to evaluate the functions including gradients for the first step, since this removes the need to evaluate the function+gradient a second time for the same point in the common case when the inexact line search concludes after a single step, since NLopt's interface combines the function and gradient computations. Since roundoff errors sometimes pushed SLSQP's parameters slightly outside the bound constraints (not allowed by NLopt), we added checks to force the parameters within the bounds. Fixed a bug in LSEI (use of uninitialized variables) for the case where the number of equality constraints equals the dimension of the problem. The LSQ subroutine was modified to handle infinite lower/upper bounds (in which case those constraints are omitted). The exact linesearch option is currently disabled; if we want to reenable this (although exact linesearch is usually overkill in these kinds of algorithms), we plan to do so using a recursive call to NLopt. (This will allow a userspecified linesearch algorithm to be used, and will allow the gradient to be exploited in the exact line search, in contrast to the routine provided with SLSQP.)
Source
BayesOpt / nlopt / slsqp /
Filename  Size  Date modified  Message 

..  
2.4 KB

…  
2.6 KB

…  
80.0 KB

…  
443 B

… 