TOMLAB OPTIMIZATION ENVIRONMENT: conSolve

   

conSolve

Purpose

For solving constrained minimization problems.

Syntax

   Result = conSolve(Prob, varargin);

Description

conSolve implements SQP algorithms for constrained minimization problems

Main algorithm

A SQP algorithm by Schittkowski with Augmented Lagrangian merit function.

conSolve also has an alternative Han-Powell SQP algorithm implemented (does not work as well as the Schittkowski algorithm).

Problem

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

Algorithms

conSolve 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=2 or 4 gives quasi-Newton BFGS as the Hessian approximation.

The table gives the different possibilities.

Solver.Alg == 0 gives the conSolve default algorithm choice.

Schittkowski SQP

 Solver.Alg  NumDiff  AutoDiff isempty(USER.H)  Hessian computation
     0          0         0           0         Analytic Hessian
     0        any       any         any         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

Han-Powell SQP

 Solver.Alg  NumDiff  AutoDiff isempty(USER.H)  Hessian computation
     3          0         0           0         Analytic Hessian
     3          0         0           1         Numerical differences H
     3         >0         0         any         Numerical differences g,H
     3         <0         0         any         Numerical differences H
     3        any         1         any         Automatic differentiation
     4          0         0         any         BFGS
     4        ~=0         0         any         BFGS, numerical gradient g
     4        any         1         any         BFGS, automatic diff gradient

Reference for the Schittkowski SQP:

Klaus Schittkowski: On the convergence of a Sequential Quadratic Programming
Method with an Augmented Lagrangian Line Search Function
Systems Optimization Laboratory, Dept. of Operations Research, Stanford University, Stanford CA 94305, January 1982.

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
   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

   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

   PriLevOpt Print level: 0 Silent, 1 Final result, 2 Each iteration
   	      3 Line search info and Hessian

optParam structure in Prob. Fields used:

    bTol          Linear constraint violation convergence tolerance
    cTol          Constraint violation convergence tolerance
    eps_absf      Function value convergence tolerance, f_k <= eps_absf
    eps_g         Gradient convergence tolerance
    eps_x         Convergence tolerance in x
    eps_Rank      Rank tolerance 
    IterPrint     Print short information each iteration
    MaxIter       Maximal number of iterations
    QN_InitMatrix Initial Quasi-Newton matrix, if not empty,
                  Otherwise use identity matrix
    size_x        Approximate size of optimal variable values 
    size_f        Approximate size of optimal f(x) value
    xTol          Variable violation tolerance
    wait          Pause after printout if true

LineParam structure in Prob for line search parameters

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
    ExitTest Text string giving ExitFlag and Inform information
    Inform   Code telling type of convergence
             1   Iteration points are close.
             2   Small search direction.
             3   Iteration points are close and small search direction.
             4   Merit function gradient small.
             5   Iteration points are close and merit function gradient
                 small.
             6   Small search direction and merit function gradient small.
             7   Iteration points are close, small search direction and
                 merit function gradient small
             8   Small p and constraints satisfied.
           101   Max no of iterations reached
           102   Function value below given estimate.
           103   Close iterations, but constraints not fulfilled.
                 Too large penalty weights to be able to continue
                 Problem is maybe infeasible?
           104   Search direction 0 and infeasible constraints.
                 The problem is very likely infeasible
           106   Penalty weights too high

  clsSolve   cutplane