Location of GSM Transmitters

Contents

Problem description

A mobile phone operator decides to equip a currently uncovered geographical zone. The management allocates a budget of $ 10 million to equip this region. A study shows that only 7 locations are possible for the construction of the transmitters and it is also known that every transmitter only covers a certain number of communities. The figure below represents a schematic map of the region with the division into communities and the possible locations for transmitters. Every potential site is indicated by four stars and a number, every community is represented by a polygon. The number in the center of a polygon is the number of the community.

Certain geographical and topological constraints add to the construction cost and reduce the reach of the GSM transmitters. The table below lists the communities covered and the cost for every site.

For every community the number of inhabitants is known (see table). Where should the transmitters be built to cover the largest population with the given budget limit of $ 10M?

Map of the region to cover

+--------+-------+----------+--------+
|        |       *   7     /         |
|  1     |   4  *3*       /          |
|        *       * /--\  /*      11  |
+-------*1*      |/ 10 \/*6*         |
|        *\     / \    / -*--+-------+
|          \   /   \--/      \       |
|           \ /\     |        \  15  |
|    2      /   \ 8  |*        \     |
|          /     \   *5*  12   *\    +
|         /       \  |*       *7*\  /|
|        /   5     \ |         *  \/ |
+-----*-+       *   \|-----+----- /  |
|    *2* \    -*4*---+     |     \ 14|
|     *   \  /  *   /      |      \  |
|          \/      /   9   |       \ |
|   3       \  6  /        |   13   \|
|            \   /         |         +
+-------------+-+----------+---------+

Inhabitants of the communities

+--------------------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|Community           | 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|
+--------------------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|Population (in 1000)| 2| 4|13| 6| 9| 4| 8|12|10|11| 6|14| 9| 3| 6|
+--------------------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

Cost and communities covered for every site

+-------------------+-----+-----+-----+-----+-----+---------+-------+
|Site               |  1  |  2  |   3 |  4  |  5  |    6    |   7   |
+-------------------+-----+-----+-----+-----+-----+---------+-------+
|Cost (in million $)| 1.8 | 1.3 | 4.0 | 3.5 | 3.8 | 2.6     | 2.1   |
|Communities covered|1,2,4|2,3,5| 4,7 | 5,6 | 8,9 | 7,10    | 12,13 |
|                   |     |     | 8,10| 8,9 | 12  | 11,12,15| 14,15 |
+-------------------+-----+-----+--------+-------+------+-----------+

Variables

budget                     Money available
cost                       Cost to build site
connections                Communities covered by a site
population                 People living in communities
var1                       30 plus
var2                       30 minus

Reference

Applications of optimization... Gueret, Prins, Seveaux

% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com
% Copyright (c) 2005-2009 by Tomlab Optimization Inc., $Release: 7.2.0$
% Written Oct 7, 2005.   Last modified Apr 8, 2009.

Problem setup

budget      = 10e6;
cost        = [1.8 1.3 4.0 3.5 3.8 2.6 2.1]'*1e6;

connections = [ 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0;...
    0 1 1 0 1 0 0 0 0 0 0 0 0 0 0;...
    0 0 0 1 0 0 1 1 0 1 0 0 0 0 0;...
    0 0 0 0 1 1 0 1 1 0 0 0 0 0 0;...
    0 0 0 0 0 0 0 1 1 0 0 1 0 0 0;...
    0 0 0 0 0 0 1 0 0 1 1 1 0 0 1;...
    0 0 0 0 0 0 0 0 0 0 0 1 1 1 1];

population  = [ 2  4 13  6  9  4  8 12 10 11  6 ...
    14  9  3  6]'*1000;

p = length(cost);        %number of locations to build
c = length(population);  %areas to cover

covered = tom('covered',c,1,'int');
build = tom('build',p,1,'int');

% All variables are binary.
bnds = {0 <= covered <= 1, 0 <= build <= 1};

% Coverage constraint
con1 = {(connections'*build) >= covered};

% Budget constraint
con2 = {cost'*build <= budget};

% Objective
objective = -population'*covered;

constraints = {bnds, con1, con2};
options = struct;
options.solver = 'cplex';
options.name   = 'Location of GSM Transmitters';
sol = ezsolve(objective,constraints,[],options);

PriLev = 1;
if PriLev > 0
    disp(['Build at locations ' num2str(find(sol.build'))])
    disp(['Cover communities ' num2str(find(sol.covered'))])
end

% MODIFICATION LOG
%
% 051130 med   Created.
% 060116 per   Added documentation.
% 060126 per   Moved disp to end
% 090308 med   Converted to tomSym
Problem type appears to be: mip
===== * * * =================================================================== * * *
TOMLAB - Tomlab Optimization Inc. Development license  999001. Valid to 2010-02-05
=====================================================================================
Problem: ---  1: Location of GSM Transmitters   f_k -109000.000000000000000000
                                       sum(|constr|)      0.000000000000000007
                              f(x_k) + sum(|constr|)-109000.000000000000000000
                                              f(x_0)      0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=101.
CPLEX Branch-and-Cut MIP solver
Optimal integer solution found

FuncEv    5 
Build at locations 2  4  6  7
Cover communities 2   3   4   5   6   7   8   9  10  11  12  13  14  15