Inheritance diagram for NLPQLPOptimizer:

Public Member Functions | |
| NLPQLPOptimizer (Model &model) | |
| standard constructor | |
| NLPQLPOptimizer (NoDBBaseConstructor, Model &model) | |
| alternate constructor | |
| ~NLPQLPOptimizer () | |
| destructor | |
| void | find_optimum () |
| Redefines the run virtual function for the optimizer branch. | |
Protected Member Functions | |
| void | derived_pre_run () |
| performs run-time set up | |
Private Member Functions | |
| void | initialize () |
| Shared constructor code. | |
| void | allocate_workspace () |
| Allocates workspace for the optimizer. | |
| void | deallocate_workspace () |
| Releases workspace memory. | |
| void | allocate_constraints () |
| Allocates constraint mappings. | |
Private Attributes | |
| int | L |
| the serial version by setting L=1. | |
| int | numEqConstraints |
| numEqConstraints : Number of equality constraints. | |
| int | MMAX |
| MMAX must be at least one and greater or equal to M. | |
| int | N |
| N : Number of optimization variables. | |
| int | NMAX |
| than N. | |
| int | MNN2 |
| MNN2 : Must be equal to M+N+N+2. | |
| double * | X |
| function values should be computed simultaneously. | |
| double * | F |
| values to be computed from L iterates stored in X. | |
| double * | G |
| function values to be computed from L iterates stored in X. | |
| double * | DF |
| of F to compute DF. | |
| double * | DG |
| has to be equal to MMAX. | |
| double * | U |
| inequality constraints should be nonnegative. | |
| double * | C |
| to NMAX. | |
| double * | D |
| array D. | |
| double | ACC |
| than the accuracy by which gradients are computed. | |
| double | ACCQP |
| by NLPQLP and subsequently multiplied by 1.0D+4. | |
| double | STPMIN |
| by STPMIN**(1/L-1). If STPMIN<=0, then STPMIN=ACC is used. | |
| int | MAXFUN |
| than 50. | |
| int | MAXIT |
| gradients (e.g. 100). | |
| int | MAX_NM |
| MAX_NM=0, monotone line search is performed. | |
| double | TOL_NM |
| non-negative (e.g. 0.1). | |
| int | IPRINT |
| values are displayed during the line search. | |
| int | MODE |
| function in C and D in form of an LDL decomposition. | |
| int | IOUT |
| write-statements start with 'WRITE(IOUT,... '. | |
| int | IFAIL |
| constraint. | |
| double * | WA |
| WA(LWA) : WA is a real working array of length LWA. | |
| int | LWA |
| LWA : LWA value extracted from NLPQLP20.f. | |
| int * | KWA |
| KWA(LKWA) : The user has to provide working space for an integer array. | |
| int | LKWA |
| LKWA : LKWA should be at least N+10. | |
| int * | ACTIVE |
| ACTIVE(J)=.TRUE., J=1,...,M. | |
| int | LACTIVE |
| least 2*M+10. | |
| int | LQL |
| contains only an upper triangular factor. | |
| int | numNlpqlConstr |
| total number of constraints seen by NLPQL | |
| SizetList | nonlinIneqConMappingIndices |
| constraints used in computing the corresponding NLPQL constraints. | |
| RealList | nonlinIneqConMappingMultipliers |
| constraints to the corresponding NLPQL constraints. | |
| RealList | nonlinIneqConMappingOffsets |
| constraints to the corresponding NLPQL constraints. | |
| SizetList | linIneqConMappingIndices |
| constraints used in computing the corresponding NLPQL constraints. | |
| RealList | linIneqConMappingMultipliers |
| constraints to the corresponding NLPQL constraints. | |
| RealList | linIneqConMappingOffsets |
| constraints to the corresponding NLPQL constraints. | |
********************************************************************
AN IMPLEMENTATION OF A SEQUENTIAL QUADRATIC PROGRAMMING METHOD FOR SOLVING NONLINEAR OPTIMIZATION PROBLEMS BY DISTRIBUTED COMPUTING AND NON-MONOTONE LINE SEARCH
This subroutine solves the general nonlinear programming problem
minimize F(X) subject to G(J,X) = 0 , J=1,...,ME G(J,X) >= 0 , J=ME+1,...,M XL <= X <= XU
and is an extension of the code NLPQLD. NLPQLP is specifically tuned to run under distributed systems. A new input parameter L is introduced for the number of parallel computers, that is the number of function calls to be executed simultaneously. In case of L=1, NLPQLP is identical to NLPQLD. Otherwise the line search is modified to allow L parallel function calls in advance. Moreover the user has the opportunity to used distributed function calls for evaluating gradients.
The algorithm is a modification of the method of Wilson, Han, and Powell. In each iteration step, a linearly constrained quadratic programming problem is formulated by approximating the Lagrangian function quadratically and by linearizing the constraints. Subsequently, a one-dimensional line search is performed with respect to an augmented Lagrangian merit function to obtain a new iterate. Also the modified line search algorithm guarantees convergence under the same assumptions as before.
For the new version, a non-monotone line search is implemented which allows to increase the merit function in case of instabilities, for example caused by round-off errors, errors in gradient approximations, etc.
The subroutine contains the option to predetermine initial guesses for the multipliers or the Hessian of the Lagrangian function and is called by reverse communication.
1.5.1