% Simple power control in communication systems via GP.
% Boyd, Kim, Vandenberghe, and Hassibi, "A Tutorial on Geometric Programming"
% Written for CVX by Almir Mutapcic 02/08/06
% (a figure is generated)
%
% Solves the power control problem in communication systems, where
% we want to minimize the total transmitter power for n transmitters,
% subject to minimum SINR level, and lower and upper bounds on powers.
% This results in a GP:
%
% minimize sum(P)
% s.t. Pmin <= P <= Pmax
% SINR >= SINR_min
%
% where variables are transmitter powers P.
% Numerical data for the specific examples was made up.
% problem constants
n = 5; % number of transmitters and receivers
sigma = 0.5*ones(n,1); % noise power at the receiver i
Pmin = 0.1*ones(n,1); % minimum power at the transmitter i
Pmax = 5*ones(n,1); % maximum power at the transmitter i
SINR_min = 2; % threshold SINR for each receiver
% path gain matrix
G = [1.0 0.1 0.2 0.1 0.0
0.1 1.0 0.1 0.1 0.0
0.2 0.1 2.0 0.2 0.2
0.1 0.1 0.2 1.0 0.1
0.0 0.0 0.2 0.1 1.0];
% variables are power levels
cvx_begin gp
variable P(n)
% objective function is the total transmitter power
minimize( sum(P) )
subject to
% formulate the inverse SINR at each receiver using vectorize features
Gdiag = diag(G); % the main diagonal of G matrix
Gtilde = G - diag(Gdiag); % G matrix without the main diagonal
% inverse SINR
inverseSINR = (sigma + Gtilde*P)./(Gdiag.*P);
% constraints are power limits and minimum SINR level
Pmin <= P <= Pmax;
inverseSINR <= (1/SINR_min);
cvx_end
fprintf(1,'\nThe minimum total transmitter power is %3.2f.\n',cvx_optval);
disp('Optimal power levels are: '), P