# SOL LSSOL

 This page is part of the SOL Manual. See SOL.

## 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 #Using TOMLAB for information on how to use LSSOL with TOMLAB.

### Purpose

lssol solves least squares optimization problems defined as

${\displaystyle {\begin{array}{ll}\min \limits _{x}&f(x)={\frac {1}{2}}(y-Hx)^{T}(y-Hx)+c^{T}x\\&\\s/t&{\begin{array}{lcccl}&&x,&&\\b_{L}&\leq &Ax&\leq &b_{U}\\\end{array}}\end{array}}}$

where ${\displaystyle x\in \mathbb {R} ^{n}}$, ${\displaystyle y\in \mathbb {R} ^{M}}$, ${\displaystyle H\in \mathbb {R} ^{M\times n}}$, ${\displaystyle A\in \mathbb {R} ^{m_{1}\times n}}$, ${\displaystyle b_{L},b_{U}\in \mathbb {R} ^{n+m_{1}}}$.

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.

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 solu- tion.

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.

## Using TOMLAB

Purpose

lssolTL solves least squares optimization problems defined as

${\displaystyle {\begin{array}{ll}\min \limits _{x}&f(x)={\frac {1}{2}}||Cx-d||\\&\\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 x,x_{L},x_{U}\in \mathbb {R} ^{n}}$, ${\displaystyle d\in \mathbb {R} ^{M}}$, ${\displaystyle C\in \mathbb {R} ^{M\times n}}$, ${\displaystyle A\in \mathbb {R} ^{m_{1}\times n}}$, ${\displaystyle b_{L},b_{U}\in \mathbb {R} ^{m_{1}}}$.

### Calling Syntax

Using the driver routine tomRun :

Prob = ''o''Assign( ... );
Result = tomRun('lssol', Prob ... );
or
Prob = ProbCheck( ... );
Result = lssolTL(Prob);


Call Prob = oAssign( ... ) 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. 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.
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 solu- tion.

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.

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