# Quick Tutorial

Consider a constrained least squares problem

\begin{aligned} \begin{array}{ll} \mbox{minimize} & \|Ax - b\|_2^2 \\ \mbox{subject to} & x \geq 0 \end{array} \end{aligned}

with variable $x\in \mathbf{R}^{n}$, and problem data $A \in \mathbf{R}^{m \times n}$, $b \in \mathbf{R}^{m}$.

This problem can be solved in Convex.jl as follows: :

julia> # Make the Convex.jl module available
using Convex, SCS

julia> # Generate random problem data
m = 4;  n = 5
5

julia> A = randn(m, n); b = randn(m, 1)
4×1 Array{Float64,2}:
-0.5982561974146283
1.8285635154246862
0.7473287766124718
1.9114497945229456

julia> # Create a (column vector) variable of size n x 1.
x = Variable(n)
Variable
size: (5, 1)
sign: real
vexity: affine
id: 104…137

julia> # The problem is to minimize ||Ax - b||^2 subject to x >= 0
# This can be done by: minimize(objective, constraints)
problem = minimize(sumsquares(A * x - b), [x >= 0])
minimize
└─ qol_elem (convex; positive)
├─ norm2 (convex; positive)
│  └─ + (affine; real)
│     ├─ …
│     └─ …
└─ [1.0]
subject to
└─ >= constraint (affine)
├─ 5-element real variable (id: 104…137)
└─ 0

current status: not yet solved

julia> # Solve the problem by calling solve!
solve!(problem, SCSSolver())
1  0  0 |  0  0

OPTIMAL (within feastol=1.6e-10, reltol=1.1e-09, abstol=1.1e-06).
Runtime: 0.000075 seconds.

ECOS 2.0.5 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
0  +9.999e+02  +1.010e+03  +1e+03  3e-02  9e-03  1e+00  1e+00    ---    ---    2  2  - |  -  -
1  +1.000e+03  +1.000e+03  +1e+01  3e-04  1e-04  1e-02  1e-02  0.9890  1e-04   2  1  2 |  0  0
2  +1.000e+03  +1.000e+03  +1e-01  4e-06  1e-06  1e-04  1e-04  0.9890  1e-04   2  1  1 |  0  0
3  +1.000e+03  +1.000e+03  +1e-03  4e-08  1e-08  1e-06  1e-06  0.9890  1e-04   2  1  1 |  0  0
4  +1.000e+03  +1.000e+03  +2e-05  5e-10  1e-10  2e-08  2e-08  0.9890  1e-04   2  0  1 |  0  0
5  +1.000e+03  +1.000e+03  +2e-07  5e-12  2e-12  2e-10  2e-10  0.9890  1e-04   2  0  0 |  0  0

OPTIMAL (within feastol=5.0e-12, reltol=1.7e-10, abstol=1.7e-07).
Runtime: 0.002381 seconds.

ECOS 2.0.5 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
0  +0.000e+00  -0.000e+00  +1e+03  4e-03  2e-04  1e+00  7e+02    ---    ---    1  2  - |  -  -
1  +1.316e+01  +1.351e+01  +7e+01  5e-04  2e-05  4e-01  4e+01  0.9495  1e-04   3  3  3 |  0  0
2  +1.609e+02  +1.676e+02  +8e+00  6e-05  2e-06  7e+00  5e+00  0.9231  8e-02   4  4  4 |  0  0
3  +1.698e+02  +1.699e+02  +9e-02  6e-07  2e-08  8e-02  6e-02  0.9890  1e-04   3  2  2 |  0  0
4  +1.699e+02  +1.699e+02  +1e-03  7e-09  2e-10  8e-04  7e-04  0.9890  1e-04   3  2  2 |  0  0
5  +1.699e+02  +1.699e+02  +1e-05  8e-11  2e-12  1e-05  7e-06  0.9890  1e-04   4  2  2 |  0  0
6  +1.699e+02  +1.699e+02  +1e-07  1e-12  2e-14  1e-07  8e-08  0.9890  1e-04   3  2  2 |  0  0

OPTIMAL (within feastol=1.1e-12, reltol=7.3e-10, abstol=1.2e-07).
Runtime: 1.441027 seconds.

ECOS 2.0.5 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
0  +0.000e+00  -0.000e+00  +2e+01  3e-01  2e-05  1e+00  1e+01    ---    ---    1  1  - |  -  -
1  +4.876e-01  +4.974e-01  +2e+00  3e-02  2e-06  1e-01  1e+00  0.9015  1e-03   2  2  2 |  0  0
2  +2.380e+00  +2.437e+00  +1e-01  2e-03  2e-07  7e-02  1e-01  0.9641  6e-02   2  2  2 |  0  0
3  +2.455e+00  +2.456e+00  +2e-03  2e-05  2e-09  7e-04  1e-03  0.9890  1e-04   1  1  1 |  0  0
4  +2.456e+00  +2.456e+00  +2e-05  2e-07  2e-11  8e-06  1e-05  0.9890  1e-04   1  1  1 |  0  0
5  +2.456e+00  +2.456e+00  +2e-07  3e-09  3e-13  9e-08  1e-07  0.9890  1e-04   1  1  1 |  0  0
6  +2.456e+00  +2.456e+00  +2e-09  3e-11  3e-15  1e-09  2e-09  0.9890  1e-04   1  1  1 |  0  0

OPTIMAL (within feastol=2.9e-11, reltol=8.5e-10, abstol=2.1e-09).
Runtime: 0.000249 seconds.

ECOS 2.0.5 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS

It     pcost       dcost      gap   pres   dres    k/t    mu     step   sigma     IR    |   BT
0  +0.000e+00  -0.000e+00  +1e+01  3e-01  9e-05  1e+00  6e+00    ---    ---    1  1  - |  -  -
1  +4.127e-02  +4.170e-02  +5e-01  2e-02  5e-06  5e-02  3e-01  0.9478  1e-04   2  1  1 |  0  0
2  +4.498e-01  +4.653e-01  +6e-02  3e-03  5e-07  2e-02  4e-02  0.9292  7e-02   2  2  2 |  0  0
3  +4.694e-01  +4.695e-01  +6e-04  3e-05  5e-09  3e-04  4e-04  0.9890  1e-04   1  1  1 |  0  0
4  +4.696e-01  +4.696e-01  +7e-06  3e-07  6e-11  3e-06  5e-06  0.9890  1e-04   1  1  1 |  0  0
5  +4.696e-01  +4.696e-01  +8e-08  4e-09  7e-13  3e-08  5e-08  0.9890  1e-04   2  1  1 |  0  0
6  +4.696e-01  +4.696e-01  +8e-10  4e-11  8e-15  4e-10  6e-10  0.9890  1e-04   2  1  1 |  0  0

OPTIMAL (within feastol=4.2e-11, reltol=1.8e-09, abstol=8.4e-10).
Runtime: 0.000120 seconds.

----------------------------------------------------------------------------
SCS v2.1.1 - Splitting Conic Solver
(c) Brendan O'Donoghue, Stanford University, 2012
----------------------------------------------------------------------------
Lin-sys: sparse-indirect
julia> # Check the status of the problem
problem.status # :Optimal, :Infeasible, :Unbounded etc.
:Optimal

julia> # Get the optimum value
problem.optval
7.7918849978570375