ferts.gms : Egypt - Static Fertilizer Model

Description

A simple production and distribution model of the Egyptian fertilizer
sector for the year 1975. This model was mainly used for data and
model validation purposes.


Large Model of Type : LP


Category : GAMS Model library


Main file : ferts.gms

$title EGYPT - Static Fertilizer Model (FERTS,SEQ=13)

$onText
A simple production and distribution model of the Egyptian fertilizer
sector for the year 1975. This model was mainly used for data and
model validation purposes.


Choksi, A M, Meeraus, A, and Stoutjesdijk, A, The Planning of Investment
Programs in the Fertilizer Industry. The John Hopkins University Press,
Baltimore and London, 1980.

Keywords: linear programming, production problem, distribution problem, micro
          economics, fertilizer industry, agricultural production
$offText

$sTitle Set Definitions
Set
   i     'plant locations'  / aswan
                              helwan
                              assiout
                              kafr-el-zt
                              abu-zaabal /
   j     'demand regions'   / alexandria  'alexandria'
                              behera      'damanhur'
                              gharbia     'tanta'
                              kafr-el-sh  'kare el-sheikh'
                              dakahlia    'el mansura'
                              damietta    'damietta'
                              sharkia     'zagazig'
                              ismailia    'ismailia'
                              suez        'suez'
                              menoufia    'shibin el kom'
                              kalubia     'benha'
                              giza        'giza'
                              beni-suef   'beni-suef'
                              fayoum      'el-fayoum'
                              minia       'el-minia'
                              assiout     'assoiut'
                              new-valley  'el kharga'
                              sohag       'sohag'
                              quena       'quena'
                              aswan       'aswan'     /
   m     'productive units' / sulf-a-s    'sulfuric acid: sulfur'
                              sulf-a-p    'sulfuric acid: pyrites'
                              nitr-acid   'nitric acid'
                              amm-elec    'ammonia: water electrolysis'
                              amm-c-gas   'ammonia: coke gas'
                              c-amm-nitr  'calcium ammonium nitrate'
                              amm-sulf    'ammonium sulfate'
                              ssp         'single superphosphate'      /
   p     'processes'        / sulf-a-s    'sulfuric acid: sulfur'
                              sulf-a-p    'sulfuric acid: pyrites'
                              nitr-acid   'nitric acid'
                              amm-elec    'ammonia: water electrolysis'
                              amm-c-gas   'ammonia: coke gas'
                              can-310     'calcium ammonium nitrate: 31.0 %'
                              can-335     'calcium ammonium nitrate: 33.5 %'
                              amm-sulf    'ammonium sulfate'
                              ssp-155     'single superphosphate: 15.5 %'   /
   cq    'nutrients'        / n           'nitrogen'
                              p2o5        'phosphorus' /
   c     'commodities'      / urea
                              can-260     'calcium ammonium nitrate: 26.0 %'
                              can-310     'calcium ammonium nitrate: 31.0 %'
                              can-335     'calcium ammonium nitrate: 33.5 %'
                              amm-sulf    'ammonium phosphate'
                              dap         'diammonium phosphate'
                              ssp-155     'single superphosphate: 15.5 %'
                              c-250-55    'compound 25-5.5-0'
                              c-300-100   'compound 30-10-0'
                              ammonia
                              nitr-acid   'nitric acid'
                              sulf-acid   'sulfuric acid'
                              el-aswan    'electricity from aswan dam'
                              coke-gas    'coke-oven gas'
                              phos-rock   'phosphate rock'
                              limestone
                              el-sulfur   'elemental sulfur'
                              pyrites
                              electric    'electricity'
                              bf-gas      'blast-furnace gas'
                              water       'cooling water'
                              steam
                              bags                                        /
   cf(c) 'final product'
         / urea, can-260, can-310, can-335, dap, ssp-155, c-250-55, c-300-100, amm-sulf /
   ci(c) 'intermediate products'      / ammonia, nitr-acid, sulf-acid /
   cs(c) 'intermediates for shipment' / ammonia, sulf-acid            /
   cr(c) 'domestic raw materials and miscellaneous inputs'
         / el-aswan , coke-gas, phos-rock, limestone
           el-sulfur, pyrites , electric , bf-gas
           water    , steam   , bags     , sulf-acid /;

Alias (i,ip);

