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