Transforming a nearest matrix optimization problem to a standard form

101 Views Asked by At

I have an optimization problem in the form: $$ \min\; \lVert M - M_0 \rVert_F^2 \\ s.t. \;H(M) \succeq 0 $$ $$ m_{1,1} + \lVert m_{1,2:n}\rVert_2 \le 1 $$ $$ m_{1,1} + \lVert m_{2:n,1}\rVert_2 \le 1 $$ where the last two constraints use Matlab notation to indicate the remaining portions of the first row and column of $M$, and the norms are vector 2-norms. Here, $H$ is a linear function of $M$ (the elements of $H$ depend linearly on those of $M$).

There are a few questions:

  1. Is this a convex optimization problem?
  2. If so, how do I write it in a standard form, such as a semidefinite program?
  3. If not, then if we rewrite the objective as minimizing the Frobenius norm of $H-H_0$ and put the constraints in terms $M$ as a linear function of $H$, does that improve things?
1

There are 1 best solutions below

2
On BEST ANSWER

Yes, this is a convex problem. You can enter it into CVX in a straightforward manner. CVX will take care of converting it into a form which the solver can handle.

cvx_begin
variable M(n,n)
minimize(square_pos(norm(M - M0,'fro')))
H(M) == semidefinite(n)  % use the actual formula for H to determine H(M), rather than literally H(M)
M(1,1) + norm(M(1,2:n)) <= 1
M(1,1) + norm(M(2:n,1)) <= 1
cvx_end

After ccx_end is executed, then presuming the solver was successful, M will then contain the optimal value and be available as such in your MATLAB session.

You could just as well solve minimize(norm(M - M0,'fro')) because the argmin will be the same.