$sTitle Consumption and Demand Data
Table cf75(j,c) 'fertilizer consumption 1974-75 (1000 tpy)'
               amm-sulf  urea  can-260  can-310  can-335  dap  ssp-155  c-250-55  c-300-100
   alexandria       3.0   1.0                        5.0           8.0
   behera          90.0  35.0      1.0              25.0   .1     64.0       1.0         .1
   gharbia         60.0  28.0                       17.0   .1     57.0       1.0         .2
   kafr-el-sh      45.0  22.0      1.0              10.0          25.0       2.0         .1
   dakahlia        60.0  20.0      1.0              26.0          52.0       1.0
   damietta        15.0   8.0                        2.0           5.0
   sharkia         50.0  28.0      1.0              31.0          43.0       1.0         .1
   ismailia         6.0   2.0                        4.0           4.0
   suez                                              1.0           1.0
   menoufia        21.0  30.0      1.0              24.0   .1     33.0       2.0         .1
   kalubia         16.0   7.0                       25.0   .1     22.0       1.0
   giza             6.0   2.0                       40.0          14.0       1.0         .1
   beni-suef        1.0  20.0      1.0              15.0          13.0       3.0
   fayoum           6.0  20.0      1.0              20.0          17.0       1.0
   minia            1.0  41.0      2.0     15.0     35.0   .1     50.0       3.0         .2
   assiout          1.0  27.0      1.0     20.0     26.0          35.0       5.0         .1
   new-valley             1.0                                      1.0
   sohag                  7.0              65.0      3.0          20.0       1.0
   quena                  3.0              95.0      2.0           8.0
   aswan                                   40.0                    8.0                     ;

Table alpha(c,cq) 'nutrient content'
                 n    p2o5
   urea        .46
   can-260     .26
   can-310     .31
   can-335     .335
   amm-sulf    .206
   dap         .18   .46
   ssp-155           .155
   c-250-55    .25   .055
   c-300-100   .30   .10 ;

Parameter cn75(*,cq) 'consumption of nutrients 1974-75 (1000 tpy)';

cn75(j,cq)       = sum(cf, alpha(cf,cq)*cf75(j,cf));
cn75("total",cq) = sum(j, cn75(j,cq));

display cn75;

$sTitle Transportation Data
Table road(j,*) 'road distances (km)'
               abu-kir  kafr-el-zt  talkha  abu-zaabal  helwan    assiout  aswan
   alexandria       16         119     187         210     244        607   1135
   behera           76          42     120          50     184        547   1065
   gharbia         150          20      55          65     122        485   1003
   kafr-el-sh      145          20      35         105     162        525   1043
   dakahlia        208          58       3         138     152        515   1033
   damietta        267         131      66         216     233        596   1114
   sharkia         240          78      58          60     110        473    991
   ismailia        365         241     146         142     173        536   1054
   suez            370         246     298         224     178        541   1059
   menoufia        157          33      90         154     109        472    990
   kalubia         190          66      81          97      76        439    957
   giza            287         133     146          48       9        372    890
   beni-suef       359         248     261         163     105        257    775
   fayoum          341         230     243         145      88        308    826
   minia           384         372     386         288     230        132    650
   assiout         616         504     518         420     362               518
   new-valley      815         703     717         619     561        199    519
   sohag           715         603     617         519     461         99    419
   quena           858         746     760         662     604        242    276
   aswan          1134        1022    1036         938     880        518       ;

Table rail(i,i) 'interplant rail distances (kms)'
               kafr-el-zt  abu-zaabal  helwan  assiout  aswan
   abu-zaabal          85
   helwan             142          57
   assiout            504         420     362
   aswan             1022         938     880      518       ;

Table impd(i,*) 'import distances (kms)'
                 barge      road
   kafr-el-zt      104         6
   abu-zaabal      210        .1
   helwan          183
   assiout         583
   aswan          1087        10;

Parameter
   muf(i,j) 'transport cost (le per ton): final products'
   mufv(j)  'transport cost (le per ton): imported final products'
   mui(i,i) 'transport cost (le per ton): interplant shipment'
   mur(i)   'transport cost (le per ton): imported raw materials';

rail(i,ip) = rail(i,ip) + rail(ip,i);
road(j,"import-pts") = road (j,"abu-kir");
muf(i,j)    = ( .5 + .0144*road(j,i)            )$road(j,i);
mufv(j)     = ( .5 + .0144*road(j,"import-pts") )$road(j,"import-pts");
mui(i,ip)   = (3.5 + .0300*rail(i,ip)           )$rail(i,ip);
mur(i)      = (1.0 + .0030*impd(i,"barge")      )$impd(i,"barge")
                + ( .5 + .0144*impd(i,"road" )  )$impd(i,"road ");

display muf, mufv, mui, mur;

