CSOLNP is an open-source optimizer engine for the OpenMx package. It is a C++ translation of solnp function from the Rsolnp package, available on CRAN. The algorithm solves nonlinear programming problems in general form of:
, and are all smooth functions.
Each major iteration of the optimization algorithm solves an augmented Lagrange multiplier method in the form of:
Each major iteration starts with a feasibility check of the decision variables , and continues by implementing a Sequential Quadratic Programming (SQP) method, which calculates the gradient and the Hessian for the augmented Lagrange multiplier method. The criteria for moving to the next major iteration is satisfied when a Quadratic Programming problem of the form:
results in a feasible and optimal solution to the augmented Lagrange multiplier problem. If the solution is not feasible or optimal, a new QP problem is called (minor iteration) for updating the gradient and the Hessian. The stop criterion for the optimization is either when the optimal solution is found, or when the maximum number of iterations is reached.
To be provided
To use NPSOL, your OpenMx must be compiled to include it. If NPSOL is available, you can make it the default optimizer with
You can also control this setting with the IMX_OPT_ENGINE environment variable.
Running the test suite of the package with both optimizers resulted in the following average running times: