
                    ********************************
      	            *                              *
                    *   USING PENNLP WITH CUTEst   *
                    *                              *
                    ********************************

              ( Last modified on 27 Feb 2013 at 07:50:00 )

WHAT IS PENNLP?
--------------

PENNLP is an augmented Lagrangian method for large-scale constrained 
optimization (and semidefinite programming)

HOW DO I GET PENNLP?
--------------------

PENNLP was written and maintained by Michal Koˇcvara and Michael Stingl
It is available from the authors via 

  http://www.penopt.com


CREATING THE OBJECT FILES FOR PENNLP
------------------------------------

The authors will provide you with a tar file containing, amongst other
things, a binary random library pennlp.a. Either create a directory 
$PENNLP and move pennlp.a to $PENNLP/libpennlp.a, or move pennlp.a
to $CUTEST/objects/(architecture)/(precision)/libpennlp.a for the
architecture and precsion you intend to use; binary files in the
latter will be chosen in preference to anything in $PENNLP.

PENNLP is only available in double precision.

USING THE PENNLP INTERFACE TOOL
-------------------------------

Suppose you wish to solve the problem written in SIF format contained
in the file probname.SIF.

The PENNLP interface tools require two input files:

   probname.SIF   specifies the problem in SIF format
   PENNLP.SPC     sets values for PENNLP run-time parameters

If no PENNLP.SPC file is present in the current directory, the default version 
is copied from the $CUTEST/src/PENNLP directory. This default contains the 
following:

100       maxit        maximum numbers of outer iterations
100       nwtiters     maximum number of iterations in inner loop
2         outlev       output level (0=none,1=options,2=brief,3=full)
0         hessianmode  check density of hessian (0=auto,1=dense)
0         autoscale    automatic scaling? (0=no,1=yes)
0         convex       convex problem? (0=no,1=yes)
3         eqltymode    treat equality constraints (0,1=spilit,2=aug,3=direct)
0         ignoreinit   ignore initial solutions? (0=no,1=yes)
0         ncmode       nonconvex mode (0=modified Newton,1=trust region)
2         nwtstopcrit  stopping criterion (0=abs,1=rel,3=scaled rel)
0         penalty      penalty function (0=log barrier,1=reciprocal barrier)
0         nwtmode      Newton system mode (0=Chol,1=cg,2=app Hess cg,3=dual)
0         prec         cg preconditioner (0=none,1=diag,2=bfgs,3=ainv,4=sgs)
-1        cmaxnzs      Hessian tuning in nwtmode 1-3 (-1=off,other=on)
0         autoini      initialization of multipliers (0=off,1=nlp,2=lp mode)
1         penup        penalty parameter update (0=adaptive,1=every iter)
0         usebarrier   box constraint mode (0=none,1=barrier,2=modified bar)
1.0e-7    precision  required final precision                                  
1.0       uinit      initial multilplier scaling factor                     
1.0       pinit      initial penalty
0.01      alpha      stopping parameter for inner Newton/Trust region method
0.5       mu         restriction factor of multiplier update
0.1       penup      penalty update
1.0e-8    peps       minimal penalty
1.0e-12   umin       minimal multiplier
1.0e-1    preckkt    precision of the KKT conditions
5.0e-2    cgtolmin   minimum tolerance of the conjugate gradient algorithm
1.0e0     cgtolup    update of tolerance of the conjugate gradient algorithm
1.0e0     uinitbox   initial multiplier box constraints
1.0e0     uinitnc    initial multiplier nonlinear constraints

The reader is referred to the paper quoted below and the code itself if he or 
she wishes to modify these parameters.

To run with CUTEst, use the runcutest command with the -p pennlp option.
See the man page for runcutest for more details of other options.

REFERENCE
---------

M. Koˇcvara and M. Stingl, 
"PENNON — a code for convex nonlinear and semidefinite programming",
Optimization Methods and Software, 8(3):317–333, (2003).
