NLPIP is a Fortran code for
solving large-scale constrained nonlinear
optimization problems, i.e., problems with a large number of variables and
sparsity patterns in the Jacobian matrix of the constraints.
It is assumed that all problem functions are continuously differentiable.
Numerical Method:
NLPIP applies a combined SQP-IPM
strategy. Depending on the preferences of the user, either a standard SQP
method is used where the quadratic programming subproblem is solved by an
interior point method, or a nonlinear interior point method is executed.
Moreover, any combination in between is possible. BFGS updates use the
limited memory method, and three different merit functions are available.
Alternatively, second derivatives can be provided if available. In any case,
the primal-dual system of linear equations possesses the same structure and
must be solved by a user-provided routine depending on the sparsity patterns
of the Jacobian matrix of the constraints.
Program Organization:
NLPIP is written in double precision FORTRAN and organized in form
of a subroutine. Nonlinear problem functions and analytical gradients
must be provided by the user within the calling program by reverse
communication.
Nonlinear problem functions and corresponding gradients
must be provided by the user within the calling program by reverse
communication. Depending on a flag, either new function values (IFAIL=-1) or
new gradient values (IFAIL=-2) must be computed and NLPIP is restarted. For
solving the internal system of linear equations, the so-called primal-dual
system, a special subroutine with name LINSLV must be implemented by the
user. Frames for dense linear algebra (Lapack) and a sparse solver (PARDISO)
are included. LINSLV is called from NLPIP with different flags for
factorization, matrix times vector products, or retrieving solution vectors
with different right-hand sides.
Special Features:
upper and lower bounds on the variables handled separately
interfaces (LINSLV) for PARDISO, MUMPS and LAPACK included
reverse communication
bounds and linear constraints remain satisfied
robust and efficient implementation
complex active-set strategy analogously to the one
implemented in NLPQLB