# TOMLAB  
# REGISTER (TOMLAB)
# LOGIN  
# myTOMLAB
TOMLAB LOGO

« Previous « Start » Next »

3  TOMLAB /NPSOL Solver Reference

The NPSOL solvers are a set of Fortran solvers that were developed by the Stanford Systems Optimization Laboratory (SOL). Table 1 lists the solvers included in TOMLAB /NPSOL. The solvers are called using a set of MEX-file interfaces developed as part of TOMLAB. All functionality of the NPSOL solvers are available and changeable in the TOMLAB framework in Matlab.

Detailed descriptions of the TOMLAB /NPSOL solvers are given in the following sections. Also see the M-file help for each solver.

The solvers reference guides for the TOMLAB /NPSOL solvers are available for download from the TOMLAB home page http://tomopt.com. There is also detailed instruction for using the solvers in Section 4. Extensive TOMLAB m-file help is also available, for example help minosTL in Matlab will display the features of the MINOS solver using the TOMLAB format.

TOMLAB /NPSOL solves nonlinear optimization problems (con) defined as
 
min
x
f(x)
   
s/t
xL x xU,
bL A x bU
cL c(x) cU
    (1)
where x, xL, xU ∈ Rn, f(x) ∈ R, A ∈ Rm1 × n, bL,bU ∈ Rm1 and cL,c(x),cU ∈ Rm2.

quadratic programming (qp) problems defined as
 
min
x
f(x) =
1
2
xT F x + cT x
   
s/t
xL x xU,
bL A x bU
    (2)
where c, x, xL, xU ∈ Rn, F ∈ Rn × n, A ∈ Rm1 × n, and bL,bU ∈ Rm1.

linear programming (lp) problems defined as
 
min
x
f(x) = cT x
   
s/t
xL x xU,
bL A x bU
    (3)
where c, x, xL, xU ∈ Rn, A ∈ Rm1 × n, and bL,bU ∈ Rm1.

linear least squares (lls) problems defined as
 
min
x
f(x) =
1
2
|| C xd ||
   
s/t
xL x xU,
bL A x bU
    (4)
where x, xL, xU ∈ Rn, d ∈ RM, C ∈ RM × n, A ∈ Rm1 × n, bL,bU ∈ Rm1.

and constrained nonlinear least squares problems defined as
 
min
x
f(x) =
1
2
r(x)T r(x)
   
s/t
xL x xU,
bL A x bU
cL c(x) cU
    (5)
where x, xL, xU ∈ Rn, r(x) ∈ RM, A ∈ Rm1 × n, bL,bU ∈ Rm1 and cL,c(x),cU ∈ Rm2.




Table 1: The SOL optimization solvers in TOMLAB /NPSOL.


Function Description Reference Page
MINOS 5.5 Sparse linear and nonlinear programming with linear and nonlinear constraints. [13]  
LP-MINOS A special version of the MINOS 5.5 MEX-file interface for sparse linear programming. [13]  
QP-MINOS A special version of the MINOS 5.5 MEX-file interface for sparse quadratic programming. [13]  
LPOPT 1.0-10 Dense linear programming. [8]  
QPOPT 1.0-10 Non-convex quadratic programming with dense constraint matrix and sparse or dense quadratic matrix. [8]  
LSSOL 1.05-4 Dense linear and quadratic programs (convex), and constrained linear least squares problems. [7]  
NLSSOL 5.0-2 Constrained nonlinear least squares. NLSSOL is based on NPSOL. No reference except for general NPSOL reference. [9]  
NPSOL 5.02 Dense linear and nonlinear programming with linear and nonlinear constraints. [9]  

3.1  MINOS

3.1.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.1.2 for information on how to use MINOS with TOMLAB.

Purpose
minos solves nonlinear optimization problems defined as

 
min
x
f(x)
   
s/t
    x   ,
bL A x bU
    c(x)    
    (6)


where x ∈ Rn, f(x) ∈ R, A ∈ Rm1 × n, bL,bU ∈ Rn+m1+m2 and c(x) ∈ Rm2.

or quadratic optimization problems defined as

 
min
x
f(x) =
1
2
xT F x + cT x
   
s/t
    x   ,
bL g(x) bU
    A x    
    (7)
where c, x ∈ Rn, F ∈ Rn × n, A ∈ Rm1 × n, and bL,bU ∈ Rm1.

