Problem of disciplined convex programming error: Illegal operation: log( {convex} )

Uncategorized
Dec 6, 2022
I

Hi everyone,
I got an error message when I use cvx in my code. So, I need your help. The problem is as follows:
image

HOW TO WRITE THIS IN DCP ?

where p, H^2, \beta0 is constant, x_{k,l}[n], y_{k,l}[n] both are a three-dimensional array. But x_{k,l}[n] in this block is a definite value, so we also can regard it as a constant.

I would be grateful if you could answer my questions. Thanks, everyone.

M

If you got an error message Illegal operation: log( {convex} ) , then you obviously are not showing all of your pertinent code. My mention of inv_pos is based on there not being any log… If there is log somewhere, you need to show it. Expressions of the form x*log(1+y/x) and other variations can be reformulated to be accepted by CVX.

help inv_pos

inv_pos Reciprocal of a positive quantity.
inv_pos(X) returns 1./X if X is positive, and +Inf otherwise.
X must be real.

 For matrices and N-D arrays, the function is applied to each element.

  Disciplined convex programming information:
      inv_pos is convex and nonincreasing; therefore, when used in CVX
      specifications, its argument must be concave (or affine).
I
Replying to #2

Thank you !!
This is the complete code.

My initial idea was to use the for loop to achieve this sum, but it was not possible. So I want to ask how to use the DCP specification to implement this code.

This is the code of using for loop.

M

Use log_sum_exp in the first approach in section 5.2.7 Log-sum-inv of 5 Exponential cone optimization — MOSEK Modeling Cookbook 3.3.0 .

And in the future, please copy and paste code using Preformattet text icon, rather than posting an image.

I
Replying to #4

Thank you very much,Mark ! I really appreciate your reply.

I will use preformattet text icon next time. Thanks again!

J
Replying to #5

hi! please show me how log_sum_exp replace your porblem?
thank you very much !

M

@jerrydanke I presume your difficulty has now been resolved at Log({convex}) but in my problem is log(affine) .