|
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 | ![]() |