The full input matrix A has three parts A = [d/dx g(x); A; c'];


Calling Syntax
The file 'funfdf.m' must be defined and contain: function [mode, f, g] = funfdf(x, Prob, mode, nstate) to compute the objective function f and the gradient g at the point x.
The file 'funcdc.m' must be defined and contain: function [mode ,c ,dcS] = funcdc(x, Prob, mode, nstate) to compute the nonlinear constraint value c and the constraint Jacobian dcS for the nonlinear constraints at the point x.
NOTE: The matrix dcS MUST be a SPARSE MATLAB matrix. Do dcS = sparse(dcS); after dcS has been computed.
[hs, xs, pi, rc, Inform, nS, nInf, sInf, Obj, iwCount, gObj, fCon, gCon] = minos(H, A, bl, bu, nnCon, nnObj, nnJac, Prob, iObj, optPar, Warm, hs, xs, pi, nS, SpecsFile, PrintFile, SummFile, PriLev, ObjAdd, moremem, ProbName );



Description of Inputs
The following fields are used:
 
H Matrix n x n in a quadratic programming (QP) problem. DENSE or SPARSE. Leave empty if LP, or NLP problem.
 
A Constraint matrix, m x n SPARSE (nonlinear, linear and objective) m > 0 always!!! Define dummy constraint for unconstrained problems.
 
bl Lower bounds on (x,g(x),Ax,c').
 
bu Upper bounds on (x,g(x),Ax,c').
 
  NOTE! The bl and bu values for the last nonlinear constraint c must have reverse signs and be put in each other places: If cL <= c(x) <= cU , then bl = −cU and bu = −cL. This is because the bounds acts as the constraints on the slack variables for the nonlinear constraints.
 
nnCon Number of nonlinear constraints.
 
nnObj Number of nonlinear objective variables.
 
nnJac Number of nonlinear Jacobian variables.
 
Prob Must be a structure. No check is made in the MEX interface. If TOMLAB calls minos, then Prob is the standard TOMLAB problem structure, otherwise the user should set:
 
  Prob.P = ProblemNumber, where ProblemNumber is some integer.
 
  If the problem is a LP or QP problem (H defined), the user does not have to specify anything else in the structure.
 
  For a general nonlinear objective or nonlinear constraints names of two user written routines must be given:
 
  funfdf, actual name stored in Prob.FUNCS.fg, with syntax [mode, f, g] = funfdf(x, Prob, mode, nstate).
 
  funcdc, actual name stored in Prob.FUNCS.cdc, with syntax [mode, c, dcS] = funcdc(x, Prob, mode, nstate).
 
  MINOS is calling the TOMLAB routines nlp_fg.m and nlp_cdcS.m in the callback, and they call funfdf and funcdc, respectively.
 
  If these fields in Prob are empty (Prob.FUNCS.fg, Prob.FUNCS.cdc), the TOMLAB callback routines calls the usual function routines. Then the Prob struct should be normally defined, and the fields Prob.FUNCS.f, Prob.FUNCS.g, Prob.FUNCS.c, Prob.FUNCS.dc be set in the normal way (e.g. by the routine mFiles.m, or one of the Assign-routines like conAssign.m).
 
  If the mode parameter is 0, funfdf should return f, otherwise both f and the gradient vector g. If the mode parameter is 0, funcdc should return c, otherwise both c and dcS. Note that each row in dcS corresponds to a constraint, and that dcS must be a SPARSE matrix.
 
  The user could also write his own versions of the routines nlp_fg.m and nlp_cdcS.m and put them before in the path.
 
iObj Says which row of A is a free row containing a linear objective vector c. If there is no such vector, iObj = 0. Otherwise, this row must come after any nonlinear rows, so that nnCon <= iObj <= m.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. If using only default options, set optPar as an empty matrix.
 
Warm Flag, if true: warm start. Default cold start (if empty). If 'Warm Start' xs, nS and hs must be supplied with correct values.
 
hs Basis status of variables + constraints (n+m x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).
 
xs Initial vector, optionally including m slacks at the end. If warm start, full xs must be supplied.
 
pi Lagrangian multipliers for the nnCon nonlinear constraints. If empty, set as 0.
 
nS # of superbasics. Only used if calling again with a Warm Start.
 
SpecsFile Name of the SPECS input parameter file, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Printing level in the minos m-file and minos MEX-interface.
 
  = 0 Silent
  = 1 Summary information
  = 2 More detailed information
 
ObjAdd Constant added to the objective for printing purposes, typically 0.
 
moremem Add extra memory for the sparse LU, might speed up the optimization. If empty, set as 0.
 
ProbName Name of the problem. <=100 characters are used in the MEX interface. In the MINOS solver the first 8 characters are used in the printed solution and in some routines that output BASIS files. Blank is OK.
 

Description of Outputs
The following fields are used:
 
hs Basis status of variables + constraints (n+m x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).
  Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance. Note that if scaling is specified, the Feasibility tolerance applies to the variables of the scaled problem. In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the “Primal infeasibility" printed after the EXIT message.
 
  Very occasionally some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics for which xn(j) lies strictly between its bounds.
 
  If ninf > 0, some basic and superbasic variables may be outside their bounds by an arbitrary amount (bounded by sinf if scaling was not used).
 
xs Solution vector (n+m by 1) with n decision variable values together with the m slack variables.
 
pi Lagrangian multipliers (dual solution vector) (m x 1 vector)
 
rc Vector of reduced costs, g − ( A I )Tπ, where g is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last m entries are −π. Reduced costs vector is of n+m length.
 
Inform Result of MINOS run.
 
  0 Optimal solution found.
  1 The problem is infeasible.
  2 The problem is unbounded (or badly scaled).
  3 Too many iterations.
  4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).
  5 The Superbasics limit is too small.
  6 User requested termination (by returning bad value).
  7 Gradient seems to be giving incorrect derivatives.
  8 Jacobian seems to be giving incorrect derivatives.
  9 The current point cannot be improved.
  10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.
  11 Cannot find a superbasic to replace a basic variable.
  12 Basis factorization requested twice in a row. Should probably be treated as inform = 9.
  13 Near-optimal solution found. Should probably be treated as inform = 9.
 
  20 Not enough storage for the basis factorization.
  21 Error in basis package.
  22 The basis is singular after several attempts to factorize it (and add slacks where necessary).
  30 An OLD BASIS file had dimensions that did not match the current problem.
  32 System error. Wrong number of basic variables.
  40 Fatal errors in the MPS file.
  41 Not enough storage to read the MPS file.
  42 Not enough storage to solve the problem.
 
nS # of superbasics.
 
nInf Number of infeasibilities.
 
sInf Sum of infeasibilities.
 
Obj Objective function value at optimum.
 
iwCount Number of iterations (major and minor), function and constraint calls.
 
gObj Gradient of the nonlinear objective.
 
fCon Nonlinear constraint vector.
 
gCon Gradient vector (non-zeros) of the nonlinear constraint vector.
 

3.1.2  Using TOMLAB

Purpose
minosTL solves nonlinear optimization problems defined as

 
min
x
f(x)
   
s/t
xL x xU,
bL A x bU
cL c(x) cU
    (8)


where x, xL, xU ∈ Rn, f(x) ∈ R, A ∈ Rm1 × n, bL,bU ∈ Rm1 and cL,c(x),cU ∈ Rm2.


Calling Syntax
Using the driver routine tomRun:

Prob = ◇Assign( ... );
Result = tomRun('minos', Prob, 1);



Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
c_L, c_U Bounds on nonlinear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution and slacks from previous run.
 
SOL.hs State for solution and slacks from previous run.
 
SOL.nS Number of superbasics from previous run.
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient of the function.
c_k Nonlinear constraint residuals.
 
cJac Nonlinear constraint gradients.
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
cState State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from minos.m (similar to TOMLAB).
 
Inform Result of MINOS run.
 
  0 Optimal solution found.
  1 The problem is infeasible.
  2 The problem is unbounded (or badly scaled).
  3 Too many iterations.
  4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).
  5 The Superbasics limit is too small.
  6 User requested termination (by returning bad value).
  7 Gradient seems to be giving incorrect derivatives.
  8 Jacobian seems to be giving incorrect derivatives.
  9 The current point cannot be improved.
  10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.
  11 Cannot find a superbasic to replace a basic variable.
  12 Basis factorization requested twice in a row. Should probably be treated as inform = 9.
  13 Near-optimal solution found. Should probably be treated as inform = 9.
 
  20 Not enough storage for the basis factorization.
  21 Error in basis package.
  22 The basis is singular after several attempts to factorize it (and add slacks where necessary).
  30 An OLD BASIS file had dimensions that did not match the current problem.
  32 System error. Wrong number of basic variables.
  40 Fatal errors in the MPS file.
  41 Not enough storage to read the MPS file.
  42 Not enough storage to solve the problem.
 
rc Vector of reduced costs, g − ( A I )Tπ, where g is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last m entries are −π. Reduced costs vector is of n+m length.
 
Iter Number of iterations.
FuncEv Number of function evaluations.
GradEv Number of gradient evaluations.
ConstrEv Number of constraint evaluations.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations.
 
Solver Name of the solver (minos).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.hs Basis status of variables + constraints (n+m x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).
  Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance. Note that if scaling is specified, the Feasibility tolerance applies to the variables of the scaled problem. In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the “Primal infeasibility" printed after the EXIT message.
 
  Very occasionally some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics for which xn(j) lies strictly between its bounds.
 
  If ninf > 0, some basic and superbasic variables may be outside their bounds by an arbitrary amount (bounded by sinf if scaling was not used).
 
SOL.nS # of superbasics.
 
SOL.nInf # of infeasibilities.
 
SOL.sInf Sum of infeasibilities.
 

3.1.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by MINOS, unless the value is altered in the SPECS file.
Definition: nnL = max(nnObj,nnJac))

Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 0 11111 JFLXB: Jac, fCon, lambda, x, B=LU stats
 
Frequencies I
5. PRINT FREQUENCY 0 100  
6. SUMMARY FREQUENCY 0 100  
7. SOLUTION YES/NO 0 1 1 1 = YES; 0 = NO
8. SUPPRESS PARAMETERS 0 0 1 1 = True
 
Convergence Tolerances
9. ROW TOLERANCE >0 1E-6
10. OPTIMALITY TOLERANCE >0 max(1E−6,(10epsR)0.5) = 1.73E-6
11. FEASIBILITY TOLERANCE >0 1E-6
 
Derivative checking
13. VERIFY LEVEL -1 -1 3 -1,0,1,2,3
14. START OBJECTIVE CHECK AT COL 0 1 nnObj
15. STOP OBJECTIVE CHECK AT COL 0 nnObj nnObj
16. START CONSTRAINT CHECK AT COL 0 1 nnJac
17. STOP CONSTRAINT CHECK AT COL 0 nnJac nnJac
 
Scaling
18. SCALE OPTION 0 1 or 2 2 2 if LP,1 if NLP
  See Section 6.2 for more information.
19. SCALE TOLERANCE >0 0.9 <1
20. SCALE PRINT 0 0 1 1 = True
21. CRASH TOLERANCE 0 0.1 <1
 
Other Tolerances
22. LINESEARCH TOLERANCE >0 0.1 <1
 
LU I
23. LU FACTORIZATION TOLERANCE 1 100 or 5   100 if LP
24. LU UPDATE TOLERANCE 1 10 or 5   10 if LP
25. LU SWAP TOLERANCE >0 1.22E-4   eps1/4
26. LU SINGULARITY TOLERANCE >0 3.25E-11   eps0.67
 
LP or LC subproblems
27. PIVOT TOLERANCE >0 3.25E-11   eps0.67
28. CRASH OPTION 0 3 3 0,1,2,3
29. WEIGHT ON LINEAR OBJECTIVE 0.0 0.0   during Phase 1
30. ITERATIONS LIMIT 0 3(m+m3) + 10nnL
  m3=1 if length(Prob.QP.c) > 0, otherwise m3=0.
  TOMLAB default: max(10000,3(m+m3) + 10nnL).
31. PARTIAL PRICE 1 10 or 1   10 for LP
 
SLC method
32. MAXIMIZE 0 0 1 1=maximize
33. LAGRANGIAN 0 1 1 1=YES, 0=NO
34. PENALTY PARAMETER 0.0 1.0
35. MAJOR ITERATIONS LIMIT >0 50
36. MINOR ITERATIONS LIMIT >0 40
37. MAJOR DAMPING PARAMETER >0 2.0
38. MINOR DAMPING PARAMETER >0 2.0
39. DERIVATIVE LEVEL 0 3 3 0,1,2,3
  Is always set by minosTL dependent on Prob.ConsDiff, Prob.NumDiff.
40. RADIUS OF CONVERGENCE 0.0 0.01
41. FUNCTION PRECISION >0 3.0E-13   eps0.8=epsR
42. DIFFERENCE INTERVAL >0 5.48E-7   eps0.4
43. CENTRAL DIFFERENCE INTERVAL >0 6.69E-5   eps0.8/3
44. COMPLETION 0 1 LC, 0 NC 1 0=PARTIAL 1=FULL
45. UNBOUNDED STEP SIZE >0 1E10
46. UNBOUNDED OBJECTIVE >0 1E20
 
Hessian approximation
47. HESSIAN DIMENSION 1 50 1+nnL
48. SUPERBASICS LIMIT 1 50 1+nnL
  TOMLAB default (to avoid termination with Superbasics Limit too small):
  If n <= 5000: max(50,n+1)
  If n > 5000: max(500,n+200−size(A,1)−length(cL))
  Avoid setting REDUCED HESSIAN (number of columns in reduced Hessian).
  It will then be set to the same value as the SUPERBASICS LIMIT by MINOS.
 
Frequencies II
51. CHECK FREQUENCY >0 60
52. EXPAND FREQUENCY >0 10000
53. FACTORIZATION FREQUENCY >0 50
 
LU II
63. LU PARTIAL PIVOTING 0 0 3 0=partial
  or LU COMPLETE PIVOTING       1=complete
  or LU ROOK PIVOTING       2=rook
 
