The approach to solve nonlinear constrained optimization problems in LRAMBO is 'total quasi-Newton' with linesearch and a working set strategy. The 'total quasi-Newton' approach combines the selective evaluation of cheaply available derivatives via Algorithmic Differentiation (AD) with the approximation of the Jacobian and Hessian matrices by new, linearly invariant update formulas. As a result the linear algebra cost per iteration is only quadratic with respect to n+m, and the evaluation effort is bounded by a small multiple of that needed to compute the objective and derivative values by themselves. Due to the heredity property of the updates equality constrained quadratic programs are solved exactly in n steps for almost all initializations of primal and dual variables as well as Jacobian and Hessian approximations.

LRAMBO is being developed as part of the research project "General purpose, Linearly Invariant Algorithm for Large-Scale Nonlinear Programming".

The authors of LRAMBO are: Andreas Griewank, Stefan Körkel, Kshitij Kulshreshtha, Torsten Bosse, Volker Schloßhauer, and Lars Sadau. For details please contact Torsten Bosse.

The solver requires the input of evaluation routines for the objective, an initial point, and the constraints. First and second order derivatives can be computed by automatic differentiation with ADOL-C.

The solver setup was last updated by J.Utke on Nov/29/2012.

- The number of variables
- A subroutine that defines the starting point
- A subroutine that defines the constraints
- A subroutine that evaluates the objective function

Web Submission Form

How many variables are in your problem

How many equality contraints do you have

How many contraints do you have altogether

Convergence is achieved if the L2 Norm of active constrains and the sqaure of the L2 norm of the gradient of the Lagrangian are less than or equal to epsilon,
When setting epsilon too small the algorithm may stop in unconverged state after the maximal number of iterations.

After the set number of iterations the algorithm stops if convergence has not been achieved earlier. Note that the server also uses a timer to kill runaway jobs.

`void fcn(int ndim, double *x, double *f)`

- IN:
`int ndim`-- # of dimensions in the problem`double *x`-- variables

- OUT:
`double *f`-- scalar function value

`void constrs(int ndim, double *x, int meq, int mup, double *c)`

- IN:
`int ndim`-- # of dimensions in the problem`double *x`-- variables`int meq`-- # of equality constraints`int mup`-- # of all constraints (equality and inequality)

- OUT:
`double *c`-- constraints (array of size mup)

`void initpt(int ndim, double *x)`

- IN:
`int ndim`-- # of dimensions in the problem

- OUT:
`double *x`-- the initial vector

E-Mail address: