examples/dist.mod
author Alpar Juttner <alpar@cs.elte.hu>
Mon, 06 Dec 2010 13:09:21 +0100
changeset 1 c445c931472f
permissions -rw-r--r--
Import glpk-4.45

- Generated files and doc/notes are removed
alpar@1
     1
# DIST, a product distribution model
alpar@1
     2
#
alpar@1
     3
# References:
alpar@1
     4
# Robert Fourer, David M. Gay and Brian W. Kernighan, "A Modeling Language
alpar@1
     5
# for Mathematical Programming." Management Science 36 (1990) 519-554.
alpar@1
     6
alpar@1
     7
###  SHIPPING SETS AND PARAMETERS  ###
alpar@1
     8
alpar@1
     9
set whse 'warehouses';  # Locations from which demand is satisfied
alpar@1
    10
alpar@1
    11
set dctr 'distribution centers' within whse;
alpar@1
    12
alpar@1
    13
                        # Locations from which product may be shipped
alpar@1
    14
alpar@1
    15
param sc 'shipping cost' {dctr,whse} >= 0;
alpar@1
    16
alpar@1
    17
                        # Shipping costs, to whse from dctr, in $ / 100 lb
alpar@1
    18
alpar@1
    19
param huge 'largest shipping cost' > 0;
alpar@1
    20
alpar@1
    21
                        # Largest cost allowed for a usable shipping route
alpar@1
    22
alpar@1
    23
param msr 'minimum size restriction' {dctr,whse} logical;
alpar@1
    24
alpar@1
    25
                        # True indicates a minimum-size restriction on
alpar@1
    26
                        # direct shipments using this dctr --> whse route
alpar@1
    27
alpar@1
    28
param dsr 'direct shipment requirement' {dctr} >= 0;
alpar@1
    29
alpar@1
    30
                        # Minimum total demand, in pallets, needed to
alpar@1
    31
                        # allow shipment on routes subject to the
alpar@1
    32
                        # minimum size restriction
alpar@1
    33
alpar@1
    34
###  PLANT SETS AND PARAMETERS  ###
alpar@1
    35
alpar@1
    36
set fact 'factories' within dctr;
alpar@1
    37
alpar@1
    38
                        # Locations where product is manufactured
alpar@1
    39
alpar@1
    40
param rtmin 'regular-time total minimum' >= 0;
alpar@1
    41
alpar@1
    42
                        # Lower limit on (average) total regular-time
alpar@1
    43
                        # crews employed at all factories
alpar@1
    44
alpar@1
    45
param rtmax 'regular-time total maximum' >= rtmin;
alpar@1
    46
alpar@1
    47
                        # Upper limit on (average) total regular-time
alpar@1
    48
                        # crews employed at all factories
alpar@1
    49
alpar@1
    50
param otmin 'overtime total minimum' >= 0;
alpar@1
    51
alpar@1
    52
                        # Lower limit on total overtime hours at all factories
alpar@1
    53
alpar@1
    54
param otmax 'overtime total maximum' >= otmin;
alpar@1
    55
alpar@1
    56
                        # Upper limit on total overtime hours at all factories
alpar@1
    57
alpar@1
    58
param rmin 'regular-time minimums' {fact} >= 0;
alpar@1
    59
alpar@1
    60
                        # Lower limits on (average) regular-time crews
alpar@1
    61
alpar@1
    62
param rmax 'regular-time maximums' {f in fact} >= rmin[f];
alpar@1
    63
alpar@1
    64
                        # Upper limits on (average) regular-time crews
alpar@1
    65
alpar@1
    66
param omin 'overtime minimums' {fact} >= 0;
alpar@1
    67
alpar@1
    68
                        # Lower limits on overtime hours
alpar@1
    69
alpar@1
    70
param omax 'overtime maximums' {f in fact} >= omin[f];
alpar@1
    71
alpar@1
    72
                        # Upper limits on overtime hours
alpar@1
    73
alpar@1
    74
param hd 'hours per day' {fact} >= 0;
alpar@1
    75
alpar@1
    76
                        # Regular-time hours per working day
alpar@1
    77
alpar@1
    78
param dp 'days in period' {fact} > 0;
alpar@1
    79
alpar@1
    80
                        # Working days in the current planning period
alpar@1
    81
alpar@1
    82
###  PRODUCT SETS AND PARAMETERS  ###
alpar@1
    83
alpar@1
    84
set prd 'products';     # Elements of the product group
alpar@1
    85
alpar@1
    86
param wt 'weight' {prd} > 0;
alpar@1
    87
alpar@1
    88
                        # Weight in 100 lb / 1000 cases
alpar@1
    89
alpar@1
    90
param cpp 'cases per pallet' {prd} > 0;
alpar@1
    91
alpar@1
    92
                        # Cases of product per shipping pallet
alpar@1
    93
alpar@1
    94
param tc 'transshipment cost' {prd} >= 0;
alpar@1
    95
alpar@1
    96
                        # Transshipment cost in $ / 1000 cases
alpar@1
    97
alpar@1
    98
param pt 'production time' {prd,fact} >= 0;
alpar@1
    99
alpar@1
   100
                        # Crew-hours to produce 1000 cases
alpar@1
   101
alpar@1
   102
param rpc 'regular-time production cost' {prd,fact} >= 0;
alpar@1
   103
alpar@1
   104
                        # Cost of production on regular time,
alpar@1
   105
                        # in $ / 1000 cases
alpar@1
   106
alpar@1
   107
param opc 'overtime production cost' {prd,fact} >= 0;
alpar@1
   108
alpar@1
   109
                        # Cost of production on overtime, in $ / 1000 cases
alpar@1
   110
alpar@1
   111
###  DEMAND SETS AND PARAMETERS  ###
alpar@1
   112
alpar@1
   113
param dt 'total demand' {prd} >= 0;
alpar@1
   114
alpar@1
   115
                        # Total demands for products, in 1000s
alpar@1
   116
alpar@1
   117
param ds 'demand shares' {prd,whse} >= 0.0, <= 1.0;
alpar@1
   118
alpar@1
   119
                        # Historical demand data, from which each
alpar@1
   120
                        # warehouse's share of total demand is deduced
alpar@1
   121
alpar@1
   122
param dstot {p in prd} := sum {w in whse} ds[p,w];
alpar@1
   123
alpar@1
   124
                        # Total of demand shares; should be 1, but often isn't
alpar@1
   125
alpar@1
   126
param dem 'demand' {p in prd, w in whse} := dt[p] * ds[p,w] / dstot[p];
alpar@1
   127
alpar@1
   128
                        # Projected demands to be satisfied, in 1000s
alpar@1
   129
alpar@1
   130
set rt 'shipping routes available' :=
alpar@1
   131
alpar@1
   132
 {d in dctr, w in whse:
alpar@1
   133
         d <> w  and  sc[d,w] < huge  and
alpar@1
   134
         (w in dctr or sum {p in prd} dem[p,w] > 0)  and
alpar@1
   135
         not (msr[d,w] and sum {p in prd} 1000*dem[p,w]/cpp[p] < dsr[d]) };
alpar@1
   136
alpar@1
   137
                        # List of ordered pairs that represent routes
alpar@1
   138
                        # on which shipments are allowed
alpar@1
   139
alpar@1
   140
###  VARIABLES  ###
alpar@1
   141
alpar@1
   142
var Rprd 'regular-time production' {prd,fact} >= 0;
alpar@1
   143
alpar@1
   144
                        # Regular-time production of each product
alpar@1
   145
                        # at each factory, in 1000s of cases
alpar@1
   146
alpar@1
   147
var Oprd 'overtime production' {prd,fact} >= 0;
alpar@1
   148
alpar@1
   149
                        # Overtime production of each product
alpar@1
   150
                        # at each factory, in 1000s of cases
alpar@1
   151
alpar@1
   152
var Ship 'shipments' {prd,rt} >= 0;
alpar@1
   153
alpar@1
   154
                        # Shipments of each product on each allowed route,
alpar@1
   155
                        # in 1000s of cases
alpar@1
   156
alpar@1
   157
var Trans 'transshipments' {prd,dctr} >= 0;
alpar@1
   158
alpar@1
   159
                        # Transshipments of each product at each
alpar@1
   160
                        # distribution center, in 1000s of cases
alpar@1
   161
alpar@1
   162
###  OBJECTIVE  ###
alpar@1
   163
alpar@1
   164
minimize cost:  sum {p in prd, f in fact} rpc[p,f] * Rprd[p,f] +
alpar@1
   165
                sum {p in prd, f in fact} opc[p,f] * Oprd[p,f] +
alpar@1
   166
                sum {p in prd, (d,w) in rt} sc[d,w] * wt[p] * Ship[p,d,w] +
alpar@1
   167
                sum {p in prd, d in dctr} tc[p] * Trans[p,d];
alpar@1
   168
alpar@1
   169
                        # Total cost:  regular production, overtime
alpar@1
   170
                        # production, shipping, and transshipment
alpar@1
   171
alpar@1
   172
###  CONSTRAINTS  ###
alpar@1
   173
alpar@1
   174
rtlim 'regular-time total limits':
alpar@1
   175
alpar@1
   176
    rtmin <= sum {p in prd, f in fact}
alpar@1
   177
                        (pt[p,f] * Rprd[p,f]) / (dp[f] * hd[f]) <= rtmax;
alpar@1
   178
alpar@1
   179
                        # Total crews must lie between limits
alpar@1
   180
alpar@1
   181
otlim 'overtime total limits':
alpar@1
   182
alpar@1
   183
    otmin <= sum {p in prd, f in fact} pt[p,f] * Oprd[p,f] <= otmax;
alpar@1
   184
alpar@1
   185
                        # Total overtime must lie between limits
alpar@1
   186
alpar@1
   187
rlim 'regular-time limits' {f in fact}:
alpar@1
   188
alpar@1
   189
    rmin[f] <= sum {p in prd}
alpar@1
   190
                        (pt[p,f] * Rprd[p,f]) / (dp[f] * hd[f]) <= rmax[f];
alpar@1
   191
alpar@1
   192
                        # Crews at each factory must lie between limits
alpar@1
   193
alpar@1
   194
olim 'overtime limits' {f in fact}:
alpar@1
   195
alpar@1
   196
    omin[f] <= sum {p in prd} pt[p,f] * Oprd[p,f] <= omax[f];
alpar@1
   197
alpar@1
   198
                        # Overtime at each factory must lie between limits
alpar@1
   199
alpar@1
   200
noRprd 'no regular production' {p in prd, f in fact: rpc[p,f] = 0}:
alpar@1
   201
alpar@1
   202
    Rprd[p,f] = 0;
alpar@1
   203
alpar@1
   204
noOprd 'no overtime production' {p in prd, f in fact: opc[p,f] = 0}:
alpar@1
   205
alpar@1
   206
    Oprd[p,f] = 0;      # Do not produce where specified cost is zero
alpar@1
   207
alpar@1
   208
bal 'material balance' {p in prd, w in whse}:
alpar@1
   209
alpar@1
   210
    sum {(v,w) in rt}
alpar@1
   211
       Ship [p,v,w] + (if w in fact then Rprd[p,w] + Oprd[p,w]) =
alpar@1
   212
alpar@1
   213
    dem[p,w] + (if w in dctr then sum {(w,v) in rt} Ship[p,w,v]);
alpar@1
   214
alpar@1
   215
                        # Demand is satisfied by shipment into warehouse
alpar@1
   216
                        # plus production (if it is a factory)
alpar@1
   217
                        # minus shipment out (if it is a distn. center)
alpar@1
   218
alpar@1
   219
trdef 'transshipment definition' {p in prd, d in dctr}:
alpar@1
   220
alpar@1
   221
    Trans[p,d] >= sum {(d,w) in rt} Ship [p,d,w] -
alpar@1
   222
                  (if d in fact then Rprd[p,d] + Oprd[p,d]);
alpar@1
   223
alpar@1
   224
                        # Transshipment at a distribution center is
alpar@1
   225
                        # shipments out less production (if any)
alpar@1
   226
alpar@1
   227
###  DATA -- 3 PRODUCTS  ###
alpar@1
   228
alpar@1
   229
data;
alpar@1
   230
alpar@1
   231
set prd := 18REG 24REG 24PRO ;
alpar@1
   232
alpar@1
   233
set whse := w01 w02 w03 w04 w05 w06 w08 w09 w12 w14 w15 w17
alpar@1
   234
            w18 w19 w20 w21 w24 w25 w26 w27 w28 w29 w30 w31
alpar@1
   235
            w32 w33 w34 w35 w36 w37 w38 w39 w40 w41 w42 w43
alpar@1
   236
            w44 w45 w46 w47 w48 w49 w50 w51 w53 w54 w55 w56
alpar@1
   237
            w57 w59 w60 w61 w62 w63 w64 w65 w66 w68 w69 w71
alpar@1
   238
            w72 w73 w74 w75 w76 w77 w78 w79 w80 w81 w82 w83
alpar@1
   239
            w84 w85 w86 w87 w89 w90 w91 w92 w93 w94 w95 w96
alpar@1
   240
            w98 x22 x23 ;
alpar@1
   241
alpar@1
   242
set dctr := w01 w02 w03 w04 w05 w62 w76 w96 ;
alpar@1
   243
alpar@1
   244
set fact := w01 w05 w96 ;
alpar@1
   245
alpar@1
   246
param huge := 99. ;
alpar@1
   247
alpar@1
   248
param rtmin := 0.0 ;
alpar@1
   249
param rtmax := 8.0 ;
alpar@1
   250
alpar@1
   251
param otmin :=  0.0 ;
alpar@1
   252
param otmax := 96.0 ;
alpar@1
   253
alpar@1
   254
param rmin  :=  w01 0.00   w05 0.00   w96 0.00 ;
alpar@1
   255
param rmax  :=  w01 3.00   w05 2.00   w96 3.00 ;
alpar@1
   256
alpar@1
   257
param omin  :=  w01  0.0   w05  0.0   w96  0.0 ;
alpar@1
   258
param omax  :=  w01 48.0   w05  0.0   w96 48.0 ;
alpar@1
   259
alpar@1
   260
param hd    :=  w01  8.0   w05  8.0   w96  8.0 ;
alpar@1
   261
alpar@1
   262
param dp    :=  w01 19.0   w05 19.0   w96 19.0 ;
alpar@1
   263
alpar@1
   264
param wt  :=  18REG  47.3    24REG  63.0    24PRO  63.0 ;
alpar@1
   265
alpar@1
   266
param tc  :=  18REG  40.00   24REG  45.00   24PRO  45.00 ;
alpar@1
   267
alpar@1
   268
param dt  :=  18REG 376.0    24REG 172.4    24PRO 316.3 ;
alpar@1
   269
alpar@1
   270
param cpp :=  18REG 102.     24REG  91.     24PRO  91. ;
alpar@1
   271
alpar@1
   272
param dsr := w01 96.  w02 96.  w03 96.  w04 96.  w05 96.
alpar@1
   273
             w62 96.  w76 96.  w96 96. ;
alpar@1
   274
alpar@1
   275
param pt (tr) :
alpar@1
   276
alpar@1
   277
       18REG     24REG     24PRO    :=
alpar@1
   278
alpar@1
   279
w01    1.194     1.429     1.429
alpar@1
   280
w05    1.194     1.509     1.509
alpar@1
   281
w96    0.000     1.600     1.600    ;
alpar@1
   282
alpar@1
   283
param rpc (tr) :
alpar@1
   284
alpar@1
   285
       18REG     24REG     24PRO    :=
alpar@1
   286
alpar@1
   287
w01    2119.       2653.    2617.
alpar@1
   288
w05    2489.       3182.    3176.
alpar@1
   289
w96       0.       2925.    2918.   ;
alpar@1
   290
alpar@1
   291
param opc (tr) :
alpar@1
   292
alpar@1
   293
       18REG     24REG     24PRO    :=
alpar@1
   294
alpar@1
   295
w01    2903.     3585.     3579.
alpar@1
   296
w05       0.        0.        0.
alpar@1
   297
w96       0.     3629.     3622.    ;
alpar@1
   298
alpar@1
   299
param sc  default 99.99 (tr) :
alpar@1
   300
alpar@1
   301
         w01     w02     w03     w04     w05     w62     w76     w96  :=
alpar@1
   302
alpar@1
   303
w01      .      2.97    1.14    2.08    2.37    1.26    2.42    1.43
alpar@1
   304
w02     4.74     .      4.17    6.12    7.41    3.78    7.04    5.21
alpar@1
   305
w03     2.45    4.74     .      3.67    2.84    0.90    2.41    2.55
alpar@1
   306
w04     1.74    5.03    2.43     .      3.19    2.45    2.69    0.58
alpar@1
   307
w05     2.70    5.16    2.84    2.85     .      3.26    3.34    2.71
alpar@1
   308
w06     1.99    4.17    2.13    2.19    2.52    2.06    2.00    1.51
alpar@1
   309
w08     0.21    2.92    1.24    2.07    2.29    1.25    2.32    1.55
alpar@1
   310
w09     0.66    3.76    1.41    2.47    1.82    1.66     .      1.87
alpar@1
   311
w12     1.38    3.83    1.68    2.53    2.39     .      1.96    1.94
alpar@1
   312
w14     2.47    1.58    2.40    3.59    3.85    2.25     .      3.05
alpar@1
   313
w15     1.06    4.95    2.48    1.39    3.41    1.96     .      1.02
alpar@1
   314
w17     0.88    3.39    1.46    2.00    2.67    1.45     .      1.46
alpar@1
   315
w18     7.90    6.57    7.79    9.59    10.81    .       .      6.70
alpar@1
   316
w19     1.42    4.12    1.96    1.99    3.52    1.88     .      1.26
alpar@1
   317
w20     3.03    1.59    2.34    4.76    3.98    1.88     .      3.73
alpar@1
   318
w24     1.58    2.80    2.27    2.87    3.19    1.31     .      2.05
alpar@1
   319
w25     1.51    5.05    2.74    0.57    2.98     .      2.95    0.27
alpar@1
   320
w26     1.75    3.61    2.70    1.54    4.07    3.52     .      1.03
alpar@1
   321
w27     2.48    6.87    3.17    1.59    2.08    3.45     .      0.99
alpar@1
   322
w28     2.05    6.83    2.97    1.13    2.91     .       .      1.26
alpar@1
   323
w29     4.03    3.68    4.46    3.20    5.50     .       .      3.20
alpar@1
   324
w30     2.48    5.78    2.99    2.24    1.79    3.10     .      1.39
alpar@1
   325
w31     2.34    5.41    2.87    1.67    1.66     .       .      1.39
alpar@1
   326
w32     14.36    .       .       .       .       .       .       .
alpar@1
   327
w33     3.87    4.27    5.11    3.48    5.66    4.03     .      3.05
alpar@1
   328
w34     3.26    4.80    3.21    2.70    4.14     .       .      1.77
alpar@1
   329
w35     2.34    2.84    2.89    3.35    3.78    2.68     .      2.52
alpar@1
   330
w36     2.43    5.69    2.96    2.95    1.02    2.61    1.07    2.54
alpar@1
   331
w37     2.23    4.64    2.41    1.99    4.30    2.61     .      1.44
alpar@1
   332
w38     4.66    4.36    5.23    3.04    4.46     .       .      3.82
alpar@1
   333
w39     1.11    3.51    1.10    2.53    3.07    1.12     .      2.23
alpar@1
   334
w40     2.99    4.78    4.23    1.57    3.92     .       .      1.80
alpar@1
   335
w41     4.93    4.00    5.43    4.45    6.31     .       .      3.81
alpar@1
   336
w42     3.86    6.55    5.03    2.11    4.41     .       .      2.63
alpar@1
   337
w43     4.61    4.45    3.77    1.22    4.31     .       .      2.35
alpar@1
   338
w44     2.05    4.48    1.06    3.70    3.46    1.10     .      3.21
alpar@1
   339
w45     0.92    3.42    1.58    3.04    1.82    1.94     .      2.52
alpar@1
   340
w46     1.36    2.44    0.95    3.08    2.78    0.39    2.16    2.37
alpar@1
   341
w47     1.30    3.39    1.60    2.49    4.29    2.04     .      1.68
alpar@1
   342
w48     1.65    3.78    1.03    2.97    2.21    1.31     .      2.74
alpar@1
   343
w49     1.96    3.00    1.50    3.24    3.68    1.00     .      2.99
alpar@1
   344
w50     0.90    4.14    1.60    1.95    3.61    1.61     .      1.52
alpar@1
   345
w51     1.59    3.95    0.25    2.96    2.58    1.00    2.41    2.71
alpar@1
   346
w53     1.59    3.79    1.28    3.12    3.10    0.89     .      2.98
alpar@1
   347
w54     1.72    4.36    1.61    2.92    2.34    1.91    1.97    3.05
alpar@1
   348
w55     2.45    2.73    2.21    4.47    4.30    2.57     .      4.48
alpar@1
   349
w56     1.10    3.73    1.59    2.74    2.33    1.45     .      2.44
alpar@1
   350
w57     0.95    3.39    1.37    2.30    2.47    1.15     .      1.95
alpar@1
   351
w59     3.29    5.35    3.32    3.81    1.52    3.38    1.34    4.08
alpar@1
   352
w60     2.41    6.12    2.46    3.65    2.35     .      1.37    4.06
alpar@1
   353
w61     3.32    5.50    3.41    3.38    1.23     .      0.99    4.28
alpar@1
   354
w62     1.12    3.00    0.82    3.22    2.95     .      3.33    2.53
alpar@1
   355
w63     3.59    6.36    3.25    4.12    1.84    3.59    1.46    4.03
alpar@1
   356
w64     1.85    4.45    2.17    3.43    2.13    2.03     .      4.02
alpar@1
   357
w65     2.78    4.79    2.81    2.94    1.54    2.90    1.07    2.94
alpar@1
   358
w66     3.90    5.79    3.05    3.65    1.36    3.39    1.22    3.57
alpar@1
   359
w68     2.61    5.20    2.90    2.34    1.68    3.19    1.48    2.31
alpar@1
   360
w69     2.94    5.21    2.78    3.43    0.21    3.26    0.68    2.54
alpar@1
   361
w71     2.06    4.98    2.38    2.44    1.59    2.97    1.05    2.55
alpar@1
   362
w72     2.61    5.50    2.83    3.12    1.35    3.23    0.88    2.99
alpar@1
   363
w73     8.52    6.16    8.03    8.83    10.44   7.38    10.26    .
alpar@1
   364
