Log using cvx

Hi,

I have the following code which gives unreasonable results. There are two major issues with the results:

  1. alpha1 can at times be negative (just under zero like -10^(-3)).
  2. and also sum_alpha_over_users(j,1) is always way below 1. Its value is often around 10^-6.

I am now wondering there could be something wrong with my objective function (given its a log function). I would greatly appreciate if anyone could help me out with my code.

cvx_begin

variable alpha1(num_users_per_cell,num_BS_per_cell);%time division variable
expression sum_throughput;
expression sum_alpha_over_users(num_BS_per_cell,1);

sum_throughput = 0;    
for i=1:num_users_per_cell
    for j=1:num_BS_per_cell
        if x(i,j) == 1
            sum_throughput = sum_throughput + log(rate(i,1)*alpha1(i,j))/log(10);
        end
    end
end

for j=1:num_BS_per_cell
    sum_alpha_over_users(j,1) = 0;
    for i=1:num_users_per_cell
        sum_alpha_over_users(j,1) = sum_alpha_over_users(j,1) + alpha1(i,j);
    end
end

maximize sum_throughput
subject to
        for j=1:num_BS_per_cell
            sum_alpha_over_users(j,1) <= 1;
        end

        for i=1:num_users_per_cell
            for j=1:num_BS_per_cell
                0 <= alpha1(i,j);
                alpha1(i,j) <= x(i,j);
            end
        end            

cvx_end

There’s no way to tell just by looking at the model. I’m going to guess it’s a scaling issue of some sort. Or it could simply be a failure of CVX’s successive approximation method for log/exp functions. Alas we can’t guarantee such functions will work, as the warning says.

Dear Ara,I have encountered the same problem as you. Do you find any solution to this problem? Could you please contact me by email: alicia1988@yeah.net