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

Set partitioning

Description
In a country far away, the party of the duke Sark Mevo has finally beaten the ruling coalition headed by the princess Reguel Tekris. Mevo wishes to consolidate his position in the capital, the fourteen quarters of which need to be grouped to electoral districts. The forecast number of favorable votes for Mevo and the total number of electors per quarter are known. All electors must vote and the winner needs to have the absolute majority. A valid electoral district is formed by several adjacent quarters and must have between 30,000 and 100,000 voters. Electoral districts consisting of a single quarter are permitted if it has at least 50,000 voters. Nevertheless, Mevo may not decently define an electoral district solely with quarter 10, since this contains his residence. Determine a partitioning into five electoral districts that maximizes the number of seats for Mevo. Should this cause any difficulties, try a partitioning into six districts.

Further explanation of this example: 'Applications of optimization with Xpress-MP', Section 15.3 'Rigging elections' (j3elect.mos)

partitioninggr.zip[download all files]

Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
partitioning_graph.mos[download]

Data Files





partitioning.dat

! Data file for `partitioning.mos'

NEIGHB: [(1 1)  2  (1 2) 5
         (2 1)  3  (2 2) 5
         (3 1)  4  (3 2) 5
         (4 1)  5  (4 2) 10
         (5 1)  6  (5 2) 10
         (6 1)  7  (6 2) 8
         (7 1)  8  (7 2) 9
         (8 1)  9  (8 2) 10 (8 3) 11
         (9 1) 11  (9 2) 12
        (10 1) 11 (10 2) 13
        (11 1) 12 (11 2) 13
        (12 1) 14
        (13 1) 14 ] 

POP:   [30 50 20 70 20 40 30 30 40 60 10 60 40 40]
VOTES: [17.5 15 14.2 42 18 9 12 10 26 34 2.5 27 29 15]

MINPOP: 30 
MAXPOP: 100
MINSINGLE: 50

POS: [[23 15] [23 31] [23 46] [33 58] [46 41] [49 19] [83 15]
      [71 28] [98 30] [63 47] [78 41] [98 44] [78 58] [98 58]]

Back to examples browserPrevious exampleNext example