On Mar 8, 2011, at 4:29 AM, [email protected] wrote:
Tracing through the code, this appears to be a problem in the
original
SLSQP software. SLSQP works by minimizing an approximate quadratic
subproblem at each step. At the first step of Alexander's 1d test
case,
SLSQP is minimizing:
min_x (x - s)^2
-1 <= x <= 1
I wonder whether this is really the problem actually solved by the
method. I must admit, I have not checked the code, and I am not sure
about SLSQP. The original problem is
min_x f(x) = -s * x
g(x) = (x-1, -x-1)^T <= 0.
In a general SQP method, one would then solve
min_d -s * d
You need to realize that SLSQP is a quasi-Newton method, not a Newton
method: it is sequential quadratic programming with an *approximate*
Hessian (2nd derivative) that is built up iteratively.
That is, at each step, it solves a quadratic approximation of the
original objective, where the linear term is the gradient and the
quadratic term is an approximate Hessian. The Hessian is constructed
from BFGS updates, based on the gradients and function values at
subsequent steps, and like any BFGS method it only approaches the true
Hessian in the limit of many iterations near a minimum.
In particular, for the very first step the Hessian is initialized to
the identity matrix (divided by 2), hence the (x - s)^2 objective.
This is a typical choice for quasi-Newton methods. (Hence the initial
steps should depend on the magnitude of the gradient.)
My actual application is highly non-linear, 50-100 dimensional, and
unfortunately too complex to do any rescaling. While LBFGS works, it
is not really an option, since it needs too many gradient
evaluations. SQP is the only chance to get results within reasonable
times (less than 12 hours).
SLSQP is a BFGS method. The main differences between it and LBFGS are:
1) it uses the original BFGS method with dense matrices, rather than
the LBFGS sparse/low-rank/low-storage factorizations.
2) SLSQP handles nonlinear constrants (its subproblems are general
QPs: quadratic objectives, linear constraints) whereas LBFGS only
handles bound constraints.
So, if you have no nonlinear constraints I'm not sure why SLSQP would
converge significantly differently than any of the other quasi-Newton
methods.
Steven
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss