Error on Log_det optimization

A very brief description of the optimization is:

Complex symbols \mathbf{x} are transmitted through a non-ideal channel represented by complex matrix \mathbf{A}. Thus, the received symbols are:

$$\mathbf{y} = \mathbf{Ax}$$

Then, a precoder \mathbf{W} is used to undo the effects of \mathbf{A}. In this case, the symbols that are transmitted become:
$$x’ = \mathbf{Wx}$$
This precoder needs to be chosen such that the data-rate is optimized. The data rate is optimized if the log determinant of C is maximum, where C is the direct precoded channel, a diagonal complex matrix.

V is the crosstalk matrix, a complex composed by the elements for the precoded channel (\mathbf{AW}) that are not in the main diagonal.

The constraints are related to power control.

cvx_begin
    variable W(N,N) complex
    variable u
    variable C(N,N) 
    variable V(N,N) complex
    C = abs(diag(diag(A*W)))
    V = A*W - C
    
    maximize( log_det(C) )
    
    subject to  
        norm(W,'fro') <= u*sqrt(P)
        u^2 + (norm(V,'fro')^2)/N <= 1 
cvx_end

Convexity of the problem

This problem is part of this paper (see Equations 13 and 14).

The author (M. Malkin) states the problem is convex and, according to his thesis, uses CVX to solve it.

The following quote was extracted from the paper:

Note that there is no problem with
assuming that the diagonal matrix C
has positive entries since for any
complex diagonal entries of C, the
precoder matrix W could be multiplied by
the appropriate diagonal complex
phasor matrix without violating any of
the constraints in (13).

CVX implementation

I get the following errors:

CVX Warning:
Models involving “log_det” or other functions in the log, exp, and entropy
family are solved using an experimental successive approximation method.
The method requires multiple calls to the solver, so it can be slow; and
in certain cases it fails to converge. See Appendix D of the the user’s
guide for more information about this method, and for instructions on how
to suppress this warning in the future.
Error using cvx/geo_mean (line 111)
Disciplined convex programming error:
Invalid computation: geo_mean( {complex affine} )

Error in cvx/det_rootn (line 17)
cvx_optval = geo_mean( diag( X ) );

Error in log_det (line 28)
cvx_optval = size(X,1)*log(det_rootn(X));

Error in optimization_problem (line 58)
maximize( log_det(C) )

This simply cannot be solved using CVX. log_det requires its input argument to be Hermitian positive definite, hence even for complex matrices the diagonal is going to be real. This problem is almost certainly not convex as stated. I do concede that the error message is cryptic in this case, though, and I will endeavor to improve it.

At a more basic level, it is ill-posed to use a complex expression as an objective, whether minimization or maximization. Objective functions must be real, otherwise, there is no way to compare whether one value of the objective is better than another. After all, is 3+1i bigger or smaller than 2+4i? The real part is larger, but the magnitude is smaller.

Finally, if someone stumbles upon this, I should also point out that for diagonal matrices, log_det is extremely inefficient. For diagonal matrices, use log_prod or sum_log. But again, the input must still be real.

@mcg, I updated with the reference paper. I don’t understand which variable I am picking with the wrong type. A is surely complex, by definition.

You’re still using log_det with a diagonal matrix; for one thing; please see my third paragraph below. Furthermore, the diagonal elements of your C matrix are convex, which makes them incompatible with log_det, per the disciplined convex programming rules.

You should contact the author for an example CVX model. Indeed, he should have supplied it in his thesis!

Hello Sir, I have a similar problem, may I ask whether your problem has been solved?

@hhhh What specifically is your problem? Have you proven that it is a convex optimization problem? I don’t think it is likely that @igorauad will be answering your question.