When I use CVX to deal with SDP problem, I often encounter many big symmetric matrices. It is time-consuming and error-prone to put the exact symmetric matrices inside the begin_cvx
and end_cvx
environment.
In the paper, we often simply it by using symbol * as an ellipsis for terms induced by symmetry.
My question is: If there is a similar simplification in CVX?
cvx_begin
variable joe_blow(2,2) symmetric
joe_blow(1,2) >= 2 % or more generally constrain ( == ) to some affine function of matrix or scalar variables
minimize(sum(sum(joe_blow)))
joe_blow == semidefinite(2)
cvx_end
Of course this can be generalized to larger problems, and with block (matrix) elements of larger matrix.
Or build up the block diagonal matrix and strict upper triangle U
as an expression from smaller matrix and scalar variables. Then form the expression block_diagonal_matrix + U + U'
There are other variations you can do.
I have no idea, what, if any, the differences in formulations provided by CVX to the solver are, and whether some ways of specifying the problems differ in CVX modeling time, solver time, and CVX and solver memory usage.
1 Like
Thanks for your reply. It sounds a good idea using block_diagonal_matrix + U + U'
.