If you’re solving the same problem many times with different values
of a parameter, Convex.jl can initialize many solvers with the solution
to the previous problem, which sometimes speeds up the solution time.
This is called a warm start.

To use this feature,
pass the optional argument warmstart=true to the solve! method.

Convex.jl allows you to fix a variable x to a value by calling the fix! method.
Fixing the variable essentially turns it into a constant.
Fixed variables are sometimes also called parameters.

fix(x, v) fixes the variable x to the value v.

fix(x) fixes x to the value x.value, which might be the value
obtained by solving another problem involving the variable x.

To allow the variable x to vary again, call free!(x).

Fixing and freeing variables can be particularly useful as a tool
for performing alternating minimization on nonconvex problems.
For example, we can find an approximate solution to a nonnegative matrix factorization problem
with alternating minimization as follows.
We use warmstarts to speed up the solution.