Purpose:
Minimization of an (in general nonlinear) differentiable real function f subject to (in general nonlinear) inequality and equality constraints g, h.
f(x) = min
xÎS
S = {x Î IRn :
h(x) = 0, g(x) ³ 0}
Here g and h are vectorvalued functions of dimension NG and NH.
Bound constraints are integrated in the inequality constraints g. These might be identified by a special indicator (see GUNIT below) in order to simplify calculation of its gradients and also in order to allow a special treatment, known as the gradient projection technique. Also fixed variables might be introduced via h in the same manner.
The method implemented is a sequential equality constrained quadratic programming method (with an active set technique) with an alternative usage of a fully regularized mixed constrained subproblem in case of nonregular constraints (i.e. linear dependent gradients in the "working set"). It uses a slightly modified version of the Pantoja-Mayne update for the Hessian of the Lagrangian, variable dual scaling and an improved Armijo-type stepsize algorithm. Bounds on the variables are treated in a gradientprojection like fashion. Details may be found in the following two papers :
P. Spellucci: An SQP method for general nonlinear programs using only equality constrained subproblems. Math. Prog. 82, (1998), 413-448
P. Spellucci: A new technique for inconsistent problems in the SQP method. Math. Meth. of Oper. Res. 47, (1998), 355-400. (published by Physica Verlag, Heidelberg, Germany).
The software is written in ANSI-F77 with MILSTD 1753 extensions with the exception of two routines O8CPU() for giving the processes cpu-time and O8TIDA() for writing the run's date and starting time, which in the present implementation use the unix-system-call gettimeofday and times. These usually can be found in the C-library (include gettimeofday.c in compiling if not automatic for your FORTRAN-callscript) The user should replace (or remove) these calls for other systems. The corresponding routines are to be found in the file sysdepen.f. The user may replace this by dummy.f from the distribution in the simplest case.
Since the algorithm makes no use of sparse matrix techniques, its proper use will be limited to small and medium sized problems with dimensions up to 300 (for the number of unknowns) say. The number of inequality constraints however may be much larger. (E.g. the code did solve the Ecker-Kupferschmid-Marin "robot-design" examples in SIJSC 15, 1994, with n=51 unknowns and m=3618 inequalities successfully within 400-900 sec's depending on the variation of the problem on an HP9000/735). The maximal allowed dimensions are set in the file O8PARA.INC. The distribution comes with NX=300, NRESM=300.
The code has been successfully tested on the HP9000/7xy , SGI , SUN and DEC ALPHA, INTEL PENTIUM (under LINUX) systems but should run on any UNIX-V system without any changes. It has been designed such that changes for other systems are quite simple.
In order to change the maximal possible dimensions, reedit the
PARAMETER (NX=.....)
line of O8PARA.INC and recompile the code.
In order to use the code on CRAY-like systems, reedit donlp2.f, and
the include-files (files ending with *.INC) changing globally DOUBLE PRECISION
to
REAL
and the double precision constants which are assembled in the
PARAMETER
-statement of O8CONS.INC to real format.