$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;