The same code in the same computer but with different matlab versions

In matlab 2011b: the code displays:

dbm is 20, serch number is 3

ee_exhau_temp =

3.3159e+006

the previous SC system EE: 4054052.2701
the current SC system EE: 3315890.0254
bad, do not select this channel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time of 100 channel iterations is : 0

Successive approximation method to be employed.
For improved efficiency, SDPT3 is solving the dual problem.
SDPT3 will be called several times to refine the solution.
Original size: 45 variables, 22 equality constraints
9 exponentials add 72 variables, 45 equality constraints

Cones | Errors |
Mov/Act | Centering Exp cone Poly cone | Status
--------±--------------------------------±--------
8/ 8 | 6.140e+000 2.596e+000 1.003e-005 | Inaccurate/Solved
7/ 7 | 2.192e+000 4.987e-001 2.826e-004 | Inaccurate/Solved
6/ 8 | 5.991e-001 4.445e-002 1.378e-002 | Inaccurate/Solved
1/ 2 | 8.000e+000 2.340e+000 1.367e-003 | Inaccurate/Solved
1/ 2 | 8.000e+000s 6.355e+000s 6.324e-005 | Inaccurate/Solved
2/ 8 | 8.000e+000 1.044e+001 6.357e-006 | Inaccurate/Solved
1/ 3 | 8.000e+000 1.449e+001 7.252e-006 | Inaccurate/Solved
1/ 3 | 8.000e+000s 1.853e+001s 3.716e-006 | Inaccurate/Solved
6/ 8 | 8.000e+000 2.234e+001 2.621e-006 | Inaccurate/Solved
1/ 1 | 8.000e+000 1.834e+001 0.000e+000 | Inaccurate/Solved
1/ 3 | 8.000e+000 1.434e+001 1.138e-004 | Solved
1/ 1 | 8.000e+000 1.033e+001 0.000e+000 | Inaccurate/Solved
1/ 4 | 1.288e+000 6.325e+000 9.000e-005 | Inaccurate/Solved
1/ 3 | 8.000e+000 6.985e+000 2.092e-004 | Inaccurate/Solved
1/ 2 | 8.000e+000 2.981e+000 1.004e-004 | Inaccurate/Solved
0/ 2 | 8.870e-005 3.277e-005 3.277e-005 | Inaccurate/Solved
0/ 3 | 5.583e-005 3.662e-004 3.662e-004 | Inaccurate/Solved
0/ 2 | 5.900e-004 9.340e-005 9.340e-005 | Inaccurate/Solved

Status: Inaccurate/Solved
Optimal value (cvx_optval): +7.01738e+006

------------------------------------------------------------------------------------------------------------------------ But in matlab 2013b:
the code displays:

dbm is 20, serch number is 3

ee_exhau_temp =

3.3159e+06

the previous SC system EE: 4054029.5462
the current SC system EE: 3315890.0254
bad, do not select this channel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time of 100 channel iterations is : 0

Successive approximation method to be employed.
For improved efficiency, SDPT3 is solving the dual problem.
SDPT3 will be called several times to refine the solution.
Original size: 45 variables, 22 equality constraints
9 exponentials add 72 variables, 45 equality constraints

Cones | Errors |
Mov/Act | Centering Exp cone Poly cone | Status
--------±--------------------------------±--------
8/ 8 | 6.140e+00 2.596e+00 1.003e-05 | Inaccurate/Solved
7/ 7 | 2.192e+00 4.987e-01 2.826e-04 | Inaccurate/Solved
6/ 8 | 5.991e-01 4.445e-02 1.378e-02 | Inaccurate/Solved
4/ 5 | 8.000e+00 2.347e+00 2.245e-02 | Inaccurate/Solved
1/ 2 | 8.000e+00 6.344e+00 1.973e-05 | Inaccurate/Solved
1/ 3 | 8.000e+00 1.035e+01 1.606e-04 | Inaccurate/Solved
1/ 3 | 8.000e+00s 1.438e+01s 1.796e-04 | Inaccurate/Solved
7/ 9 | 8.000e+00 1.853e+01 3.282e-06 | Inaccurate/Solved
1/ 4 | 8.000e+00 2.237e+01 1.726e-02 | Inaccurate/Solved
1/ 3 | 8.000e+00 1.853e+01 2.307e-06 | Inaccurate/Solved
1/ 1 | 8.000e+00 2.245e+01 0.000e+00 | Inaccurate/Solved
1/ 3 | 8.000e+00 2.664e+01 1.412e-05 | Inaccurate/Solved
1/ 4 | 8.000e+00 3.067e+01 6.859e-04 | Inaccurate/Solved
1/ 3 | 8.000e+00 3.478e+01 5.304e-04 | Inaccurate/Solved
1/ 3 | 8.000e+00s 3.888e+01s 7.590e-06 | Inaccurate/Solved
6/ 7 | 8.000e+00 4.234e+01 1.828e-06 | Inaccurate/Solved
1/ 2 | 8.000e+00 3.836e+01 3.525e-05 | Inaccurate/Solved
1/ 2 | 8.000e+00s 3.433e+01 1.236e-04 | Inaccurate/Solved
1/ 2 | 8.000e+00s 3.032e+01 1.185e-06 | Solved
1/ 3 | 8.000e+00 2.634e+01 6.297e-08 | Solved
1/ 1 | 8.000e+00 2.235e+01 0.000e+00 | Solved
1/ 3 | 8.000e+00 1.831e+01 2.574e-07 | Solved
1/ 2 | 8.000e+00 1.431e+01 2.192e-10 | Solved
1/ 3 | 8.000e+00 1.032e+01 4.213e-07 | Solved
1/ 4 | 8.000e+00 6.320e+00 1.356e-07 | Solved

Status: Failed
Optimal value (cvx_optval): NaN

Error using .* (line 173)
Disciplined convex programming error:
Cannot perform the operation: {invalid} . {real affine}*

Error in * (line 36)
z = feval( oper, x, y );

Error in EE8_trspwr_exhau (line 192)
maximize ( ( obj_func1 - sum( rel_entr(b,x) ) ) …

The error says that {invalid} . {real affine}*
It is quite strange.
Who can help me? Thanks a lot.

the code is : :*

    cvx_begin
        variable p0(n) 
        expression obj_func1;
        obj_func1 = 0;
        for cc = 1:5
            obj_func1 = obj_func1 + b0*log(1+ p0(cc)*g0(cc)/b0);
        end
        variable b(chlnum) 
        variable x(chlnum) 
        variable w(chlnum)  
        variable y(chlnum)
        maximize ( ( obj_func1 - sum( rel_entr(b,x) ) ) ...
            - u*(  sum( p0 ) + sum( (x-b)./g )   +  sum( (y-w)./h )  + p_c )  )
        subject  to
        
        zeros(n,1) <= p0;                   
        zeros(chlnum,1) <= b;                   
        zeros(chlnum,1) <= ( x - b )./g;         
        zeros(chlnum,1) <= w;
        zeros(chlnum,1) <= ( y-w )./h;   
        sum( p0 ) + sum( (x-b)./g ) + sum( (y-w)./h ) <= P_max;  
        b + w <= W_max;             
        -rel_entr(w,y) >= mu_rmin;                 
     cvx_end

In each iteration, u is updated by ( obj_func1 - sum( rel_entr(b,x) ) )/ sum( p0 ) + sum( (x-b)./g ) + sum( (y-w)./h ) + p_c )

I’m not too surprised by this. SDPT3 depends on certain MATLAB linear algebra routines that have slightly different results in different versions. So I don’t expect exact agreement across MATLAB versions.

What happens if you use SeDuMi instead of SDPT3?

Thanks a lot. I think I almost solved the problem. Since in the constraint

sum( p0 ) + sum( (x-b)./g ) + sum( (y-w)./h ) <= P_max;

in the original code, the value of P_max is in the level of 1; while all other constraints are at the level of 10^6. Maybe because of the accuracy, the error displays when some calculation error happens.

My solution is to amplify the constraint sum( p0 ) + sum( (x-b)./g ) + sum( (y-w)./h ) <= P_max with 10^8, i.e., ( sum( p0 ) + sum( (x-b)./g ) + sum( (y-w)./h ) )10^8 <= P_max10^8
the logic of the constraiont does not changed but the accuracy changes for computation. It is more roubust for the calculation error.

Until now, it works well and also avoids the mentioned error. I’m not sure this trick will totally solve my problem in the following. Do you think this is a possible way?

Btw, when can I download the SeDuMi for free? Thanks. I want to give it a try.

Please read the documentation. It is included with every copy of CVX

Sorry to interrupt you again.

There are still some errors in useing code.I think it may not be only the problem of the matlab version. Even for the same version, the cvx works not stably in different computers.

I just can not understand why there are DCP errors? It is convex and satisfies the DCP rule already. :pensive:

Look I wish I had a solution for you, but I do not. Please note the warnings that CVX provides whenever you try to use a log, exp, or entropy function. There is a reason for that, and the user guide explains it. I have tried to explain why I think the DCP errors occur as well but I have not been understood. Perhaps someone else can explain better than I.

Could the OP try using the SCS solver under CVX 3.0 beta? Would that allow use of native exponential cone support and avoidance of CVX’s experimental successive approximation method?