# SOL QP-MINOS

## Using TOMLAB

### Purpose

minosQPTL solves quadratic optimization problems defined as

${\begin{array}{ll}\min \limits _{x}&f(x)={\frac {1}{2}}x^{T}Fx+c^{T}x\\&\\s/t&{\begin{array}{lcccl}x_{L}&\leq &x&\leq &x_{U},\\b_{L}&\leq &Ax&\leq &b_{U}\\\end{array}}\end{array}}$ where $\displaystyle c, x, x_L, x_U \in \MATHSET{R}^n$ , $\displaystyle F \in \MATHSET{R}^{n \times n}$ , $\displaystyle A \in \MATHSET{R}^{m_1 \times n}$ , and $\displaystyle b_L,b_U \in \MATHSET{R}^{m_1}$ .

### 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.moremem Add more memory if MINOS stops with not enough storage message. 1E6 is 10MB of memory. Default n+m (number of variables + linear constraints).
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. See Table 50.

### 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.
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 )Tp, 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 -p. Reduced costs vector is of n+m length.
Iter Number of iterations.
FuncEv Number of function 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.

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

m3=1 if length(Prob.QP.c) > 0, otherwise m3=0. TOMLAB default: max(10000,3(m+m3) + 10nnL).

0 3(m+m3) + 10nnL
31. PARTIAL PRICE 1 1
32. MAXIMIZE 0 0 1 1=maximize
39. DERIVATIVE LEVEL

Is always set by minosqpTL to 3.

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.69E-5 eps0.8/3
44. COMPLETION 0 1 LC, 0 1 NC 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

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.

1 50 1+nnL
Frequencies II
51. CHECK FREQUENCY > 0 60
52. EXPAND FREQUENCY > 0 10000
53. FACTORIZATION FREQUENCY > 0 50
LU II
63. LU PARTIAL PIVOTING

or LU COMPLETE PIVOTING

or LU ROOK PIVOTING

0 0 3 0=partial

1=complete

2=rook