How to write log(1+Ax)? A are two constant.
What is a two constant?
Why not just doing
t=1+A*x;
t >= 0.0
log(t)
sorry,A is a constant
cvx can’t identify log
i want to know how to Convert log(1+Ax) to rel_entr(。 )
You do not need to convert log(1+Ax) to rel_entr since CVX can accept log as I remember.
Post the error message you got. And maybe your complete code.
my error message is cvx can not deal with log ,i need help to convert it
I have try it,
CVX can not deal with log(1+X)
do you know how to deal with it?
You must show a full example that produces your error please. Otherwise really nobody has an idea how to help you. For example this works:
cvx_begin
variable X
maximize log(1+X)
subject to
X <= 10
cvx_end
cvx_begin
% cvx_solver mosek
variables P(K,N)
maximize (sum( A(k,:).*log2(phi(k,:).*P(k,:)+L_int(k, ) ))
subject to
for k = 1:K
delta*sum(A(k,:).*(L_int(k,:)+phi(k,:).*P(k,:))) >= data2(k);
end
for k = 1:K
beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k,:) ) >= energy(k);
end
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n);
end
cvx_end
The function ‘log2’ corresponding to the input parameter of type ‘CVX’ is not defined.
I need help. I don’t know how to do it.
cvx_begin
% cvx_solver mosek
variables P(K,N)
maximize (sum( A(k,:).*log2(phi(k,:).*P(k,:)+L_int(k,: ) ) )
subject to
for k = 1:K
delta*sum(A(k,:).*(L_int(k,:)+phi(k,:).*P(k,: ) )) >= data2(k);
end
for k = 1:K
beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k, ) >= energy(k);
end
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n);
end
cvx_end
The function ‘log2’ corresponding to the input parameter of type ‘CVX’ is not defined.
I need help. I don’t know how to do it.
log2(x)=log(x)/log(2), according to math.
Thanks, it works.
I am a newcomer to CVX
You have been a great help to me
I guess some elements of A(k, : ) are <= 0 but some are not. You can read the error that implied something like that. Maybe you can paste your complete code on here next time if convenient.
for K = 5
T = 70; N = 140; delta = T/N;
w = [50,150,200,450,475;
125,100,350,300,450];
for c = 1:K
data(1,c) = 200; % 初始化需要传输的数据量(bit)
end
for c = 1:K
data2(1,c) = 2^200; % 初始化需要传输的数据量(bit)
end
for c = 1:K
energy(1,c) = 0.0001; % 初始化需要传输的数据量(bit)
end
for c = 1:2
for n = 1:N
Q_int(c,n) = 500/N*n; % 初始化无人机路径
end
end
for k = 1:K
for n = 1:N
L_int(k,n) =1; % 初始化无人机路径
end
end
for a = 1:K
for n = 1:N
P_int(a,n) = 4; % 初始化发射功率
end
end
N_0 = -100; H = 20;
% 噪声功率(单位转换)
dBm = N_0 ;
sigma = power(10, dBm/10 ) /1000 ; % 单位 w
% Unit conversion of beta_0
beta = 1000 ;
% variables
%T = 75; N = 140;
delta = T/N;
% the square of distance between UAV and kth GN in time slot n
for k = 1:K
for n = 1:N
d(k,n) = norm( Q_int(:,n) - w(:,k) );
SoD(k,n) = power( d(k,n), 2 ) + power(H,2);
phi(k,n) = beta/sigma/SoD(k,n); % 计算 phi_k[n]
changshu1(k,n) = log2(L_int(k,n)+phi(k,n).*P_int(k,n))
changshu2(k,n) = beta*P_int(k,n)/SoD(k,n)
end
end
% 使用CVX工具包求解调度参数
cvx_begin
% cvx_solver mosek
variables A(K,N)
maximize (delta*sum( A(k,:).*changshu1(k, ))
subject to
% constraint 21
for k = 1:K
delta*sum( A(k,:).*changshu1(k,:) ) >= data(k);
end
for k = 1:K
delta*sum( (L_int(k,:)-A(k,:)).*changshu2(k,:) ) >= energy(k);
end
%13 14
for n = 1:N
sum(A(:,n)) <= 1;
end
% 19 20
for k = 1:K
for n = 1:N
A(k,n) >= 0;
end
end
cvx_end
E_1 = delta*sum( A(k,:).*changshu1(k, );
cvx_begin
% cvx_solver mosek
variables P(K,N)
maximize (delta*(sum( A(k,:).*(log(phi(k,:).P(k,:)+L_int(k,:)) -0.2(2^(sum(P(k,:))))))))
subject to
% constraint 21
for k = 1:K
delta*(sum( A(k,:).*(log(phi(k,:).*P(k,:)+L_int(k,:))))) >= data(k) ;
end
%13 14
for k = 1:K
beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k,:) ) >= energy(k);
end
% 19 20
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n)== P(4,n) == P(5,n);
end
cvx_end
Thanks, you give me a great help.
I show my code,please check my code,thanks.
The output said it’s infeasible. Maybe it is infeasible.
It seems you use cvxquad. I doubt that is needed and it is better to use Mosek without cvxquad as described in the 2020 update on:
The output shows that CVX’s Successive Approximation method was used with SDPT3 as solver. cvx_solver mosek
is commented out.
But as @Erling wrote, it would be better to use Mosek (with CVX 2.2) thereby avoiding CVX’s Successive Approximation method, and getting a more robust and reliable solution.
As for infeasible problems, follow the advice, except for section 1, in https://yalmip.github.io/debugginginfeasible, which also applies to CVX.
I use MAC
I have been unable to install Mosek properly
I have an official license ,but i don’t know how to use it.
Do you have any experience in this field