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