w74     6.11    5.46    9.07    9.38    10.80    .       .      8.25
alpar@1
   365
w75     2.66    4.94    2.87    3.69    1.52    3.15    1.24    4.00
alpar@1
   366
w76     1.99    5.26    2.23    3.36    0.58    3.17     .      2.50
alpar@1
   367
w77     4.32    3.07    5.05    3.88    6.04     .       .      4.15
alpar@1
   368
w78     5.60    2.59    5.78    5.56    7.10     .       .      5.60
alpar@1
   369
w79     4.25    2.32    4.93    4.57    6.04     .       .      4.58
alpar@1
   370
w80     5.94    4.00    5.60    7.02    9.46     .       .      7.51
alpar@1
   371
w81     5.39    2.21    5.10    6.22    6.46     .       .      6.58
alpar@1
   372
w82     8.80    5.69    9.29    9.88    11.69   8.63    11.52    .
alpar@1
   373
w83     4.40     .      5.24    5.21    5.81    3.91    7.04    5.33
alpar@1
   374
w84     5.87    5.43    6.17    5.70    7.63     .       .      5.70
alpar@1
   375
w85     3.90    3.65    3.38    4.57    5.64    3.05     .      5.04
alpar@1
   376
w86     5.48    2.10    5.70    6.37    7.33     .       .      6.19
alpar@1
   377
w87     8.88    5.54    9.50    9.71    11.64   8.85    11.68    .
alpar@1
   378
w89     4.62    4.01    4.03    6.30    6.30    3.81     .      7.77
alpar@1
   379
w90     4.35    2.72    4.61    4.01    5.60     .       .      3.20
alpar@1
   380
w91     7.61    4.42    7.83    6.85    8.79     .       .      7.66
alpar@1
   381
w92     7.15    2.69    6.91    7.20     .       .       .      7.06
alpar@1
   382
w93     3.17    3.95    4.37    3.74    5.05     .       .      2.40
alpar@1
   383
w94     1.21    3.07    0.90    2.74    3.17     .      2.63    2.39
alpar@1
   384
w95     5.82    3.29    6.55    7.06    11.47    .       .      7.83
alpar@1
   385
w96     1.77    5.20    2.72    0.59    3.47    2.48     .       .
alpar@1
   386
w98     3.04    1.92    3.64    3.70    4.90    3.05     .      3.88
alpar@1
   387
x22     4.08    6.25    4.15    4.30    1.77     .      1.77     .
alpar@1
   388
x23     3.39    5.74    3.55    4.08    1.69     .      1.47     .      ;
alpar@1
   389
alpar@1
   390
param msr (tr) :
alpar@1
   391
alpar@1
   392
         w01     w02     w03     w04     w05     w62     w76     w96    :=
alpar@1
   393
alpar@1
   394
w01        0       0       0       0       0       0       1       0
alpar@1
   395
w02        0       0       0       0       0       0       1       0
alpar@1
   396
w03        0       0       0       0       0       0       1       0
alpar@1
   397
w04        0       0       0       0       0       0       1       0
alpar@1
   398
w05        0       0       0       0       0       0       0       0
alpar@1
   399
w06        0       1       1       1       1       1       1       1
alpar@1
   400
w08        0       1       1       1       1       1       1       1
alpar@1
   401
w09        0       1       1       1       1       1       0       1
alpar@1
   402
w12        0       1       1       1       1       0       1       1
alpar@1
   403
w14        1       1       1       1       1       0       0       1
alpar@1
   404
w15        0       1       1       1       1       1       0       1
alpar@1
   405
w17        0       1       1       1       1       1       0       1
alpar@1
   406
w18        0       1       1       1       1       0       0       1
alpar@1
   407
w19        0       1       1       1       1       0       0       1
alpar@1
   408
w20        1       1       1       1       1       0       0       1
alpar@1
   409
w24        0       1       1       1       1       0       0       1
alpar@1
   410
w25        0       1       1       1       1       0       1       0
alpar@1
   411
w26        1       1       1       0       1       1       0       1
alpar@1
   412
w27        1       1       1       0       1       1       0       1
alpar@1
   413
w28        1       1       1       0       1       0       0       1
alpar@1
   414
w29        0       1       1       1       1       0       0       1
alpar@1
   415
w30        1       1       1       0       1       1       0       1
alpar@1
   416
w31        1       1       1       0       1       0       0       1
alpar@1
   417
w32        0       0       0       0       0       0       0       0
alpar@1
   418
w33        1       0       1       1       1       1       0       1
alpar@1
   419
w34        1       1       1       0       1       0       0       1
alpar@1
   420