Additional parameters
67. AIJ TOLERANCE 0 1E-10
  Elements |a(i,j)| < AIJ TOLERANCE are set as 0
70. SUBSPACE >0 0.5 1 Subspace tolerance
  Convergence tolerance in current subspace before consider moving off
  another constraint.
 

3.2  LP-MINOS

3.2.1  Using TOMLAB

Purpose
minosLPTL solves linear optimization problems defined as
 
min
x
f(x) = cT x
   
s/t
xL x xU,
bL A x bU
    (9)
where c, x, xL, xU ∈ Rn, A ∈ Rm1 × n, and bL,bU ∈ Rm1.

Calling Syntax
Using the driver routine tomRun:

Prob = lpAssign( ... );
Result = tomRun('lp-minos', Prob ... );

or

Prob = ProbCheck( ... );
Result = minosLPTL(Prob);

Call Prob = lpAssign( ... ) or Prob = ProbDef to define the Prob for the second option.


Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution and slacks from previous run.
 
SOL.hs State for solution and slacks from previous run.
 
SOL.nS Number of superbasics from previous run (always 0 for LP).
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient c (linear objective).
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from minos.m (similar to TOMLAB).
 
Inform Result of MINOS run.
 
  0 Optimal solution found.
  1 The problem is infeasible.
  2 The problem is unbounded (or badly scaled).
  3 Too many iterations.
  4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).
  5 The Superbasics limit is too small.
  6 User requested termination (by returning bad value).
  7 Gradient seems to be giving incorrect derivatives.
  8 Jacobian seems to be giving incorrect derivatives.
  9 The current point cannot be improved.
  10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.
  11 Cannot find a superbasic to replace a basic variable.
  12 Basis factorization requested twice in a row. Should probably be treated as inform = 9.
  13 Near-optimal solution found. Should probably be treated as inform = 9.
 
  20 Not enough storage for the basis factorization.
  21 Error in basis package.
  22 The basis is singular after several attempts to factorize it (and add slacks where necessary).
  30 An OLD BASIS file had dimensions that did not match the current problem.
  32 System error. Wrong number of basic variables.
  40 Fatal errors in the MPS file.
  41 Not enough storage to read the MPS file.
  42 Not enough storage to solve the problem.
 
rc Vector of reduced costs, g − ( A I )Tπ, where g is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last m entries are −π. Reduced costs vector is of n+m length.
 
Iter Number of iterations.
FuncEv Number of function evaluations.
ConstrEv Number of constraint evaluations.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations.
 
Solver Name of the solver (minos).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.hs Basis status of variables + constraints (n+m x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).
  Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance. Note that if scaling is specified, the Feasibility tolerance applies to the variables of the scaled problem. In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the “Primal infeasibility" printed after the EXIT message.
 
  Very occasionally some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics for which xn(j) lies strictly between its bounds.
 
  If ninf > 0, some basic and superbasic variables may be outside their bounds by an arbitrary amount (bounded by sinf if scaling was not used).
 
SOL.nS # of superbasics.
 
SOL.nInf # of infeasibilities.
 
SOL.sInf Sum of infeasibilities.
 

3.2.2  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by MINOS, unless the value is altered in the SPECS file.


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 0 1 0=brief 1=LU stats
 
Frequencies I
5. PRINT FREQUENCY 0 100
6. SUMMARY FREQUENCY 0 100
7. SOLUTION YES/NO 0 1 1 1 = YES; 0 = NO
8. SUPPRESS PARAMETERS 0 0 1 1 = True
 
Convergence Tolerances
10. OPTIMALITY TOLERANCE >0 1E-6
11. FEASIBILITY TOLERANCE >0 1E-6
 
Scaling
18. SCALE OPTION 0 2 2 0,1,2
  See Section 6.2 for more information.
19. SCALE TOLERANCE >0 0.9 <1
20. SCALE PRINT 0 0 1 1 = True
21. CRASH TOLERANCE 0 0.1 <1
 
LU I
23. LU FACTORIZATION TOLERANCE 1 100
24. LU UPDATE TOLERANCE 1 10
25. LU SWAP TOLERANCE >0 1.22e-4   eps1/4
 
26. LU SINGULARITY TOLERANCE >0 3.25E-11   eps0.67
 
LP parameters
27. PIVOT TOLERANCE >0 3.25E-11   eps0.67
28. CRASH OPTION 0 3 3 0,1,2,3
29. WEIGHT ON LINEAR OBJECTIVE 0.0 0.0   during Phase 1
30. ITERATIONS LIMIT 0 3m
31. PARTIAL PRICE 1 10
 
Solve with tight or loose tols (applies to LP but probably not useful)
44. COMPLETION 0 1 1 0=PARTIAL 1=FULL
 
Frequencies II
51. CHECK FREQUENCY >0 60
52. EXPAND FREQUENCY >0 10000
53. FACTORIZATION FREQUENCY >0 100
 
LU II
63. LU PARTIAL PIVOTING 0 0 3 0=partial
  or LU COMPLETE PIVOTING       1=complete
  or LU ROOK PIVOTING       2=rook
 
Additional parameters
67. AIJ TOLERANCE 0 1E-10
  Elements |a(i,j)| < AIJ TOLERANCE are set as 0
70. SUBSPACE >0 0.5 1 Subspace tolerance
  Convergence tolerance in current subspace before consider moving off
  another constraint.
 

3.3  QP-MINOS

3.3.1  Using TOMLAB

Purpose
minosQPTL solves quadratic optimization problems defined as

 
min
x
f(x) =
1
2
xT F x + cT x
   
s/t
xL x xU,
bL A x bU
    (10)
where c, x, xL, xU ∈ Rn, F ∈ Rn × n, A ∈ Rm1 × n, and bL,bU ∈ Rm1.


Calling Syntax
Using the driver routine tomRun:

Prob = qpAssign( ... );
Result = tomRun('qp-minos', Prob ... );

or

Prob = ProbCheck( ... );
Result = minosQPTL(Prob);

Call Prob = qpAssign( ... ) or Prob=ProbDef to define the Prob for the second option.


Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
QP.F Quadratic matrix of size nnObj x nnObj. nnObj < n is OK.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution and slacks from previous run.
 
SOL.hs State for solution and slacks from previous run.
 
SOL.nS Number of superbasics from previous run.
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient c (linear objective).
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from minos.m (similar to TOMLAB).
 
Inform Result of MINOS run.
 
  0 Optimal solution found.
  1 The problem is infeasible.
  2 The problem is unbounded (or badly scaled).
  3 Too many iterations.
  4 Apparent stall. The solution has not changed for a large number of iterations (e.g. 1000).
  5 The Superbasics limit is too small.
  6 User requested termination (by returning bad value).
  7 Gradient seems to be giving incorrect derivatives.
  8 Jacobian seems to be giving incorrect derivatives.
  9 The current point cannot be improved.
  10 Numerical error in trying to satisfy the linear constraints (or the linearized nonlinear constraints). The basis is very ill-conditioned.
  11 Cannot find a superbasic to replace a basic variable.
  12 Basis factorization requested twice in a row. Should probably be treated as inform = 9.
  13 Near-optimal solution found. Should probably be treated as inform = 9.
 
  20 Not enough storage for the basis factorization.
  21 Error in basis package.
  22 The basis is singular after several attempts to factorize it (and add slacks where necessary).
  30 An OLD BASIS file had dimensions that did not match the current problem.
  32 System error. Wrong number of basic variables.
  40 Fatal errors in the MPS file.
  41 Not enough storage to read the MPS file.
  42 Not enough storage to solve the problem.
 
rc Vector of reduced costs, g − ( A I )Tπ, where g is the gradient of the objective function if xn is feasible, or the gradient of the Phase-1 objective otherwise. If ninf = 0, the last m entries are −π. Reduced costs vector is of n+m length.
 
Iter Number of iterations.
FuncEv Number of function evaluations. Set to Iter.
GradEv Number of gradient evaluations. Set to Iter.
ConstrEv Number of constraint evaluations. Set to 0.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations. NOT SET.
 
Solver Name of the solver (minos).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.hs Basis status of variables + constraints (n+m x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu) 2=superbasic (between bounds), 3=basic (between bounds).
  Basic and superbasic variables may be outside their bounds by as much as the Feasibility tolerance. Note that if scaling is specified, the Feasibility tolerance applies to the variables of the scaled problem. In this case, the variables of the original problem may be as much as 0.1 outside their bounds, but this is unlikely unless the problem is very badly scaled. Check the “Primal infeasibility" printed after the EXIT message.
 
  Very occasionally some nonbasic variables may be outside their bounds by as much as the Feasibility tolerance, and there may be some nonbasics for which xn(j) lies strictly between its bounds.
 
  If ninf > 0, some basic and superbasic variables may be outside their bounds by an arbitrary amount (bounded by sinf if scaling was not used).
 
SOL.nS # of superbasics.
 
SOL.nInf # of infeasibilities.
 
SOL.sInf Sum of infeasibilities.
 

3.3.2  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by MINOS, unless the value is altered in the SPECS file.


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 0 1 0=brief 1=LU stats
 
