FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Telecommunication problems

Description
Problem name and type, featuresDifficulty
G‑1 Network reliability: Maximum flow with unitary capacities ***
encoding of arcs, range, exists, create, algorithm for printing paths, forall-do, while-do, round
G‑2 Dimensioning of a mobile phone network **
if-then, exit
G‑3 Routing telephone calls: Multi-commodity network flow problem ***
encoding of paths, finalize, getsize
G‑4 Construction of a cabled network: Minimum weight spanning tree problem ***
formulation of constraints to exclude subcycles
G‑5 Scheduling of telecommunications via satellite: Preemptive open shop scheduling *****
data preprocessing, algorithm for preemptive scheduling that involves looping over optimization, ``Gantt chart'' printing
G‑6 Location of GSM transmitters: Covering problem *
modeling an equivalence; sparse data format


Further explanation of this example: 'Applications of optimization with Xpress-MP', Chapter 12: Telecommunication problems

mosel_app_7.zip[download all files]

Source Files

Data Files





g2dimens.mos

(!******************************************************
   Mosel Example Problems
   ======================

   file g2dimens.mos
   `````````````````
   Diminsioning of a mobile phone network
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, Apr. 2002
*******************************************************!)

model "G-2 Mobile network dimensioning"
 uses "mmxprs"

 declarations
  HUBS = 1..4
  MTSO = 5                              ! Node number of MTSO
  NODES = HUBS+{MTSO}                   ! Set of nodes (simple hubs + MTSO)
  CELLS = 1..10                         ! Cells to connect

  CAP: integer                          ! Capacity of ring segments
  COST: array(CELLS,NODES) of integer   ! Connection cost
  TRAF: array(CELLS) of integer         ! Traffic from every cell
  CNCT: array(CELLS) of integer         ! Connections of a cell to the ring
  
  connect: array(CELLS,NODES) of mpvar  ! 1 if cell connected to node,
                                        ! 0 otherwise
 end-declarations

 initializations from 'g2dimens.dat'
  CAP COST TRAF CNCT
 end-initializations

! Check ring capacity
 if not (sum(c in CELLS) TRAF(c)*(1-1/CNCT(c)) <= 2*CAP) then
  writeln("Ring capacity not sufficient")
  exit(0)
 end-if 

! Objective: total cost
 TotCost:= sum(c in CELLS, n in NODES) COST(c,n)*connect(c,n)

! Number of connections per cell
 forall(c in CELLS) sum(n in NODES) connect(c,n) = CNCT(c) 

! Ring capacity
 sum(c in CELLS, n in HUBS) (TRAF(c)/CNCT(c))*connect(c,n) <= 2*CAP

 forall(c in CELLS, n in NODES) connect(c,n) is_binary

! Solve the problem
 minimize(TotCost)
 
! Solution printing
 writeln("Total cost: ", getobjval, " (total traffic in the ring: ",
   getsol(sum(c in CELLS, n in HUBS) (TRAF(c)/CNCT(c))*connect(c,n)), ")")

 forall(c in CELLS) do
  write(c, " ->")
  forall(n in NODES) write(if(getsol(connect(c,n))>0, " " + n, ""))
  writeln
 end-do 

end-model

Back to examples browserPrevious exampleNext example