TOMLAB OPTIMIZATION ENVIRONMENT: nlpSolve

   

nlpSolve

Purpose

For solving general constrained nonlinear optimization problems.

Syntax

   Result = nlpSolve(Prob, varargin);

Description

nlpSolve implements the Filter SQP by Roger Fletcher and Sven Leyffer.

Filter SQP: presented in "Nonlinear Programming without a penalty function". All page references and notations are taken from this paper.

nlpSolve runs different methods to obtain the gradient g and the Hessian H, dependent on the parameters Prob.Solver.Alg, Prob.NumDiff, Prob.AutoDiff and if a user supplied routine for the Hessian, stored in Prob.USER.H is available.

Solver.Alg=1 gives the Filter SQP
Solver.Alg=2 gives quasi-Newton BFGS for the Filter SQP

The table gives the different possibilities for Alg=0 and 1

 Solver.Alg  NumDiff  AutoDiff isempty(USER.H)  Hessian computation
     0          0         0           0         Analyic Hessian
     0        any       any           1         BFGS

     1          0         0           0         Analytic Hessian
     1          0         0           1         Numerical differences H
     1         >0         0         any         Numerical differences g,H
     1         <0         0         any         Numerical differences H
     1        any         1         any         Automatic differentiation
     2          0         0         any         BFGS
     2        ~=0         0         any         BFGS, numerical gradient g
     2        any         1         any         BFGS, automatic diff gradient

Problem

        min          f(x)
         x
        s/t   x_L <=   x  <= x_U
              b_L <= A x  <= b_U
              c_L <= c(x) <= c_U

Input Parameters

Use conAssign.m (or probAssign) to initialize the Prob structure in the Tomlab Quick format. Fields used in structure Prob:

   x_0      Starting point
   x_L      Lower bounds for x
   x_U      Upper bounds for x
   b_L      Lower bounds for linear constraints
   b_U      Upper bounds for linear constraints
   A        Linear constraint matrix
   c_L      Lower bounds for nonlinear constraints
   c_U      Upper bounds for nonlinear constraints

   USER.f   The routine to compute the function as a string
   USER.g   The routine to compute the gradient as a string
   USER.H   The routine to compute the Hessian as a string
   USER.c   The routine to evaluate the constraints as a string
   USER.dc  The routine to compute the gradient of the constraints
   USER.d2c The routine to compute the second derivatives of the constraints
   ConsDiff Differentiation method for the constraint Jacobian
            0 = analytic, 1-5 different numerical methods
   SolverQP Name of the solver used for QP subproblems. If empty,
            the default solver is used. See GetSolver.m and tomSolve.m
  SolverFP Name of the solver used for FP subproblems. If empty,
            the default solver is used. See GetSolver.m and tomSolve.m

   PriLev   Print level: 0 Silent, 1 Final result, 2 Each iteration, short
   	        3 Each iteration, more info, 4 Matrix update information
   optParam structure in Prob. Fields used:
      IterPrint  Print short information each iteration
      eps_g     Gradient convergence tolerance
      eps_x     Convergence tolerance in x
      size_x    Approximate size of optimal variable values 
      MaxIter   Maximal number of iterations
      wait      Pause after printout if true
      cTol      Constraint violation convergence tolerance
      bTol      Linear constraint violation convergence tolerance
      xTol      Variable violation tolerance
      PriLev    Print level
      IterPrint Print short information each iteration
      QN_InitMatrix  Initial Quasi-Newton matrix, if not empty,
                             otherwise use identity matrix

Extra parameters

   VARARGIN : User defined parameters passed to f, c, g, dc and H

Output Parameters

 Result      Structure with results from optimization
    x_k      Optimal point
    v_k      Lagrange multipliers NOT USED
    f_k      Function value at optimum
    g_k      Gradient vector at optimum
    x_0      Starting value vector
    c_k      Constraint values at optimum
    cJac     Constraint derivative values at optimum
    xState   Variable: Free==0; On lower == 1; On upper == 2; Fixed == 3;
    bState   Linear constraint: Inactive==0; On lower bound == 1; 
             On upper bound == 2; Equality == 3;
    Iter     Number of iterations
    ExitFlag Flag giving exit status. 
             0 = Convergence. Constraints fulfilled, small step in x.
             1 = Infeasible problem?
             2 = Maximal number of iterations reached (Inform == 101)
             3 = No progress in either function value or constraint reduction
    ExitTest Text string giving ExitFlag and Inform information
    Inform   Code telling type of convergence (ExitFlag=0)
             1   Iteration points are close'
             2   Small search direction
             3   Function value below given estimate
                 Restart with lower fLow if minimum not reached
             4   Projected gradient small
            10   Karush-Kuhn-Tucker conditions fulfilled

  mipSolve   PDCO