$sTitle Technology Data
Table a(c,p) 'input-output coefficients'
               sulf-a-s  sulf-a-p  nitr-acid  amm-elec  amm-c-gas
   el-aswan                                      -12.0
   coke-gas                                                  -2.0
   pyrites                  -.826
   el-sulfur      -.334
   sulf-acid      1.0       1.0
   ammonia                            -.292        1.0        1.0
   nitr-acid                          1.0

   electric     -50       -75      -231                   -1960
   bf-gas                                                  -609
   water        -20       -60         -.6                  -700
   steam                                                     -4

      +       ssp-155  can-310  can-335  amm-sulf
   phos-rock     -.62
   sulf-acid    - .41                        -.76
   ammonia                -.20     -.21      -.26
   nitr-acid              -.71     -.76
   limestone              -.12     -.04
   ssp-155       1.0
   can-310                1.0
   can-335                         1.0
   amm-sulf                                  1.0
   bags        -22.     -23.     -23.      -22.
   water        -6.     -49.     -49.      -17.
   electric    -14.                        -19.
   steam                  -.4      -.4           ;

Table b(m,p) 'capacity utilization coefficients'
               sulf-a-s  sulf-a-p  nitr-acid  amm-elec  amm-c-gas   ssp-155  can-310  can-335  amm-sulf
   sulf-a-s           1
   sulf-a-p                     1
   nitr-acid                               1
   amm-elec                                          1
   amm-c-gas                                                    1
   ssp                                                                    1
   c-amm-nitr                                                                      1        1
   amm-sulf                                                                                           1;


$sTitle Prices
Parameter pv(c) 'import prices (cif us$ per ton 1975)' / pyrites     17.5
                                                         el-sulfur     55
                                                         urea         150
                                                         can-260       75
                                                         can-310       90
                                                         can-335      100
                                                         amm-sulf      75
                                                         dap          175
                                                         ssp-155       80
                                                         c-250-55     100
                                                         c-300-100    130 /;


Table pd(i,c) 'domestic raw material prices'
              limestone  coke-gas  el-aswan  phos-rock    sulf-acid
*                le/ton   le/mncf    le/mwh     le/ton       le/ton
   kafr-el-zt                                      5.0
   abu-zaabal                                      4.0
   helwan           1.2        16                                 3
   assiout                                         3.5
   aswan            1.2                   1                        ;


$eolCom //
Parameter pmisc(c) 'miscellanous material costs' / electric  .007     // le/kwh
                                                   bf-gas    .0075    // le/cm
                                                   water     .031     // le/cm
                                                   steam    1.25      // le/ton
                                                   bags      .28   /; // le/unit


pd(i,cr)$pmisc(cr) = pmisc(cr);

display pd;

Parameter nh3;

nh3("ammonia","helwan") = 31;

$sTitle Capacity Data
Table dcap(i,m) 'design capacity of plants (t per day)'
              sulf-a-s  sulf-a-p  nitr-acid  amm-elec  amm-c-gas   ssp   c-amm-nitr  amm-sulf
   aswan                                800       450                          1100
   helwan                               282                  172                364        24
   kafr-el-zt      200        50                                   600
   assiout         250                                             600
   abu-zaabal      242       227                                   600                       ;

Parameter k(m,i) 'initial capacity (1000 tpy)';

k(m,i) = .33*dcap(i,m);

Scalar
   er   'exchange rate' / .4 /
   util 'utilization'   / na /;

Set
   mpos(m,i)    'productive units possibilities'
   ppos(p,i)    'process possibilities'
   cpos(c,i)    'commodity possibilities'
   cposp(c,i)   'commodity production possibilities'
   cposn(c,i)   'commodity consumption possibilities'
   cposi(c,i,i) 'commodity consumption and production possibilities: interplant'
   cposd(c,i)   'domestic raw material purchase possibilities'
   cposr(c,i)   'imported input commidity possibilities';

mpos(m,i)                = yes$k(m,i);
ppos(p,i)                = yes$(sum(m$(not mpos(m,i)), b(m,p) ne 0) eq 0);
ppos("can-310","helwan") = no;
ppos("can-335","aswan")  = no;
cposp(c,i)               = yes$sum(p$ppos(p,i), a(c,p) gt 0);
cposn(c,i)               = yes$sum(p$ppos(p,i), a(c,p) lt 0);
cposi(cs,i,ip)           = cposp(cs,i)*cposn(cs,ip);
cposd(cr,i)              = yes$(cposn(cr,i)$pd(i,cr));
cposr(cr,i)              = yes$(cposn(cr,i)$pv(cr));
cpos(c,i)                = cposp(c,i) + cposn(c,i);

