Hello, I am trying to solve an optimization problem as shown below
subject to the following constraints:
where p[n] is power being transferred in a cognitive wireless communications network, and gamma outlines a predetermined interference limit which needs to be minimized. I have written the following code in CVX to model the problem above:
K = 2; %Number of primary users T = 200; %Mission time period f_s = 1; %sample frequency N = T/f_s; %Number of timesteps delta_t = 1/f_s; %sample period H = 100; %Altitude b_0 = 10^-3; %Beta naught channel power gain q_i = [-1000 1000]; %initial UAV pos q_f = [1000 -1000]; %final UAV pos sigma_squared = 10^-8; %Sigma squared SNR level q_n = zeros(N,2); %vector space for optimized trajectory qj_n = zeros(N,2); %Previous iteration trajectory for i = 1:N %designing straight line trajectory qj_n(i,1) = ((2000/(N-1))*(i-1))-1000; qj_n(i,2) = 1000 - ((2000/(N-1))*(i-1)); end qj_n(N,1) = q_f(1,1); qj_n(N,2) = q_f(1,2); p_ave = 0; %average optimized power w_sr = [0 0]; %Secondary user position P = 1; % power threshold gamma_k = 10^-12; % interference threshold w_k = [-500 500; 500 -500]; %position of primary users p_n = zeros(N,1); %vector for optimized power value at p(i) cvx_clear; fprintf('Optimization program has started \n'); [p_n, p_ave] = p_opt(K, N, H, b_0, sigma_squared, qj_n, w_sr, P, gamma_k, w_k); fprintf('The optimized power is %d\n', p_ave); function [p_optimized, p_rate] = p_opt(K, N, H, b_0, sigma_squared, qj_n, w_sr, P, gamma_k, w_k) cvx_begin; n_0 = b_0/sigma_squared; p_optimized = cvx(zeros(N,1)); %vector for optimized power value at p(i) int_k = cvx(zeros(K,1)); %interference to each primary user at position q(i) p_sum = 0; variable x(N,1) for i=1:N %finding sum of optimized power p_sum = p_sum + (-rel_entr(1, 1 + ((n_0 * x(i,1))/(H^2 + sum_square(qj_n(i,:) - w_sr)))))/log(2); p_optimized(i,1) = x(i,1); end p_rate = p_sum/N; maximize (p_rate); subject to for i=1:N %power cannot be negative x(i,1) >= 0; % x(i) <= 2; end (sum (x))/N <= P; %average power cannot be above the threshold for i=1: K %interference constraint int_p = 0; for j=1:N int_p = int_p + ((b_0*x(j,1))/(H^2 + sum_square(qj_n(j,:)-w_k(i,:)))); end int_k(i,1) = int_p/N; int_k(i,1) <= gamma_k; end cvx_end; end
When running this CVX ignores the interference constraint (gives solved interference of 0.35x10^8 when it needs to be below 10^12) and results in an inaccurate/solved status. It would seem intuitive that if all values of power were simply scaled down to a lower value then you could satisfy the interference constraint, but CVX does not seem to want to do this.
Any advice on why this may be happening would be appreciated. Thank you.