examples/tas.mod
author Alpar Juttner <alpar@cs.elte.hu>
Sun, 05 Dec 2010 17:35:23 +0100
changeset 2 4c8956a7bdf4
permissions -rw-r--r--
Set up CMAKE build environment
     1 /* TAS, Tail Assignment Problem */
     2 
     3 /* Written in GNU MathProg by Andrew Makhorin <mao@gnu.org> */
     4 
     5 /* The Tail Assignment Problem (TAS) is to construct rosters for a set
     6    of aircrafts (tails), which cover all flights for a given scheduling
     7    period.
     8 
     9    This model includes only flight connection constraints while other
    10    constraints (for example, maintenance constraints) are ignored. Such
    11    simplification allows using a single commodity network to model the
    12    problem, where commodity corresponds to the set of aircrafts.
    13 
    14    Nodes of the network are activities. They include all flights plus
    15    two dummy nodes (activities): source node, s, corresponding to
    16    initial activity of each aircraft, and sink node t, corresponding to
    17    final activity of each aircraft. Arc v->v' exists in the network if
    18    and only if the same aircraft is able to operate activity v and then
    19    immediately activity v'. In partucular, arcs s->f and f->t exist for
    20    all flights f. Arcs f->f', where f and f' are some flights, exist
    21    only if the connection time (which is the difference between the
    22    departure time of f' and the arrival time of f) is not less than a
    23    given minimal connection time.
    24 
    25    Reference:
    26    M. Groenkvist, "The Tail Assignment Problem," Dept. of Comp. Sci.
    27    and Eng., Chalmers University of Technology and Goeteborg University,
    28    Goeteborg, Sweden, August 2005. */
    29 
    30 ########################################################################
    31 
    32 param nf, integer, > 0;
    33 /* number of flights */
    34 
    35 set F := 1..nf;
    36 /* set of flights (for a given period from timetable) */
    37 
    38 param hub{f in F}, in {1, 2};
    39 /* hub[f] = 1: Sheremetyevo-1
    40    hub[f] = 2: Sheremetyevo-2 */
    41 
    42 param dest{f in F}, symbolic;
    43 /* destination airport (IATA code) */
    44 
    45 param fno1{f in F}, integer;
    46 /* first leg flight number */
    47 
    48 param dep1{f in F}, integer, >= 0;
    49 /* departure time from Sheremetyevo airport, in minutes */
    50 
    51 check{f in F: f < nf}: dep1[f] <= dep1[f+1];
    52 /* all flights must be ordered by ascending of the departure time */
    53 
    54 param arr1{f in F}, integer, >= 0;
    55 /* arrival time to destination airport, in minutes */
    56 
    57 param fno2{f in F}, integer;
    58 /* second leg flight number */
    59 
    60 param dep2{f in F}, integer, >= 0;
    61 /* departure time from destination airport, in minutes */
    62 
    63 param arr2{f in F}, integer, >= 0;
    64 /* arrival time to Sheremetyevo airport, in minutes */
    65 
    66 param mct1, integer, >= 0, default 80;
    67 /* minimal connection time (within SVO1 or SVO2), in minutes */
    68 
    69 param mct2, integer, >= 0, default 150;
    70 /* minimal connection time (between SVO1 and SVO2), in minutes */
    71 
    72 set E := setof{f in F, ff in F: arr2[f] + (if hub[f] = hub[ff] then
    73    mct1 else mct2) <= dep1[ff]} (f, ff);
    74 /* connection network; arc f->ff is in E, iff the same aircraft can be
    75    assigned to flight f and then immediately to flight ff */
    76 
    77 var s{f in F}, >= 0;
    78 /* s[f] is a flow from source node to node f */
    79 
    80 var x{(f,ff) in E}, >= 0;
    81 /* x[f,ff] is a flow from node f to node ff */
    82 
    83 var t{f in F}, >= 0;
    84 /* t[f] is a flow from node f to sink node */
    85 
    86 s.t. into{f in F}: s[f] + sum{(ff,f) in E} x[ff,f] = 1;
    87 /* exactly one aircraft must come into each node f */
    88 
    89 s.t. from{f in F}: t[f] + sum{(f,ff) in E} x[f,ff] = 1;
    90 /* exactly one aircraft must come from each node f */
    91 
    92 minimize obj: sum{f in F} s[f];
    93 /* minimize the number aircrafts sufficient to cover all flights */
    94 
    95 solve;
    96 
    97 ########################################################################
    98 
    99 param na := floor(sum{f in F} s[f] + .5);
   100 /* minimal number of aircrafts found */
   101 
   102 printf "At least %d aircrafts needed\n", na;
   103 
   104 set A := 1..na;
   105 /* set of aircrafts */
   106 
   107 printf "Building rosters...\n";
   108 
   109 param tail{f in F}, in A, :=
   110 /* tail[f] is the number of an aircraft assigned to flight f */
   111 
   112    if f = 1 then 1
   113    /* assign aircraft 1 to the earliest flight */
   114 
   115    else if s[f] >= 0.9 then (max{ff in 1..f-1} tail[ff]) + 1
   116    /* if f is the first flight in a roster, assign to it a next
   117       aircraft */
   118 
   119    else sum{(ff,f) in E} tail[ff] * (if x[ff,f] >= 0.9 then 1);
   120    /* otherwise, assign to flight f the same aircraft, which is
   121       assigned to a preceding flight in the roster */
   122 
   123 ########################################################################
   124 
   125 param file, symbolic, default "tas.ps";
   126 /* file to output the assignment chart in postscript format */
   127 
   128 param title, symbolic, default "(no title)";
   129 /* chart title */
   130 
   131 param left, default 25;
   132 /* left margin, in mm */
   133 
   134 param top, default 25;
   135 /* top margin, in mm */
   136 
   137 param right, default 20;
   138 /* right margin, in mm */
   139 
   140 param bottom, default 15;
   141 /* bottom margin, in mm */
   142 
   143 param sx := 297 - left - right;
   144 /* chart area horizontal size, in mm */
   145 
   146 param sy := 210 - top - bottom;
   147 /* chart area vertical size, in mm */
   148 
   149 param gap, default sy / (na - 1);
   150 /* gap between rosters, in mm */
   151 
   152 printf "Writing assignment chart to %s...\n", file;
   153 
   154 printf "%%!PS-Adobe-3.0\n" > file;
   155 printf "%%%%Title: Tail Assignment Chart\n" >> file;
   156 printf "%%%%Creator: GLPK MathProg\n" >> file;
   157 printf "%%%%BoundingBox: 0 0 595 842\n" >> file;
   158 printf "%%%%EndComments\n" >> file;
   159 printf "<</PageSize [595 842]>> setpagedevice\n" >> file;
   160 printf "72 25.4 div dup scale\n" >> file;
   161 printf "210 %.3f sub %.3f translate\n", bottom, left >> file;
   162 printf "90 rotate\n" >> file;
   163 
   164 printf "/HelveticaBold findfont 5 scalefont setfont\n" >> file;
   165 printf "%.3f %.3f moveto (%s) dup show\n", 0, sy + 5, title >> file;
   166 
   167 param period := floor((max{f in F} arr2[f]) / 60. + .5);
   168 /* period duration, in hours */
   169 
   170 /* vertical bars */
   171 printf ".8 .8 .8 setrgbcolor\n" >> file;
   172 for {tt in 0..period}
   173 {  printf "%s setlinewidth\n",
   174       if tt mod 24 = 0 then ".5" else "0" >> file;
   175    printf "newpath %.3f %.3f moveto %.3f %.3f lineto stroke\n",
   176       tt * (sx / period), 0, tt * (sx / period),
   177       sy + (if tt mod 24 = 0 then 2) >> file;
   178 }
   179 
   180 /* rosters */
   181 for {a in A}
   182 {  printf "0 0 0 setrgbcolor\n" >> file;
   183    printf "0 setlinewidth\n" >> file;
   184    printf "newpath %.3f %.3f moveto %.3f %.3f lineto stroke\n",
   185       0, sy - gap * (a - 1), sx, sy - gap * (a - 1) >> file;
   186    printf "/Dingbats findfont 4 scalefont setfont\n" >> file;
   187    printf "%.3f %.3f moveto <28> dup show\n",
   188       -4, sy - gap * (a - 1) - 1.4, a >> file;
   189    printf "/Helvetica findfont 3 scalefont setfont\n" >> file;
   190    printf "%.3f %.3f moveto (%2d) dup show\n",
   191       -9, sy - gap * (a - 1) - 1.2, a >> file;
   192    for {f in F: tail[f] == a}
   193    {  printf "0 0 %s setrgbcolor\n",
   194          if hub[f] = 1 then "0" else ".8" >> file;
   195       printf "1 setlinewidth\n" >> file;
   196       printf "newpath %.3f %.3f moveto %.3f %.3f lineto stroke\n",
   197          dep1[f] / 60 * (sx / period), sy - gap * (a - 1),
   198          arr2[f] / 60 * (sx / period), sy - gap * (a - 1) >> file;
   199       printf "/Helvetica findfont 1.8 scalefont setfont\n" >> file;
   200       printf "%.3f %.3f moveto (%02d:%02d %s) dup show\n",
   201          dep1[f] / 60 * (sx / period), sy - gap * (a - 1) + .8,
   202          (dep1[f] mod 1440) div 60, (dep1[f] mod 1440) mod 60,
   203          dest[f] >> file;
   204       printf "%.3f %.3f moveto (%d %02d:%02d) dup show\n",
   205          dep1[f] / 60 * (sx / period), sy - gap * (a - 1) - 2.1,
   206          fno1[f],
   207          (arr2[f] mod 1440) div 60, (arr2[f] mod 1440) mod 60 >> file;
   208    }
   209 }
   210 
   211 printf "showpage\n" >> file;
   212 printf "%%%%EOF\n" >> file;
   213 
   214 ########################################################################
   215 
   216 data;
   217 
   218 param title := "Tu-154 [from 2008-08-18 to 2008-08-24]";
   219 
   220 param nf := 261;
   221 
   222 param : hub dest fno1 dep1  arr1  fno2 dep2  arr2 :=
   223       1  1  IKT  743   195   520  744   610   970
   224       2  1  OMS  815   205   405  816   485   700
   225       3  1  CEK  897   205   360  898   430   595
   226       4  1  KRR  763   260   400  764   480   610
   227       5  2  SIP  133   280   420  134   500   620
   228       6  2  BUD  131   290   450  132   520   675
   229       7  1  AAQ  701   305   440  702   510   640
   230       8  1  MRV  785   310   440  786   520   650
   231       9  2  WAW  101   355   475  102   540   660
   232      10  2  GYD  147   370   550  148   675   860
   233      11  1  AER  869   385   530  870   655   795
   234      12  1  KRR  765   430   560  766   630   760
   235      13  1  AAQ  703   520   660  704   740   850
   236      14  1  LED  845   530   620  846   690   775
   237      15  1  KRR  767   540   675  768   765   895
   238      16  2  KBP  183   665   760  184   850   940
   239      17  1  MRV  787   755   905  788   985  1135
   240      18  1  KRR  771   810   940  772  1030  1165
   241      19  1  LED  849   825   900  850   960  1095
   242      20  2  IST  209   880  1050  210  1120  1280
   243      21  1  AER  873   885  1030  874  1760  1900
   244      22  1  ASF  711   995  1145  712  1640  1795
   245      23  2  ULN  563   995  1335  564  1415  1815
   246      24  2  OTP  151  1020  1175  152  1800  1940
   247      25  2  BEY  509  1025  1265  510  1350  1580
   248      26  2  OSL  211  1060  1220  212  1860  2015
   249      27  1  IKT  739  1085  1420  740  1510  1870
   250      28  1  KRR  773  1095  1240  774  1620  1765
   251      29  1  SGC  877  1120  1315  878  1395  1625
   252      30  1  LED  857  1150  1230  858  1610  1690
   253      31  1  CEK  899  1230  1385  900  1455  1620
   254      32  1  PEE  821  1235  1390  822  1450  1600
   255      33  2  TBS  197  1240  1405  198  1560  1715
   256      34  1  UFA  891  1275  1405  892  1475  1610
   257      35  1  KJA  781  1300  1570  782  1680  1990
   258      36  1  IKT  743  1635  1960  744  2050  2410
   259      37  1  OMS  815  1645  1845  816  1925  2140
   260      38  1  CEK  897  1645  1800  898  1870  2035
   261      39  1  KRR  763  1700  1840  764  1920  2050
   262      40  2  SIP  133  1720  1860  134  1940  2060
   263      41  2  BUD  131  1730  1890  132  1960  2115
   264      42  1  AAQ  701  1745  1880  702  1950  2080
   265      43  1  MRV  785  1750  1880  786  1960  2090
   266      44  2  WAW  101  1795  1915  102  1980  2100
   267      45  2  GYD  147  1810  1990  148  2115  2300
   268      46  1  AER  869  1825  1970  870  2095  2235
   269      47  2  EVN  193  1850  2030  194  2105  2275
   270      48  1  KRR  765  1870  2000  766  2070  2200
   271      49  1  AAQ  703  1960  2100  704  2180  2290
   272      50  1  LED  845  1970  2060  846  2130  2215
   273      51  1  KRR  767  1980  2115  768  2205  2335
   274      52  2  KBP  183  2105  2200  184  2290  2380
   275      53  1  MRV  787  2195  2345  788  2425  2575
   276      54  1  KRR  771  2250  2380  772  2470  2605
   277      55  1  LED  849  2265  2340  850  2400  2535
   278      56  2  IST  209  2320  2490  210  2560  2720
   279      57  1  AER  873  2325  2470  874  3200  3340
   280      58  2  ULN  563  2435  2775  564  2855  3255
   281      59  1  ASF  711  2435  2585  712  3080  3235
   282      60  2  DAM  517  2465  2705  518  2790  3020
   283      61  2  OSL  211  2500  2660  212  3300  3455
   284      62  2  KBP  185  2510  2610  186  3160  3250
   285      63  1  IKT  739  2525  2860  740  2950  3310
   286      64  1  KRR  773  2535  2680  774  3060  3205
   287      65  1  SGC  877  2560  2755  878  2835  3065
   288      66  1  LED  857  2590  2670  858  3050  3130
   289      67  1  CEK  899  2670  2825  900  2895  3060
   290      68  1  PEE  821  2675  2830  822  2890  3040
   291      69  2  TBS  197  2680  2845  198  3000  3155
   292      70  1  UFA  891  2715  2845  892  2915  3050
   293      71  1  KJA  781  2740  3010  782  3120  3430
   294      72  1  IKT  743  3075  3400  744  3490  3850
   295      73  1  CEK  897  3085  3240  898  3310  3475
   296      74  1  OMS  815  3085  3285  816  3365  3580
   297      75  1  KRR  763  3140  3280  764  3360  3490
   298      76  2  SIP  133  3160  3300  134  3380  3500
   299      77  2  BUD  131  3170  3330  132  3400  3555
   300      78  1  AAQ  701  3185  3320  702  3390  3520
   301      79  1  MRV  785  3190  3320  786  3400  3530
   302      80  2  WAW  101  3235  3355  102  3420  3540
   303      81  2  FRU  181  3245  3495  182  3590  3860
   304      82  2  GYD  147  3250  3430  148  3555  3740
   305      83  1  AER  869  3265  3410  870  3535  3675
   306      84  1  KRR  765  3310  3440  766  3510  3640
   307      85  1  AAQ  703  3400  3540  704  3620  3730
   308      86  1  LED  845  3410  3500  846  3570  3655
   309      87  1  KRR  767  3420  3555  768  3645  3775
   310      88  2  KBP  183  3545  3640  184  3730  3820
   311      89  1  MRV  787  3635  3785  788  3865  4015
   312      90  1  KRR  771  3690  3820  772  3910  4045
   313      91  1  LED  849  3705  3780  850  3840  3975
   314      92  2  IST  209  3760  3930  210  4000  4160
   315      93  1  AER  873  3765  3910  874  4640  4780
   316      94  2  ULN  563  3875  4215  564  4295  4695
   317      95  1  ASF  711  3875  4025  712  4520  4675
   318      96  2  OTP  151  3900  4055  152  4680  4820
   319      97  2  BEY  509  3905  4145  510  4230  4460
   320      98  2  OSL  211  3940  4100  212  4740  4895
   321      99  2  KBP  185  3950  4050  186  4600  4690
   322     100  1  IKT  739  3965  4300  740  4390  4750
   323     101  1  KRR  773  3975  4120  774  4500  4645
   324     102  1  SGC  877  4000  4195  878  4275  4505
   325     103  1  LED  857  4030  4110  858  4490  4570
   326     104  1  CEK  899  4110  4265  900  4335  4500
   327     105  1  PEE  821  4115  4270  822  4330  4480
   328     106  2  TBS  197  4120  4285  198  4440  4595
   329     107  1  UFA  891  4155  4285  892  4355  4490
   330     108  1  KJA  781  4180  4450  782  4560  4870
   331     109  1  IKT  743  4515  4840  744  4930  5290
   332     110  1  OMS  815  4525  4725  816  4805  5020
   333     111  1  CEK  897  4525  4680  898  4750  4915
   334     112  1  KRR  763  4580  4720  764  4800  4930
   335     113  2  SIP  133  4600  4740  134  4820  4940
   336     114  2  BUD  131  4610  4770  132  4840  4995
   337     115  1  AAQ  701  4625  4760  702  4830  4960
   338     116  1  MRV  785  4630  4760  786  4840  4970
   339     117  2  WAW  101  4675  4795  102  4860  4980
   340     118  2  GYD  147  4690  4870  148  4995  5180
   341     119  1  AER  869  4705  4850  870  4975  5115
   342     120  2  EVN  193  4730  4910  194  4985  5155
   343     121  1  KRR  765  4750  4880  766  4950  5080
   344     122  1  AAQ  703  4840  4980  704  5060  5170
   345     123  1  LED  845  4850  4940  846  5010  5095
   346     124  1  KRR  767  4860  4995  768  5085  5215
   347     125  2  KBP  183  4985  5080  184  5170  5260
   348     126  1  MRV  787  5075  5225  788  5305  5455
   349     127  1  KRR  771  5130  5260  772  5350  5485
   350     128  1  LED  849  5145  5220  850  5280  5415
   351     129  2  IST  209  5200  5370  210  5440  5600
   352     130  1  AER  873  5205  5350  874  6080  6220
   353     131  1  ASF  711  5315  5465  712  5960  6115
   354     132  2  ULN  563  5315  5655  564  5735  6135
   355     133  2  DAM  517  5345  5585  518  5670  5900
   356     134  2  OSL  211  5380  5540  212  6180  6335
   357     135  2  KBP  185  5390  5490  186  6040  6130
   358     136  1  IKT  739  5405  5740  740  5830  6190
   359     137  1  KRR  773  5415  5560  774  5940  6085
   360     138  1  SGC  877  5440  5635  878  5715  5945
   361     139  1  LED  857  5470  5550  858  5930  6010
   362     140  1  CEK  899  5550  5705  900  5775  5940
   363     141  1  PEE  821  5555  5710  822  5770  5920
   364     142  2  TBS  197  5560  5725  198  5880  6035
   365     143  1  UFA  891  5595  5725  892  5795  5930
   366     144  1  KJA  781  5620  5890  782  6000  6310
   367     145  1  IKT  743  5955  6280  744  6370  6730
   368     146  1  OMS  815  5965  6165  816  6245  6460
   369     147  1  CEK  897  5965  6120  898  6190  6355
   370     148  1  KRR  763  6020  6160  764  6240  6370
   371     149  2  SIP  133  6040  6180  134  6260  6380
   372     150  2  BUD  131  6050  6210  132  6280  6435
   373     151  1  AAQ  701  6065  6200  702  6270  6400
   374     152  1  MRV  785  6070  6200  786  6280  6410
   375     153  2  WAW  101  6115  6235  102  6300  6420
   376     154  2  FRU  181  6125  6375  182  6470  6740
   377     155  2  GYD  147  6130  6310  148  6435  6620
   378     156  1  AER  869  6145  6290  870  6415  6555
   379     157  2  EVN  193  6170  6350  194  6425  6595
   380     158  1  KRR  765  6190  6320  766  6390  6520
   381     159  1  AAQ  703  6280  6420  704  6500  6610
   382     160  1  LED  845  6290  6380  846  6450  6535
   383     161  1  KRR  767  6300  6435  768  6525  6655
   384     162  2  KBP  183  6425  6520  184  6610  6700
   385     163  2  AYT  223  6500  6690  224  6750  6940
   386     164  1  AER  867  6510  6660  868  6730  6880
   387     165  1  MRV  787  6515  6665  788  6745  6895
   388     166  1  KRR  771  6570  6700  772  6790  6925
   389     167  1  LED  849  6585  6660  850  6720  6855
   390     168  2  IST  209  6640  6810  210  6880  7040
   391     169  1  AER  873  6645  6790  874  7520  7660
   392     170  1  ASF  711  6755  6905  712  7400  7555
   393     171  2  ULN  563  6755  7095  564  7175  7575
   394     172  2  OTP  151  6780  6935  152  7560  7700
   395     173  2  BEY  509  6785  7025  510  7110  7340
   396     174  2  OSL  211  6820  6980  212  7620  7775
   397     175  2  KBP  185  6830  6930  186  7480  7570
   398     176  1  IKT  739  6845  7180  740  7270  7630
   399     177  1  KRR  773  6855  7000  774  7380  7525
   400     178  1  SGC  877  6880  7075  878  7155  7385
   401     179  1  LED  857  6910  6990  858  7370  7450
   402     180  1  CEK  899  6990  7145  900  7215  7380
   403     181  1  PEE  821  6995  7150  822  7210  7360
   404     182  2  TBS  197  7000  7165  198  7320  7475
   405     183  1  UFA  891  7035  7165  892  7235  7370
   406     184  1  KJA  781  7060  7330  782  7440  7750
   407     185  1  IKT  743  7395  7720  744  7810  8170
   408     186  1  CEK  897  7405  7560  898  7630  7795
   409     187  1  KRR  763  7460  7600  764  7680  7810
   410     188  2  SIP  133  7480  7620  134  7700  7820
   411     189  2  BUD  131  7490  7650  132  7720  7875
   412     190  1  AAQ  701  7505  7640  702  7710  7840
   413     191  1  MRV  785  7510  7640  786  7720  7850
   414     192  2  IST  207  7545  7720  208  7795  7985
   415     193  2  WAW  101  7555  7675  102  7740  7860
   416     194  2  GYD  147  7570  7750  148  7875  8060
   417     195  1  AER  869  7585  7730  870  7855  7995
   418     196  2  AYT  221  7610  7800  222  7895  8085
   419     197  2  EVN  193  7610  7790  194  7865  8035
   420     198  1  KRR  765  7630  7760  766  7830  7960
   421     199  1  AAQ  703  7720  7860  704  7940  8050
   422     200  1  LED  845  7730  7820  846  7890  7975
   423     201  1  KRR  767  7740  7875  768  7965  8095
   424     202  2  KBP  183  7865  7960  184  8050  8140
   425     203  2  AYT  223  7940  8130  224  8190  8380
   426     204  1  MRV  787  7955  8105  788  8185  8335
   427     205  1  KRR  771  8010  8140  772  8230  8365
   428     206  1  LED  849  8025  8100  850  8160  8295
   429     207  2  IST  209  8080  8250  210  8320  8480
   430     208  1  AER  873  8085  8230  874  8960  9100
   431     209  1  ASF  711  8195  8345  712  8840  8995
   432     210  2  ULN  563  8195  8535  564  8615  9015
   433     211  1  KJA  779  8230  8500  780  8575  8870
   434     212  2  OSL  211  8260  8420  212  9060  9215
   435     213  2  KBP  185  8270  8370  186  8920  9010
   436     214  1  IKT  739  8285  8620  740  8710  9070
   437     215  1  KRR  773  8295  8440  774  8820  8965
   438     216  1  SGC  877  8320  8515  878  8595  8825
   439     217  1  LED  857  8350  8430  858  8810  8890
   440     218  1  CEK  899  8430  8585  900  8655  8820
   441     219  1  PEE  821  8435  8590  822  8650  8800
   442     220  2  TBS  197  8440  8605  198  8760  8915
   443     221  1  UFA  891  8475  8605  892  8675  8810
   444     222  1  KJA  781  8500  8770  782  8880  9190
   445     223  1  IKT  743  8835  9160  744  9250  9610
   446     224  1  OMS  815  8845  9045  816  9125  9340
   447     225  1  CEK  897  8845  9000  898  9070  9235
   448     226  1  KRR  763  8900  9040  764  9120  9250
   449     227  2  SIP  133  8920  9060  134  9140  9260
   450     228  2  BUD  131  8930  9090  132  9160  9315
   451     229  1  AAQ  701  8945  9080  702  9150  9280
   452     230  1  MRV  785  8950  9080  786  9160  9290
   453     231  2  IST  207  8985  9160  208  9235  9425
   454     232  2  WAW  101  8995  9115  102  9180  9300
   455     233  2  FRU  181  9005  9255  182  9350  9620
   456     234  2  GYD  147  9010  9190  148  9315  9500
   457     235  1  AER  869  9025  9170  870  9295  9435
   458     236  2  EVN  193  9050  9230  194  9305  9475
   459     237  1  KRR  765  9070  9200  766  9270  9400
   460     238  1  AAQ  703  9160  9300  704  9380  9490
   461     239  1  LED  845  9170  9260  846  9330  9415
   462     240  1  KRR  767  9180  9315  768  9405  9535
   463     241  2  KBP  183  9305  9400  184  9490  9580
   464     242  2  AYT  223  9380  9570  224  9630  9820
   465     243  1  MRV  787  9395  9545  788  9625  9775
   466     244  1  KRR  771  9450  9580  772  9670  9805
   467     245  1  LED  849  9465  9540  850  9600  9735
   468     246  2  IST  209  9520  9690  210  9760  9920
   469     247  1  AER  873  9525  9670  874 10400 10540
   470     248  1  ASF  711  9635  9785  712 10280 10435
   471     249  2  ULN  563  9635  9975  564 10055 10455
   472     250  2  OTP  151  9660  9815  152 10440 10580
   473     251  2  DAM  517  9665  9905  518  9990 10220
   474     252  2  OSL  211  9700  9860  212 10500 10655
   475     253  2  KBP  185  9710  9810  186 10360 10450
   476     254  1  IKT  739  9725 10060  740 10150 10510
   477     255  1  KRR  773  9735  9880  774 10260 10405
   478     256  1  SGC  877  9760  9955  878 10035 10265
   479     257  1  LED  857  9790  9870  858 10250 10330
   480     258  1  CEK  899  9870 10025  900 10095 10260
   481     259  1  PEE  821  9875 10030  822 10090 10240
   482     260  1  UFA  891  9915 10045  892 10115 10250
   483     261  1  KJA  781  9940 10210  782 10320 10630
   484 ;
   485 
   486 end;