Assistance in writing my objective function with a matrix-matrix multiplication in DCP format


(Sean) #1

I am trying to write the following objective function in DCP format:

f(Z,\Omega) = \text{Tr}[Z \Omega]

with Z, \Omega square, PSD matrices. This is just one term in an overall larger objective function. I tried rewriting it using norm and quad_form in different ways, but I can’t seem to get around that inner matrix-matrix multiplication and keep getting rejected by CVX for violating the DCP rules. Would anyone have a suggestion on how to cram this thing into CVX following the DCP rules?

For example, the code below is rejected with the error “Disciplined convex programming error: Only scalar quadratic forms can be specified in CVX.”

cvx_begin sdp
variable Omega(q,q) semidefinite
variable Z(q,q) semidefinite
minimize( norm(Z*Omega,‘fro’)
cvx_end


(Mark L. Stone) #2

This is non-convex, so it can’t be “crammed” into CVX.

Consider the version in which Z and Omega are both scalar variables:
f(Z,Omega) := Tr(Z * Omega) = Z * Omega
has a Hessian having eigenvalues 1 and -1, and therefore is indefinite, and can not be used in CVX. The situation doesn’t get any better in higher dimensions.


(Sean) #3

Thank you, of course. I did the Hessian of the scalar version in my head and thought both eigenvalues were +1. Feeling sheepish.