w35        1       1       1       1       1       0       0       1
alpar@1
   421
w36        0       1       1       1       0       1       1       1
alpar@1
   422
w37        1       1       1       0       1       1       0       1
alpar@1
   423
w38        1       1       1       0       1       0       0       1
alpar@1
   424
w39        0       1       1       1       1       1       0       1
alpar@1
   425
w40        1       1       1       0       1       0       0       1
alpar@1
   426
w41        1       0       1       1       1       0       0       1
alpar@1
   427
w42        1       1       1       0       1       0       0       1
alpar@1
   428
w43        1       1       1       0       1       0       0       1
alpar@1
   429
w44        1       1       1       1       1       0       0       1
alpar@1
   430
w45        0       1       1       1       1       1       0       1
alpar@1
   431
w46        0       1       1       1       1       0       1       1
alpar@1
   432
w47        0       1       1       1       1       1       0       1
alpar@1
   433
w48        0       1       1       1       1       0       0       1
alpar@1
   434
w49        1       1       1       1       1       0       0       1
alpar@1
   435
w50        0       1       1       1       1       1       0       1
alpar@1
   436
w51        0       1       1       1       1       0       1       1
alpar@1
   437
w53        1       1       1       1       1       0       0       1
alpar@1
   438
w54        0       1       1       1       1       1       1       1
alpar@1
   439
w55        0       1       1       1       1       0       0       1
alpar@1
   440
w56        0       1       1       1       1       1       0       1
alpar@1
   441
w57        0       1       1       1       1       1       0       1
alpar@1
   442
w59        0       1       1       1       0       1       1       1
alpar@1
   443
w60        0       1       1       1       1       0       1       1
alpar@1
   444
w61        0       1       1       1       0       0       1       1
alpar@1
   445
w62        0       0       0       0       0       0       1       0
alpar@1
   446
w63        0       1       1       1       0       1       1       1
alpar@1
   447
w64        0       1       1       1       1       1       0       1
alpar@1
   448
w65        0       1       1       1       0       1       1       1
alpar@1
   449
w66        0       1       1       1       0       1       1       1
alpar@1
   450
w68        0       1       1       1       0       1       1       1
alpar@1
   451
w69        0       1       1       1       0       1       1       1
alpar@1
   452
w71        0       1       1       1       0       1       1       1
alpar@1
   453
w72        0       1       1       1       0       1       1       1
alpar@1
   454
w73        0       1       1       1       0       1       1       0
alpar@1
   455
w74        0       1       1       1       0       0       0       1
alpar@1
   456
w75        0       1       1       1       0       1       1       1
alpar@1
   457
w76        0       0       0       0       0       0       0       0
alpar@1
   458
w77        1       0       1       1       1       0       0       1
alpar@1
   459
w78        1       0       1       1       1       0       0       1
alpar@1
   460
w79        1       0       1       1       1       0       0       1
alpar@1
   461
w80        1       0       1       1       1       0       0       1
alpar@1
   462
w81        1       0       1       1       1       0       0       1
alpar@1
   463
w82        1       0       1       1       1       1       1       0
alpar@1
   464
w83        1       0       1       1       1       0       1       1
alpar@1
   465
w84        1       0       1       1       1       0       0       1
alpar@1
   466
w85        1       1       1       1       1       0       0       1
alpar@1
   467
w86        1       0       1       1       1       0       0       1
alpar@1
   468
w87        1       0       1       1       1       1       1       0
alpar@1
   469
w89        1       0       1       1       1       1       0       1
alpar@1
   470
w90        0       1       1       1       1       0       0       1
alpar@1
   471
w91        1       0       1       1       1       0       0       1
alpar@1
   472
w92        1       0       1       1       1       0       0       1
alpar@1
   473
w93        1       1       1       0       1       0       0       1
alpar@1
   474
w94        0       0       1       1       1       0       1       1
alpar@1
   475
w95        1       0       1       1       1       0       0       1
alpar@1
   476
w96        0       0       0       0       0       0       0       0
alpar@1
   477
w98        1       0       1       1       1       1       0       1
alpar@1
   478
x22        1       1       1       1       0       0       1       0
alpar@1
   479
x23        1       1       1       1       0       0       1       0    ;
alpar@1
   480
alpar@1
   481
param ds default 0.000 (tr) :
alpar@1
   482
alpar@1
   483
         18REG     24REG     24PRO    :=
alpar@1
   484
alpar@1
   485
w01      0.000     0.000     0.008
alpar@1
   486
w02      0.004     0.000     0.000
alpar@1
   487
w03      0.000     0.000     0.000
alpar@1
   488