Frequencies I
5. PRINT FREQUENCY 0 100
6. SUMMARY FREQUENCY 0 1
7. SOLUTION YES/NO 0 1 1 1 = YES; 0 = NO
8. SUPPRESS PARAMETERS 0 0 1 1 = True
 
Convergence Tolerances
10. OPTIMALITY TOLERANCE >0 max(1E−6,(10epsR)0.5) = 1.73E-6
11. FEASIBILITY TOLERANCE >0 1E-6
 
Derivative checking
13. VERIFY LEVEL -1 -1 3 -1,0,1,2,3
14. START OBJECTIVE CHECK AT COL 0 1 nnObj
15. STOP OBJECTIVE CHECK AT COL 0 nnObj nnObj
 
Scaling
18. SCALE OPTION 0 1 2
  See Section 6.2 for more information.
19. SCALE TOLERANCE >0 0.9 <1
20. SCALE PRINT 0 0 1 1 = True
21. CRASH TOLERANCE 0 0.1 <1
 
Other Tolerances
22. LINESEARCH TOLERANCE >0 0.1 <1
 
LU I
23. LU FACTOR TOLERANCE 1 5.0
24. LU UPDATE TOLERANCE 1 5.0
25. LU SWAP TOLERANCE >0 1.22E-4   eps1/4
26. LU SINGULARITY TOLERANCE >0 3.25E-11   eps0.67
 
LP parameters
27. PIVOT TOLERANCE >0 3.25E-11   eps0.67
28. CRASH OPTION 0 3 3 0,1,2,3
29. WEIGHT ON LINEAR OBJECTIVE 0.0 0.0   during Phase 1
30. ITERATIONS LIMIT 0 3(m+m3) + 10nnL
  m3=1 if length(Prob.QP.c) > 0, otherwise m3=0.
  TOMLAB default: max(10000,3(m+m3) + 10nnL).
31. PARTIAL PRICE 1 1
32. MAXIMIZE 0 0 1 1=maximize
 
Reduced-gradient method
39. DERIVATIVE LEVEL 0 3 3 0,1,2,3
  Is always set by minosqpTL to 3.
41. FUNCTION PRECISION >0 3.0E-13   eps0.8=epsR
42. DIFFERENCE INTERVAL >0 5.48E-8   eps0.4
43. CENTRAL DIFFERENCE INTERVAL >0 6.69E-5   eps0.8/3
44. COMPLETION 0 1 LC, 0 NC 1 0=PARTIAL 1=FULL
45. UNBOUNDED STEP SIZE >0 1E10
46. UNBOUNDED OBJECTIVE >0 1E20
 
Hessian approximation
47. HESSIAN DIMENSION 1 50 1+nnL
48. SUPERBASICS LIMIT 1 50 1+nnL
  TOMLAB default (to avoid termination with Superbasics Limit too small):
  If n <= 5000: max(50,n+1)
  If n > 5000: max(500,n+200−size(A,1)−length(cL))
  Avoid setting REDUCED HESSIAN (number of columns in reduced Hessian).
  It will then be set to the same value as the SUPERBASICS LIMIT by MINOS.
 
Frequencies II
51. CHECK FREQUENCY >0 60
52. EXPAND FREQUENCY >0 10000
53. FACTORIZATION FREQUENCY >0 50
 
LU II
63. LU PARTIAL PIVOTING 0 0 3 0=partial
  or LU COMPLETE PIVOTING       1=complete
  or LU ROOK PIVOTING       2=rook
 
Additional parameters
67. AIJ TOLERANCE 0 1E-10
  Elements |a(i,j)| < AIJ TOLERANCE are set as 0
70. SUBSPACE >0 0.5 1 Subspace tolerance
  Convergence tolerance in current subspace before consider moving off
  another constraint.
 

3.4  LPOPT

3.4.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.4.2 for information on how to use LPOPT with TOMLAB.

Purpose
lpopt solves dense linear optimization problems defined as

 
min
x
f(x) = cT x
   
s/t
    x   ,
bL A x bU
    (11)
