% Simple power control in communication systems via GP. % % This is an example taken from the GP tutorial paper: % % A Tutorial on Geometric Programming (see pages 16-17) % by Boyd, Kim, Vandenberghe, and Hassibi. % % 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. % % Almir Mutapcic 01/15/06 % 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 gpvar P(n) % objective function is the total transmitter power Ptotal = sum(P); % 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 constr = [ Pmin <= P; P <= Pmax; inverseSINR <= (1/SINR_min)*ones(n,1); ]; % solve the power control problem [min_Ptotal solution status] = gpsolve(Ptotal, constr); assign(solution); fprintf(1,'\nThe minimum total transmitter power is %3.2f.\n',min_Ptotal); disp('Optimal power levels are: '), P