I have a problem with objective function as
\mathop {\max }\limits_w - \frac{1}{\lambda }{\log _2}\left( {\sum\limits_{i = 1}^I {{2^{ - \lambda {f_i}\left( w \right)}}} } \right), where w \in {C^{N \times 1}} is a complex vector, {\left\{ {{f_i}\left( w \right)} \right\}_{\forall i}} is a set of concave functions of vector w and \lambda >0 is a constant.
Since the objective function is a jointly concave in \left\{ {{f_1}\left( w \right),{f_2}\left( w \right), \ldots ,{f_I}\left( w \right)} \right\}, and strictly increasing w.r.t. each {{f_i}\left( w \right)}, the objective function is a concave function with vector w.
The problem is that the objective function is not a standard log_sum_exp formula, so how to write the code in cvx?
You haven’t told us what the f_i
are; they will need to be functions supported by CVX. Presuming they are, 2^(-lambda*f_i(w))
can be rewritten as exp(-log(2)*lambda*f_i(w))
. The argument of the exp
is convex. Therefore, it is supported by log_sum_exp
.
Because it is the only term on the objective, you can omit the 1/lambda
, and not worry about dividing the objective by log(2)
due to use of log2
rather than log_sum_exp
using log base e
.
help log_sum_exp
log_sum_exp log(sum(exp(x))).
log_sum_exp(X) = LOG(SUM(EXP(X)).
When used in a CVX model, log_sum_exp(X) causes CVX's successive
approximation method to be invoked, producing results exact to within
the tolerance of the solver. This is in contrast to LOGSUMEXP_SDP,
which uses a single SDP-representable global approximation.
If X is a matrix, LOGSUMEXP_SDP(X) will perform its computations
along each column of X. If X is an N-D array, LOGSUMEXP_SDP(X)
will perform its computations along the first dimension of size
other than 1. LOGSUMEXP_SDP(X,DIM) will perform its computations
along dimension DIM.
Disciplined convex programming information:
log_sum_exp(X) is convex and nondecreasing in X; therefore, X
must be convex (or affine).