w04      0.010     0.002     0.000
alpar@1
   489
w05      0.000     0.000     0.000
alpar@1
   490
w06      0.010     0.008     0.008
alpar@1
   491
w08      0.030     0.024     0.024
alpar@1
   492
w09      0.014     0.018     0.020
alpar@1
   493
w12      0.014     0.012     0.010
alpar@1
   494
w14      0.007     0.007     0.012
alpar@1
   495
w15      0.010     0.019     0.018
alpar@1
   496
w17      0.013     0.010     0.011
alpar@1
   497
w19      0.015     0.012     0.009
alpar@1
   498
w20      0.012     0.021     0.022
alpar@1
   499
w21      0.000     0.000     0.000
alpar@1
   500
w24      0.012     0.022     0.018
alpar@1
   501
w25      0.019     0.025     0.020
alpar@1
   502
w26      0.006     0.015     0.021
alpar@1
   503
w27      0.008     0.010     0.015
alpar@1
   504
w28      0.011     0.016     0.019
alpar@1
   505
w29      0.008     0.020     0.013
alpar@1
   506
w30      0.011     0.013     0.015
alpar@1
   507
w31      0.011     0.013     0.017
alpar@1
   508
w32      0.006     0.000     0.000
alpar@1
   509
w33      0.000     0.015     0.014
alpar@1
   510
w34      0.008     0.007     0.005
alpar@1
   511
w35      0.002     0.006     0.014
alpar@1
   512
w36      0.015     0.013     0.005
alpar@1
   513
w37      0.017     0.016     0.015
alpar@1
   514
w38      0.015     0.009     0.012
alpar@1
   515
w39      0.007     0.017     0.022
alpar@1
   516
w40      0.009     0.014     0.020
alpar@1
   517
w41      0.003     0.014     0.011
alpar@1
   518
w42      0.017     0.011     0.012
alpar@1
   519
w43      0.009     0.013     0.011
alpar@1
   520
w44      0.002     0.012     0.012
alpar@1
   521
w45      0.016     0.025     0.028
alpar@1
   522
w46      0.038     0.062     0.040
alpar@1
   523
w47      0.007     0.010     0.010
alpar@1
   524
w48      0.003     0.015     0.016
alpar@1
   525
w49      0.005     0.016     0.017
alpar@1
   526
w50      0.011     0.008     0.007
alpar@1
   527
w51      0.010     0.022     0.021
alpar@1
   528
w53      0.004     0.026     0.020
alpar@1
   529
w54      0.020     0.017     0.025
alpar@1
   530
w55      0.004     0.019     0.028
alpar@1
   531
w56      0.004     0.010     0.008
alpar@1
   532
w57      0.014     0.020     0.018
alpar@1
   533
w59      0.012     0.006     0.007
alpar@1
   534
w60      0.019     0.010     0.009
alpar@1
   535
w61      0.028     0.010     0.012
alpar@1
   536
w62      0.000     0.000     0.000
alpar@1
   537
w63      0.070     0.027     0.037
alpar@1
   538
w64      0.009     0.004     0.005
alpar@1
   539
w65      0.022     0.015     0.016
alpar@1
   540
w66      0.046     0.017     0.020
alpar@1
   541
w68      0.005     0.012     0.016
alpar@1
   542
w69      0.085     0.036     0.039
alpar@1
   543
w71      0.011     0.013     0.010
alpar@1
   544
w72      0.089     0.031     0.034
alpar@1
   545
w75      0.026     0.012     0.010
alpar@1
   546
w77      0.001     0.004     0.002
alpar@1
   547
w78      0.002     0.004     0.002
alpar@1
   548
w79      0.001     0.004     0.002
alpar@1
   549
w80      0.001     0.001     0.002
alpar@1
   550
w81      0.001     0.003     0.002
alpar@1
   551
w83      0.009     0.010     0.008
alpar@1
   552
w84      0.001     0.002     0.002
alpar@1
   553
w85      0.001     0.004     0.005
alpar@1
   554
w86      0.001     0.002     0.002
alpar@1
   555
w87      0.002     0.003     0.000
alpar@1
   556
w89      0.001     0.001     0.002
alpar@1
   557
w90      0.006     0.017     0.013
alpar@1
   558
w91      0.002     0.010     0.013
alpar@1
   559
w92      0.000     0.003     0.002
alpar@1
   560
w93      0.002     0.006     0.007
alpar@1
   561
w95      0.001     0.007     0.007
alpar@1
   562
w96      0.000     0.000     0.000
alpar@1
   563
w98      0.006     0.005     0.002    ;
alpar@1
   564
alpar@1
   565
end;