display mpos, ppos, cposp, cposn, cpos , cposi, cposd, cposr;

Variable
   z(p,i)    'process level                              (1000 tpy)'
   xf(c,i,j) 'domestic shipment activity: final products (1000 tpy)'
   xi(c,i,i) 'domestic shipment activity: intermediates  (1000 tpy)'
   vf(c,j)   'imports: final products                    (1000 tpy)'
   vr(c,i)   'imports: raw materials                     (1000 tpy)'
   u(c,i)    'domestic raw material purchases               (units)'
   psi       'discounted total cost                       (1000 le)'
   psip      'domestic recurrent cost            (1000 le per year)'
   psil      'transport cost                     (1000 le per year)'
   psii      'import cost                        (1000 le per year)';

Positive Variable zl, xf, xi, vf, vr, u;

* define scenario for scenario 1 as stated in reference: no interplant shipments and capacity utilization of 85%

xi.fx(cs,i,ip) = 0;
util = .85;

$sTitle Equations
Equation
   obj       'objective function                (1000 le discounted)'
   ap        'accounting: domestic recurrent cost (1000 le per year)'
   al        'accounting: transport cost          (1000 le per year)'
   ai        'accounting: import cost             (1000 le per year)'
   mbd(cq,j) 'material balance on demand: nutrient        (1000 tpy)'
   mbdb(c,j) 'material balance on demand: material        (1000 tpy)'
   mb(c,i)   'material balance                            (1000 tpy)'
   cc(m,i)   'capacity constraint                         (1000 tpy)';

obj.. psi  =e= psip + psil + psii;

ap..  psip =e=   sum((cr,i)$cposd(cr,i), pd(i,cr)*u(cr,i));

al..  psil =e=   sum(cf, sum((i,j)$cposp(cf,i), muf(i,j)*xf(cf,i,j)) + sum(j, mufv(j)*vf(cf,j)))
               + sum((cs,i,ip)$cposi(cs,i,ip), mui(i,ip)*xi(cs,i,ip))
               + sum((cr,i)$cposr(cr,i), mur(i)*vr(cr,i));

ai.. psii/er  =e= sum((cf,j), pv(cf)*vf(cf,j)) + sum((cr,i)$cposr(cr,i), pv(cr)*vr(cr,i));

mbd(cq,j).. sum(cf, alpha(cf,cq)*( sum(i$cposp(cf,i), xf(cf,i,j)) + vf(cf,j)$pv(cf))) =g= cn75(j,cq);

mbdb(cf,j)$cf75(j,cf)..  sum(i$cposp(cf,i), xf(cf,i,j)) + vf(cf,j)$pv(cf) =g= cf75(j,cf);

mb(c,i)..   sum(p$ppos(p,i), a(c,p)*z(p,i))
          + sum(ip, xi(c,ip,i)$cposi(c,ip,i) - xi(c,i,ip)$cposi(c,i,ip))
          + vr(c,i)$cposr(c,i) + u(c,i)$cposd(c,i)
          - sum(j$cposp(c,i), xf(c,i,j))$cf(c) =g= 0;

cc(m,i)$mpos(m,i)..  sum(p$ppos(p,i), b(m,p)*z(p,i)) =l= util*k(m,i);

Model
   stat2 / all - mbd /
   stat4 / all - mbdb /;

solve stat2 minimizing psi using lp;

Parameter
   rxf(i,j,c) 'domestic shipment activity : final products (1000 tpy)'
   tds        'total domestic supply : final products      (1000 tpy)'
   tif        'total import : final product                (1000 tpy)'
   tl         'transportation load                      (1000 ton_km)';

rxf(i,j,cf) = xf.l(cf,i,j);
tds = sum((cf,i,j), xf.l(cf,i,j));
tif = sum((cf,j), vf.l(cf,j));
tl("rail")  =   sum((cs,i,ip), rail(i,ip)*xi.l(cs,i,ip));
tl("road")  =   sum((cr,i), vr.l(cr,i)*impd(i,"road"))
              + sum((cf,i,j), xf.l(cf,i,j)*road(j,i))
              + sum((cf,j), vf.l(cf,j)*road(j,"import-pts"));
tl("barge") =   sum((cr,i), vr.l(cr,i)*impd(i,"barge"));

display mbdb.lo, mbdb.m, mb.m, cc.up, cc.m, rxf, tds, tif, vf.l, z.l, vr.l, u.l, tl;