where c, x ∈ Rn, A ∈ Rm1 × n, and bL,bU ∈ Rn+m1.
If isempty(c) (or all(c==0), then a feasible point problem is solved (FP). Otherwise a standard linear programming problem is solved (LP)


Calling Syntax
[Inform, Iter, iState, Ax, cLamda, Obj, x] = lpopt(A, bl, bu, c, Warm, x, iState, SpecsFile, PrintFile, SummFile, PriLev, optPar );



Description of Inputs
The following fields are used:
 
A Constraint matrix, m x n (DENSE).
 
bl Lower bounds on (x,Ax), m+n x 1 vector (DENSE).
 
bu Upper bounds on (x,Ax), m+n x 1 vector (DENSE).
 
c Linear objective function cost coeffs, n x 1 (DENSE). If length(c) < n, setting c(1:n)=0;
 
Warm If Warm > 0, then warm start, otherwise cold Start. Default 0. If warm start, then x and iState must be set properly. Normally the values from last call to lpopt are used.
 
x Initial estimate of solution vector x. (DENSE) If length(x) < n, the rest of the elements in x are set to 0.
 
iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set,bl(i)==bu(i).
 
SpecsFile Name of the OPTIONS File, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Print level in the lpopt MEX-interface.
  = 0 Silent.
  = 1 Summary information.
  = 2 More detailed information.
  if isempty(PriLev), set as 0.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. If length(optPar) < 62, lpopt sets the rest of the values to missing value (-999).
 

Description of Outputs
The following fields are used:
 
 
Inform Result of LPOPT run.
  0 = Optimal solution with unique minimizer found.
  1 = A dead point was reached.
  2 = The solution appears to be unbounded (or badly scaled).
  3 = The constraints could not be satisfied. The problem has no feasible solution.
  4 = Too many iterations, in either phase.
  5 = The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is too be made.
  6 = An input parameter was invalid.
  7 = The problem type was not recognized.
  Other = UNKNOWN LPOPT Inform value.
 
Iter Number of iterations.
 
iState Status of working set, se input description of iState.
 
Ax A*x.
 
cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
Obj Objective function value at optimum.
 
x Solution vector with decision variable values (n x 1 vector).
 

3.4.2  Using TOMLAB

Purpose
lpoptTL solves dense linear optimization problems defined as
 
min
x
f(x) = cT x
   
s/t
xL x xU,
bL A x bU
    (12)
where c, x, xL, xU ∈ Rn, A ∈ Rm1 × n, and bL,bU ∈ Rm1.

Calling Syntax
Using the driver routine tomRun:

Prob = lpAssign( ... );
Result = tomRun('lpopt', Prob ... );

or

Prob = ProbCheck( ... );
Result = lpoptTL(Prob);

Call Prob = lpAssign( ... ) or Prob=ProbDef to define the Prob for the second option.


Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution and slacks from previous run.
 
SOL.iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient c (linear objective).
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from lpopt.m (similar to TOMLAB).
Inform LPOPT information parameter.
  0 = Optimal solution with unique minimizer found.
  1 = A dead point was reached.
  2 = The solution appears to be unbounded (or badly scaled).
  3 = The constraints could not be satisfied. The problem has no feasible solution.
  4 = Too many iterations, in either phase.
  5 = The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is too be made.
  6 = An input parameter was invalid.
  7 = The problem type was not recognized.
  Other = UNKNOWN LPOPT Inform value.
 
 
rc Reduced costs. If ninf=0, last m == -v_k.
 
Iter Number of iterations.
FuncEv Number of function evaluations.
ConstrEv Number of constraint evaluations.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations. Not Set.
 
Solver Name of the solver (lpopt).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.iState State for variables and constraints in iState.
 

3.4.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. No call is then done to internal routines lpprmi, lpprmr and lpprm. The default value will then be used by LPOPT, unless the value is altered in the SPECS file.


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 10   0,1,5,10,20,30
 
Convergence Tolerances
10. OPTIMALITY TOLERANCE >0 1.1E-8   sqrt(eps)
11. FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
 
Other Tolerances
21. CRASH TOLERANCE >0 0.01 <1
27. RANK TOLERANCE >0 1.1E-14   100*eps
30. ITERATION LIMIT >0 max(50,5(n+m))
33. MIN SUM YES (or NO) 0 0 1 1=min infeas.
  IF 1 (MIN SUM YES), minimize the infeasibilities before return.
36. FEASIBILITY PHASE ITERATIONS >0 max(50,5(n+m))
45. INFINITE STEP SIZE >0 1E20
 
Frequencies
51. CHECK FREQUENCY >0 50
52. EXPAND FREQUENCY >0 5
 

3.5  QPOPT

3.5.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.5.2 for information on how to use QPOPT with TOMLAB.

Purpose
qpopt solves dense quadratic optimization problems defined as

 
min
x
f(x) =
1
2
xT F x + cT x + dT x
   
s/t
    x   ,
bL A x bU
    (13)
where c, x ∈ Rn, F ∈ Rn × n, A ∈ Rm1 × n, and bL,bU ∈ Rn+m1.

If isempty(H) and isempty(c), then a feasible point problem is solved (FP).
If isempty(H), then a linear programming problem is solved (LP).
If isempty(c), then a quadratic programming problem is solved (QP1).
Otherwise a standard quadratic programming problem is solved (QP2).


Calling Syntax
[Inform, Iter, iState, Ax, cLamda, Obj, x] = qpopt (H, A, bl, bu, c, Warm, x, iState, SpecsFile, PrintFile, SummFile, PriLev, optPar);


Description of Inputs
The following fields are used:
 
H Matrix H in quadratic part of objective function (SPARSE or DENSE).
 
A Constraint matrix, m x n. (DENSE).
 
bl Lower bounds on (x, Ax), m+n x 1 vector (DENSE).
 
bu Upper bounds on (x, Ax), m+n x 1 vector (DENSE).
 
c Linear objective function cost coeffs, n x 1. (DENSE) If length(c) < n, setting c(1:n)=0;.
 
Warm If Warm > 0, then warm start, otherwise cold Start. Default 0. If warm start, then x and iState must be set properly. Normally the values from last call to qpopt are used.
 
x Initial estimate of solution vector x. (DENSE) If length(x) < n, the rest of the elements in x are set to 0.
 
iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SpecsFile Name of the OPTIONS File, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Print level in the qpopt MEX-interface.
  = 0 Silent.
  = 1 Summary information.
  = 2 More detailed information.
  if isempty(PriLev), set as 0.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. If length(optPar) < 62, qpopt sets the rest of the values to missing value (-999).
 

Description of Outputs
The following fields are used:
 
 
Inform Result of QPOPT run. 0 = Optimal solution found.
 
  0: x is a unique local minimizer. This means that x is feasible (it satisfies the constraints to the accuracy requested by the Feasibility tolerance), the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive definite. If H is positive definite or positive semidefinite, x is a global minimizer. (All other feasible points give a higher objective value.) Otherwise, the solution is a local minimizer, which may or may not be global. (All other points in the immediate neighborhood give a higher objective.)
  1: A dead-point was reached. This might occur if H is not sufficiently positive definite. If H is positive semidefinite, the solution is a weak minimizer. (The objective value is a global optimum, but there may be infinitely many neighboring points with the same objective value.) If H is indefinite, a feasible direction of decrease may or may not exist (so the point may not be a local or weak minimizer).
 
  At a dead-point, the necessary conditions for optimality are satisfied (x is feasible, the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive semidefinite.) However, the reduced Hessian is nearly singular, and/or there are some very small multipliers. If H is indefinite, x is not necessarily a local solution of the problem. Verification of optimality requires further information, and is in general an NP-hard problem [22].
 
  2: The solution appears to be unbounded. The objective is not bounded below in the feasible region, if the elements of x are allowed to be arbitrarily large. This occurs if a step larger than Infinite Step would have to be taken in order to continue the algorithm, or the next step would result in a component of x having magnitude larger than Infinite Bound. It should not occur if H is sufficiently positive definite.
 
  3: The constraints could not be satisfied. The problem has no feasible solution.
 
  4: One of the iteration limits was reached before normal termination occurred. See Feasibility Phase Iterations and Optimality Phase Iterations.
 
  5: The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is to be made.
 
  6: An input parameter was invalid.
 
  7: The Problem type was not recognized.
 
Iter Number of iterations.
 
iState Status of working set, se input description of iState.
 
Ax A*x.
 
cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
Obj Objective function value at optimum.
 
x Solution vector with decision variable values (n x 1 vector).
 

3.5.2  Using TOMLAB

Purpose
qpoptTL solves quadratic optimization problems defined as

 
min
x
f(x) =
1
2
xT F x + cT x
   
s/t
xL x xU,
bL A x bU
    (14)
where c, x, xL, xU ∈ Rn, F ∈ Rn × n, A ∈ Rm1 × n, and bL,bU ∈ Rm1.


Calling Syntax
Using the driver routine tomRun:

Prob = qpAssign( ... );
Result = tomRun('qpopt', Prob ... );

or

Prob = ProbCheck( ... );
Result = qpoptTL(Prob);

Call Prob = qpAssign( ... ) or Prob=ProbDef to define the Prob for the second option.


Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
QP.F Quadratic matrix of size nnObj x nnObj. nnObj < n is OK.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution and slacks from previous run.
 
SOL.iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SOL.cLamda Lagrangian multipliers from previous run (Warm start).
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
 
f_k Function value at optimum.
 
x_k Solution vector.
 
x_0 Initial solution vector.
 
g_k Exact gradient computed at optimum.
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
 
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from qpopt.m (similar to TOMLAB).
 
Inform Result of QPOPT run. 0 = Optimal solution found.
 
  0: x is a unique local minimizer. This means that x is feasible (it satisfies the constraints to the accuracy requested by the Feasibility tolerance), the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive definite. If H is positive definite or positive semidefinite, x is a global minimizer. (All other feasible points give a higher objective value.) Otherwise, the solution is a local minimizer, which may or may not be global. (All other points in the immediate neighborhood give a higher objective.)
  1: A dead-point was reached. This might occur if H is not sufficiently positive definite. If H is positive semidefinite, the solution is a weak minimizer. (The objective value is a global optimum, but there may be infinitely many neighboring points with the same objective value.) If H is indefinite, a feasible direction of decrease may or may not exist (so the point may not be a local or weak minimizer).
 
  At a dead-point, the necessary conditions for optimality are satisfied (x is feasible, the reduced gradient is negligible, the Lagrange multipliers are optimal, and the reduced Hessian is positive semidefinite.) However, the reduced Hessian is nearly singular, and/or there are some very small multipliers. If H is indefinite, x is not necessarily a local solution of the problem. Verification of optimality requires further information, and is in general an NP-hard problem [22].
 
  2: The solution appears to be unbounded. The objective is not bounded below in the feasible region, if the elements of x are allowed to be arbitrarily large. This occurs if a step larger than Infinite Step would have to be taken in order to continue the algorithm, or the next step would result in a component of x having magnitude larger than Infinite Bound. It should not occur if H is sufficiently positive definite.
 
  3: The constraints could not be satisfied. The problem has no feasible solution.
 
  4: One of the iteration limits was reached before normal termination occurred. See Feasibility Phase Iterations and Optimality Phase Iterations.
 
  5: The Maximum degrees of freedom is too small. The reduced Hessian must expand if further progress is to be made.
 
  6: An input parameter was invalid.
 
  7: The Problem type was not recognized.
 
rc Reduced costs. If ninf=0, last m == -v_k.
 
Iter Number of iterations.
FuncEv Number of function evaluations. Set to Iter.
GradEv Number of gradient evaluations. Set to Iter.
ConstrEv Number of constraint evaluations. Set to 0.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations. Not Set.
 
Solver Name of the solver (QPOPT).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.cLamda Lagrangian multipliers.
 
SOL.iState State for variables and constraints in iState.
 

3.5.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by QPOPT, unless the value is altered in the SPECS file.


Description of Inputs
The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 10   0,1,5,10,20,30
 
Convergence Tolerances
10. OPTIMALITY TOLERANCE >0 1.1E-8   sqrt(eps)
11. FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
 
Other Tolerances
21. CRASH TOLERANCE 0 0.01 <1
27. RANK TOLERANCE >0 1.1E-14   100*eps
30. ITERATION LIMIT >0 max(50,5(n+m))
33. MIN SUM YES (or NO) 0 0 1 1=min infeas.
  IF 1 (MIN SUM YES), minimize the infeasibilities before return.
 
36. FEASIBILITY PHASE ITERATIONS >0 max(50,5(n+m))
45. INFINITE STEP SIZE >0 1E20
47. HESSIAN ROWS 0 n n 0 if FP or LP
  Implicitly given by the dimensions of H in the call from Matlab
 
48. MAX DEGREES OF FREEDOM 0 n n
  ONLY USED IF HESSIAN ROWS == N
 
Frequencies
51. CHECK FREQUENCY >0 50
52. EXPAND FREQUENCY >0 5
 

3.6  LSSOL

3.6.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.6.2 for information on how to use LSSOL with TOMLAB.

Purpose
lssol solves least squares optimization problems defined as

 
min
x
f(x) =
1
2
(yH x)T (yH x) + cT x
   
s/t
    x,    
bL A x bU
    (15)
where x ∈ Rn, y ∈ RM, H ∈ RM × n, A ∈ Rm1 × n, bL,bU ∈ Rn+m1.

Dependent on the input of H, y, c and Upper, any of the following ten problems are solved. If m == length(y) > 0, then a LS problem is assumed Upper is > 0 ==> H is upper trapezodial.



Table 2: Problems solved by LSSOL.


H y c Upper Description
empty empty empty Feasible point problem (FP)
empty empty n x 1 Linear programming problem (LP)
n x n empty empty 0 Quadratic programming problem (QP1)
n x n empty n x 1 0 Quadratic programming problem (QP2)
n x n empty empty 1 Quadratic programming problem (QP3)
n x n empty n x 1 1 Quadratic programming problem (QP4)
m x n m empty 0 Least squares problem (LS1)
m x n m n x 1 0 Least squares problem (LS2)
m x n m empty 1 Least squares problem (LS3)
m x n m n x 1 1 Least squares problem (LS4)
 

Calling Syntax
[x, Inform, iState, cLamda, Iter, fObj, r, kx] = lssol(A, bl, bu, c, x, optPar, H, y, Warm, iState, Upper, kx, SpecsFile, PrintFile, SummFile, PriLev, ProbName );



Description of Inputs
The following fields are used:
 
A Constraint matrix, nclin x n (DENSE).
 
bl Lower bounds on (x,Ax), nclin+n x 1 vector (DENSE).
 
bu Upper bounds on (x,Ax), nclin+n x 1 vector (DENSE).
 
c Linear objective function cost coeffs, n x 1 (DENSE). If isempty(c), setting c(1:n)=0;.
 
x Initial estimate of solution vector x. If isempty(x), x(1:n)=0.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. If length(optPar) < 62, lssol sets the rest of the values to missing value (-999).
 
H Matrix H in quadratic part of objective function (DENSE). H is either empty (FP, LP), or quadratic n x n (QP), or m x n (LS).
 
y Data vector of length m for LS problem, otherwise empty.
 
Warm If Warm > 0, then warm start, otherwise cold Start. Default 0. If warm start, then x and iState must be set properly. Normally the values from last call to lssol are used.
 
iState Working set (if Warm start) (nclin+m) x 1 (DENSE). If length(iState) < nclin+m, setting iState(1:n+m)=0 & Warm=0.
 
iState(i)=0: Corresponding constraint not in the initial working set.
iState(i)=1: Inequality constraint at its lower bound in working set.
iState(i)=2: Inequality constraint at its upper bound in working set.
iState(i)=3: Equality constraint in the initial working set, bl(i)==bu(i).
 
Upper If > 0, then H must be an upper-trapezoidal matrix.
 
kx Order of the n columns in A for the QP3, QP4, LS3 or LS4 problem.
 
SpecsFile Name of the OPTIONS File, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Print level in the lssol MEX-interface..
 
  = 0 Silent
  = 10 Dimensions are printed
  if isempty(PriLev), set as 0.
 

Description of Outputs

The following fields are used:
 
 
x Solution vector with decision variable values (n x 1 vector).
Inform Result of LSSOL run.
  0 = Optimal solution with unique minimizer found.
  1 = Weak local solution (nonunique) was reached.
  2 = The solution appears to be unbounded.
  3 = The constraints could not be satisfied. The problem has no feasible solution.
  4 = Too many iterations, in either phase.
  5 = 50 changes of working set without change in x, cycling?
  6 = An input parameter was invalid.
  Other = UNKNOWN LSSOL Inform value.
 
iState Status of working set, se input description of iState.
 
cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
Iter Number of iterations.
 
Ax A*x.
 
fObj Value of objective function if feasible, or sum of infeasibilities.
 
r Residual for LS problem.
 

3.6.2  Using TOMLAB

Purpose
lssolTL solves least squares optimization problems defined as

 
min
x
f(x) =
1
2
|| C xd ||
   
s/t
xL x xU,
bL A x bU
    (16)
where x, xL, xU ∈ Rn, d ∈ RM, C ∈ RM × n, A ∈ Rm1 × n, bL,bU ∈ Rm1.


Calling Syntax
Using the driver routine tomRun:

Prob = ◇Assign( ... );
Result = tomRun('lssol', Prob ... );

or

Prob = ProbCheck( ... );
Result = lssolTL(Prob);

Call Prob = ◇Assign( ... ) or Prob = ProbDef; to define the Prob for the second option.


Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
A Linear constraint matrix.
 
QP.c Linear coefficients in objective function.
 
QP.F Quadratic matrix of size nnObj x nnObj.
 
PriLevOpt Print level.
 
Warm If true, use warm start, otherwise cold start.
 
SOL.xs Solution (and slacks not used) from previous run (Warm start).
 
SOL.iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SOL.cLamda Lagrangian multipliers from previous run (Warm start).
 
SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SummFile Name of SOL Summary File.
 
optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Exact gradient computed at optimum.
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from lssol.m (similar to TOMLAB).
Inform LSSOL information parameter.
  0 = Optimal solution with unique minimizer found.
  1 = Weak local solution (nonunique) was reached.
  2 = The solution appears to be unbounded.
  3 = The constraints could not be satisfied. The problem has no feasible solution.
  4 = Too many iterations, in either phase.
  5 = 50 changes of working set without change in x, cycling?
  6 = An input parameter was invalid.
  Other = UNKNOWN LSSOL Inform value.
 
 
rc Reduced costs. If ninf=0, last m == -v_k.
 
Iter Number of iterations.
FuncEv Number of function evaluations. Set to Iter.
GradEv Number of gradient evaluations. Set to Iter.
ConstrEv Number of constraint evaluations. Set to 0.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations. NOT SET.
 
Solver Name of the solver (LSSOL).
SolverAlgorithm Description of the solver.
 
SOL.xs Solution and slack variables.
 
SOL.cLamda Lagrangian multipliers.
 
SOL.iState State for variables and constraints in iState.
 

3.6.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by LSSOL, unless the value is altered in the SPECS file.


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 10   0,1,5,10,20,30
 
Convergence Tolerances
10. OPTIMALITY TOLERANCE >0 1.1E-8   sqrt(eps)
11. FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
 
Other Tolerances
21. CRASH TOLERANCE >0 0.01 <1
27. RANK TOLERANCE >0 1.1E-14   100*eps
30. ITERATIONS LIMIT >0 max(50,5(n+m))
36. FEASIBILITY PHASE ITERATIONS >0 max(50,5(n+m))
45. INFINITE STEP SIZE >0 1E20
46. INFINITE BOUND SIZE >0 1E20
 


3.7  NLSSOL

3.7.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.7.2 for information on how to use NLSSOL with TOMLAB.

Purpose
nlssol solves constrained nonlinear least squares problems defined as

 
min
x
f(x) =
1
2
r(x)T r(x)
   
s/t
    x,    
bL A x bU
    c(x)    
    (17)
where x ∈ Rn, r(x) ∈ RM, A ∈ Rm1 × n, bL,bU ∈ Rn+m1+m2 and c(x) ∈ Rm2.
nlssol uses a sequential quadratic programming algorithm, with a positive-definite quasi-Newton approximation to the transformed Hessian Q'HQ of the Lagrangian function (which will be stored in the array R).


Calling Syntax
The file 'funfdf.m' must be defined and contain: function [r, J] = funfdf(x, Prob, mode, nstate) to compute the residual vector r and the Jacobian matrix J at the point x.

The file 'funcdc.m' must be defined and contain: function [c, dc] = funcdc(x, Prob, mode, nstate) to compute the nonlinear constraint value c and the constraint Jacobian dc for the nonlinear constraints at the point x.
[x, Inform, iState, cLamda, iwCount, fObj, gObj, r, J, fCon, gCon, H] = nlssol( A, bl, bu, x, Prob, y, optPar, Warm, H, iState, cLamda, SpecsFile, PrintFile, SummFile, PriLev, ProbName );


Description of Inputs
The following fields are used:
 
A Constraint matrix, nb x n (DENSE).
 
bl Lower bounds on (x,Ax,c(x)).
 
bu Upper bounds on (x,Ax,c(x)).
 
x Initial x vector (n x 1). If Warm start x must correspond to values in H and iState.
 
Prob Must be a structure. No check is made in the MEX interface!
 
  If TOMLAB calls nlssol, then Prob is the standard TOMLAB problem structure, otherwise the user should set:
 
  Prob.P = ProblemNumber, where ProblemNumber is some integer.
 
  Two user written routines must be written:
 
  funfdf, name stored in Prob.FUNCS.rJ, with syntax [mode, r, J] = funfdf(x, Prob, mode, nstate)
 
  funcdc, name stored in Prob.FUNCS.cdc, with syntax [mode, c, dc] = funcdc(x, Prob, mode, nstate)
 
  NLSOL is calling the TOMLAB routines nlp_rJ.m and nlp_cdc.m in the callback, and they call funfdf and funcdc, respectively.
 
  If these fields in Prob are empty (Prob.FUNCS.rJ, Prob.FUNCS.cdc), the TOMLAB callback routines calls the usual function routines. Then the Prob struct should be normally defined, and the fields Prob.FUNCS.r, Prob.FUNCS.J, Prob.FUNCS.c, Prob.FUNCS.dc be set in the normal way (e.g. by the routine mFiles.m, or one of the Assign-routines like clsAssign.m).
 
  If the mode parameter is 0, funfdf should return r, otherwise both r and the Jacobian matrix J. If the mode parameter is 0, funcdc should return c, otherwise both c and dc. Note that each row in dc corresponds to a constraint, and that dc should be a dense matrix. If the matrix dc is returned as a sparse Matlab matrix, nlp_cdc will do full(dc) to get a dense matrix.
 
  The user could also write his own versions of the routines nlp_rJ.m and nlp_cdc.m and put them before in the path.
 
y Data vector of length. Number of residuals == length(y) == m.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. Set empty if only using default parameters.
 
Warm Flag for Warm start (==1) or Cold Start (==0 ), i.e. normal mode. If 'Warm Start', iState, cLamda, H and x must supply correct values.
 
H Hessian matrix, only accessed if Warm start. Must select: Hessian = Yes in order to do a warm start. Hessian Yes is equivalent to optPar(50) = 1 (default is 0).
 
iState Working set (if Warm start) (nb = n+nclin+ncnln) x 1. If length(iState) < nb, setting iState(1:nb)=0;
 
iState(i)=0: Corresponding constraint not in the initial working set.
iState(i)=1: Inequality constraint at its lower bound in working set.
iState(i)=2: Inequality constraint at its upper bound in working set.
iState(i)=3: Equality constraint in the initial working set, bl(i)==bu(i).
 
cLamda Lagrangian multipliers for the n + nclin + ncnln constraints. If Warm start, cLamda(n+nclin+1:n+nclin+ncnln), the nonlinear Lagrange multipliers, must correspond to values in iState.
 
SpecsFile Name of the OPTIONS File, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Print level in the nlssol MEX-interface.
 
  = 0 Silent
  = 10 Dimensions are printed
  if isempty(PriLev), set as 0.
 
ProbName Name of the problem. <=100 characters are used in the MEX interface (Not used by MEX-interface).
 

Description of Outputs
The following fields are used:
 
 
x Solution vector (n by 1) with n decision variable values.
Inform Result of NLSSOL run.
  0 = Optimal solution found.
  1 = Optimal solution found but not to requested accuracy.
  2 = No feasible point for the linear constraints.
  3 = No feasible point for the nonlinear constraints.
  4 = Too many major iterations.
  5 = Problem is unbounded, or badly scaled.
  6 = The current point cannot be improved on.
  7 = Large errors found in the derivatives.
  9 = An input parameter is invalid.
  Other = User requested termination
 
iState Status of working set, se input description of iState.
 
cLamda Lagrangian multipliers (dual solution vector) (nb x 1 vector).
 
iwCount Number of iterations (iwCount(1)), function evaluations (iwCount(2)) and constraint evaluations (iwCount(3)).
 
fObj Objective function value at optimum.
 
gObj Gradient of the objective, n x 1.
 
r Residual vector m x 1.
 
J Jacobian matrix m x n.
 
fCon Nonlinear constraint vector, ncnln x 1.
 
gCon Gradient matrix of the nonlinear constraint vector, ncnln x n.
 
H Cholesky factor of Hessian approximation. Hessian no - reordered variables. Hessian yes - natural order of variables, used for Warm start.
 

3.7.2  Using TOMLAB

Purpose
nlssolTL solves constrained nonlinear least squares problems defined as

 
min
x
f(x) =
1
2
r(x)T r(x)
   
s/t
xL x xU,
bL A x bU
cL c(x) cU
    (18)
where x, xL, xU ∈ Rn, r(x) ∈ RM, A ∈ Rm1 × n, bL,bU ∈ Rm1 and cL,c(x),cU ∈ Rm2.


Calling Syntax
Using the driver routine tomRun:

Prob = clsAssign( ... );
Result = tomRun('nlssol', Prob ... );



Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
c_L, c_U Bounds on nonlinear constraints.
 
A Linear constraint matrix.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution from previous run, elements xs[1:n].
 
SOL.iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SOL.cLamda Lagrangian multipliers (dual solution vector) (nb x 1 vector).
 
SOL.H Cholesky factor of Hessian approximation. Hessian no - reordered variables. Hessian yes - natural order of variables, used for Warm start.
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient of the function.
 
r_k Residual vector.
J_k Jacobian matrix.
c_k Nonlinear constraint residuals.
 
cJac Nonlinear constraint gradients.
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
cState State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from nlssol.m (similar to TOMLAB).
Inform NLSSOL information parameter.
  0 = Optimal solution found.
  1 = Optimal solution found but not to requested accuracy.
  2 = No feasible point for the linear constraints.
  3 = No feasible point for the nonlinear constraints.
  4 = Too many major iterations.
  5 = Problem is unbounded, or badly scaled.
  6 = The current point cannot be improved on.
  7 = Large errors found in the derivatives.
  9 = An input parameter is invalid.
  Other = User requested termination
 
 
rc Reduced costs. If ninf=0, last m == -v_k.
 
Iter Number of iterations.
FuncEv Number of function evaluations.
GradEv Number of gradient evaluations.
ConstrEv Number of constraint evaluations.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations.
 
Solver Name of the solver (nlssol).
SolverAlgorithm Description of the solver.
 
SOL.x Solution vector (n by 1) with n decision variable values.
 
SOL.iState basis status of constraints + variables, (m + n x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu), 2=superbasic (between bounds), 3=basic (between bounds).
 
SOL.cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
SOL.H Cholesky factor of Hessian approximation. Hessian no - reordered variables. Hessian yes - natural order of variables, used for Warm start.
 

3.7.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by NLSSOL, if not the value is altered in the SPECS file (input SpecsFile)


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 10   0,1,5,10,20,30
  or MAJOR PRINT LEVEL
2. MINOR PRINT LEVEL 0 0   0,1,5,10,20,30
 
Convergence Tolerances
9. NONLINEAR FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
10. OPTIMALITY TOLERANCE >0 3.0E-13   eps0.8
11. LINEAR FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
 
Derivative checking
13. VERIFY LEVEL -1 -1 3 -1,0,1,2,3
14. START OBJECTIVE CHECK AT COL 0 1 n
15. STOP OBJECTIVE CHECK AT COL 0 n n
16. START CONSTRAINT CHECK AT COL 0 1 n
17. STOP CONSTRAINT CHECK AT COL 0 n n
 
Other Tolerances
21. CRASH TOLERANCE >0 0.01 <1
22. LINESEARCH TOLERANCE >0 0.9 <1
30. ITERATIONS LIMIT >0 max(50,3(n+m_L)+10*m_N)
36. MINOR ITERATIONS LIMIT >0 max(50,3(n+m_L+m_N))
37. STEP LIMIT >0 2
39. DERIVATIVE LEVEL 0 3 3 0,1,2,3
41. FUNCTION PRECISION >0 3.0E-13   eps0.8=epsR
42. DIFFERENCE INTERVAL >0 5.48E-8   eps0.4
43. CENTRAL DIFFERENCE INTERVAL >0 6.70E-5   eps0.8/3
45. INFINITE STEP SIZE >0 max(BIGBND,1E10)
46. INFINITE BOUND SIZE >0 1E10   = BIGBND
47. JTJ INITIAL HESSIAN 0 1   0 = UNIT
48. RESET FREQUENCY 0 2   Reset to (47)
50. HESSIAN YES or NO 0 0   1 = YES
 


3.8  NPSOL

3.8.1  Direct Solver Call

A direct solver call is not recommended unless the user is 100 % sure that no other solvers will be used for the problem. Please refer to Section 3.8.2 for information on how to use NPSOL with TOMLAB.

Purpose
npsol solves dense nonlinear optimization problems defined as

 
min
x
f(x)
   
s/t
    x,    
bL A x bU
    c(x)    
    (19)


where x ∈ Rn, f(x) ∈ R, A ∈ Rm1 × n, bL,bU ∈ Rn+m1+m2 and c(x) ∈ Rm2.


Calling Syntax
The file 'funfdf.m' must be defined and contain: function [mode, f, g] = funfdf(x, Prob, mode, nstate) to compute the objective function f and the gradient g at the point x.
The file 'funcdc.m' must be defined and contain: function [mode, c ,dcS] = funcdc(x, Prob, mode, nstate) to compute the nonlinear constraint value c and the constraint Jacobian dcS for the nonlinear constraints at the point x.
[x, Inform, iState, cLamda, iwCount, fObj, gObj, fCon, gCon, H] = npsol( A, bl, bu, x, Prob, optPar, Warm, H, iState, cLamda, SpecsFile, PrintFile, SummFile, PriLev, ProbName );



Description of Inputs
The following fields are used:
 
A Constraint matrix, m x n. (DENSE).
 
bl Lower bounds on (x,Ax,c(x)).
 
bu Upper bounds on (x,Ax,c(x)).
 
x Initial x vector (n x 1). If Warm start x must correspond to values in H and iState.
 
Prob Must be a structure. No check is made in the MEX interface.
 
  If TOMLAB calls npsol, then Prob is the standard TOMLAB problem structure, otherwise the user should set:
 
  Prob.P = ProblemNumber, where ProblemNumber is some integer.
 
  Two user written routines must be written:
 
  funfdf, actual name stored in Prob.FUNCS.fg, with syntax [mode, f, g] = funfdf(x, Prob, mode, nstate).
 
  funcdc, actual name stored in Prob.FUNCS.cdc, with syntax [mode, c, dc] = funcdc(x, Prob, mode, nstate).
 
  NPSOL is calling the TOMLAB routines nlp_fg.m and nlp_cdc.m in the callback, and they call funfdf and funcdc, respectively.
 
  If these fields in Prob are empty (Prob.FUNCS.fg, Prob.FUNCS.cdc), the TOMLAB callback routines calls the usual function routines. Then the Prob struct should be normally defined, and the fields Prob.FUNCS.f, Prob.FUNCS.g, Prob.FUNCS.c, Prob.FUNCS.dc be set in the normal way (e.g. by the routine mFiles.m, or one of the Assign-routines like conAssign.m).
 
  If the mode parameter is 0, funfdf should return f, otherwise both f and the gradient vector g. If the mode parameter is 0, funcdc should return c, otherwise both c and dc. Note that each row in dc corresponds to a constraint, and that dc should be a dense matrix. If the matrix dc is returned as a sparse Matlab matrix, nlp_cdc will do full(dc) to get a dense matrix.
 
  The user could also write his own versions of the routines nlp_fg.m and nlp_cdc.m and put them before in the path.
 
optPar Vector with optimization parameters overriding defaults and the optionally specified SPECS file. Set empty if only using default parameters.
 
Warm Flag for Warm start (==1) or Cold Start (==0 ), i.e. normal mode. If 'Warm Start', iState, cLamda, H and x must supply correct values.
 
H Hessian matrix, only accessed if Warm start. Must select: Hessian = Yes in order to do a warm start Hessian Yes is equivalent to optPar(50) = 1 (default is 0).
 
iState Working set (if Warm start) (nb = n+nclin+ncnln) x 1 (DENSE). If length(iState) < nb, setting iState(1:nb)=0;;
 
iState(i)=0: Corresponding constraint not in the initial working set.
iState(i)=1: Inequality constraint at its lower bound in working set.
iState(i)=2: Inequality constraint at its upper bound in working set.
iState(i)=3: Equality constraint in the initial working set, bl(i)==bu(i).
 
cLamda Lagrangian multipliers for the n + nclin + ncnln constraints. If Warm start, cLamda(n+nclin+1:n+nclin+ncnln), the nonlinear Lagrange multipliers, must correspond to values in iState.
 
SpecsFile Name of the input parameter file, see TOMLAB Guide.
 
PrintFile Name of the Print file. Name includes the path, maximal number of characters = 500.
 
SummFile Name of the Summary file. Name includes the path, maximal number of characters = 500.
 
PriLev Print level in the npsol MEX-interface.
  = 0 Silent
  = 10 Dimensions are printed.
 
ProbName Name of the problem. <=100 characters are used in the MEX interface. (Not used by MEX-interface).
 

Description of Outputs
The following fields are used:
 
 
x Solution vector (n by 1) with n decision variable values.
Inform Result of NPSOL run.
  0 = Optimal solution found.
  1 = Optimal solution found but not to requested accuracy.
  2 = No feasible point for the linear constraints.
  3 = No feasible point for the nonlinear constraints.
  4 = Too many major iterations.
  6 = The current point cannot be improved on.
  7 = Large errors found in the derivatives.
  9 = An input parameter is invalid.
  Other = User requested termination
 
iState Status of working set, se input description of iState.
 
cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
iwCount Number of iterations (iwCount(1)), function evaluations (iwCount(2)) and constraint evaluations (iwCount(3)).
 
fObj Objective function value at optimum.
 
gObj Gradient of the nonlinear objective.
 
fCon Nonlinear constraint vector.
 
gCon Gradient matrix of the nonlinear constraint vector.
 
H Cholesky factor of Hessian approximation. Hessian no - reordered variables. Hessian yes - natural order of variables, used for Warm start.
 

3.8.2  Using TOMLAB

Purpose
npsolTL solves dense nonlinear optimization problems defined as

 
min
x
f(x)
   
s/t
xL x xU,
bL A x bU
cL c(x) cU
    (20)


where x, xL, xU ∈ Rn, f(x) ∈ R, A ∈ Rm1 × n, bL,bU ∈ Rm1 and cL,c(x),cU ∈ Rm2.


Calling Syntax
Using the driver routine tomRun:

Prob = ◇Assign( ... );
Result = tomRun('npsol', Prob ... );



Description of Inputs
Prob, The following fields are used:
 
x_L, x_U Bounds on variables.
 
b_L, b_U Bounds on linear constraints.
 
c_L, c_U Bounds on nonlinear constraints.
 
A Linear constraint matrix.
 
PriLevOpt Print level.
 
WarmStart If true, use warm start, otherwise cold start.
 
SOL.xs Solution from previous run, elements xs[1:n].
 
SOL.iState Working set (if Warm start) (n+m) x 1 (DENSE) If length(iState) < n+m, setting iState(1:n+m)=0;
 
iState(i)=0: Corresponding constraint not in the initial QP working set.
iState(i)=1: Inequality constraint at its lower bound in QP working set.
iState(i)=2: Inequality constraint at its upper bound in QP working set.
iState(i)=3: Equality constraint in the initial QP working set, bl(i)==bu(i).
 
SOL.cLamda Lagrangian multipliers (dual solution vector) (nb x 1 vector).
 
SOL.H Cholesky factor of Hessian approximation Hessian no - reordered variables Hessian yes - natural order of variables, used for Warm start.
 
SOL.SpecsFile Name of user defined SPECS file, read BEFORE optPar() is used.
 
SOL.PrintFile Name of SOL Print file. Amount and type of printing determined by SPECS parameters or optPar parameters.
 
SOL.SummFile Name of SOL Summary File.
 
SOL.optPar Elements > -999 takes precedence over corresponding TOMLAB params.
 

Description of Outputs
Result, The following fields are used:
 
 
Result The structure with results (see ResultDef.m).
f_k Function value at optimum.
x_k Solution vector.
x_0 Initial solution vector.
g_k Gradient of the function.
c_k Nonlinear constraint residuals.
 
cJac Nonlinear constraint gradients.
 
xState State of variables. Free == 0; On lower == 1; On upper == 2; Fixed == 3;
bState State of linear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
cState State of nonlinear constraints. Free == 0; Lower == 1; Upper == 2; Equality == 3;
 
v_k Lagrangian multipliers (for bounds + dual solution vector).
 
ExitFlag Exit status from npsol.m (similar to TOMLAB).
Inform NPSOL information parameter.
  0 = Optimal solution found.
  1 = Optimal solution found but not to requested accuracy.
  2 = No feasible point for the linear constraints.
  3 = No feasible point for the nonlinear constraints.
  4 = Too many major iterations.
  6 = The current point cannot be improved on.
  7 = Large errors found in the derivatives.
  9 = An input parameter is invalid.
  Other = User requested termination
 
rc Reduced costs. If ninf=0, last m == -v_k.
 
Iter Number of iterations.
FuncEv Number of function evaluations.
GradEv Number of gradient evaluations.
ConstrEv Number of constraint evaluations.
 
QP.B Basis vector in TOMLAB QP standard.
 
MinorIter Number of minor iterations.
 
Solver Name of the solver (npsol).
SolverAlgorithm Description of the solver.
 
SOL.x Solution vector (n by 1) with n decision variable values.
 
SOL.iState basis status of constraints + variables, (m + n x 1 vector). State of variables: 0=nonbasic (on bl), 1=nonbasic (on bu), 2=superbasic (between bounds), 3=basic (between bounds).
 
SOL.cLamda Lagrangian multipliers (dual solution vector) (m x 1 vector).
 
SOL.H Cholesky factor of Hessian approximation. Hessian no - reordered variables. Hessian yes - natural order of variables, used for Warm start.
 

3.8.3  optPar

Description
Use missing value (-999 or less), when no change of parameter setting is wanted. The default value will then be used by NPSOL, if not the value is altered in the SPECS file (input SpecsFile).


Description of Inputs

The following fields are used:
# SPECS keyword text Lower Default Upper Comment
 
 
Printing
1. PRINT LEVEL 0 10   0,1,5,10,20,30
  or MAJOR PRINT LEVEL
2. MINOR PRINT LEVEL 0 0   0,1,5,10,20,30
 
Convergence Tolerances
9. NONLINEAR FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
10. OPTIMALITY TOLERANCE >0 3.0E-13   eps0.8
11. LINEAR FEASIBILITY TOLERANCE >0 1.1E-8   sqrt(eps)
 
Derivative checking
13. VERIFY LEVEL -1 -1 3 -1,0,1,2,3
14. START OBJECTIVE CHECK AT COL 0 1 n
15. STOP OBJECTIVE CHECK AT COL 0 n n
16. START CONSTRAINT CHECK AT COL 0 1 n
17. STOP CONSTRAINT CHECK AT COL 0 n n
 
Other Tolerances
21. CRASH TOLERANCE >0 0.01 <1
  Note: Decision variables will be set to the closest bound to the starting point
  based on this tolerance before running the optimization.
22. LINESEARCH TOLERANCE >0 0.9 <1
 
30. ITERATIONS LIMIT >0 max(50,3(n+m_L)+10*m_N)
36. MINOR ITERATIONS LIMIT >0 max(50,3(n+m_L+m_N))
37. STEP LIMIT >0 2
39. DERIVATIVE LEVEL 0 3 3 0,1,2,3
  Is set by npsolTL dependent on Prob.ConsDiff, Prob.NumDiff
41. FUNCTION PRECISION >0 3.0E-13   eps0.8=epsR
42. DIFFERENCE INTERVAL >0 5.48E-8   eps0.4
43. CENTRAL DIFFERENCE INTERVAL >0 6.70E-5   eps0.8/3
45. INFINITE STEP SIZE >0 max(BIGBND,1E10)
46. INFINITE BOUND SIZE >0 1E10   = BIGBND
50. HESSIAN YES or NO 0 0   1 = YES
 

« Previous « Start » Next »