Description
An investment planning model of the Egyptian fertilizer sector.
Large Model of Type : MIP
Category : GAMS Model library
Main file : fertd.gms
$title EGYPT - Dynamic Fertilizer Model (FERTD,SEQ=14)
$onText
An investment planning model of the Egyptian fertilizer sector.
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.
The GAMS program has been changed slightly from the published version to
incorporate partial reduction of the model in order to reduce execution time.
Keywords: mixed integer linear programming, investment planning, micro
economics, fertilizer industry, agricultural production
$offText
$sTitle Set Definition
Set
j 'demand regions' / alexandria, behera , gharbia , kafr-el-sh, dakahlia, damietta , sharkia
ismailia , suez , menoufia , kalubia , giza , beni-suef, fayoum
minia , assiout, new-valley, sohag , quena , aswan /
i 'plant locations' / abu-kir, kafr-el-zt, talkha, abu-zaabal, helwan, suez, assiout, 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'
amm-n-gas 'ammonia: natural gas'
amm-r-gas 'ammonia: refinery gas'
phos-acid 'phosphoric acid'
c-nitr 'calcium nitrate'
c-amm-nitr 'calcium ammonium nitrate'
amm-sulf 'ammonium sulfate'
urea
amm-phos 'ammonium phosphate'
ssp 'single superphosphate'
tsp 'triple superphosphate'
nitro-phos 'nitrophosphates' /
me(m) 'productive units: expansion possibilities'
/ sulf-a-s, amm-n-gas, phos-acid,
amm-sulf, urea , amm-phos ,
ssp , tsp , nitro-phos /
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'
amm-n-gas 'ammonia: natural gas'
amm-r-gas 'ammonia: refinery gas'
phos-acid 'phosphoric acid'
c-nitr 'calcium nitrate'
can-310 'calcium ammonium nitrate: 31.0 pct'
can-335 'calcium ammonium nitrate: 33.5 pct'
amm-sulf 'ammonium sulfate'
urea
map 'monammonium phosphate'
dap 'diammonium phosphate'
ssp-155 'single superphosphate: 15.5 pct'
tsp-pow 'triple superphosphate: powdered'
tsp 'triple superphosphate: granular'
nitrophos 'nitrophosphate: c-ntr and np-20-20' /
g 'upgrading (conversion) activities'
/ amm-c-n 'ammonia: coke-oven to natural gas' /
cq 'nutrients' / n 'nitrogen', p2o5 'phosphorus' /
c 'commodities' / c-nitr 'calcium nitrate'
can-260 'calcium ammonium nitrate: 26.0 pct'
can-310 'calcium ammonium nitrate: 31.0 pct'
can-335 'calcium ammonium nitrate: 33.5 pct'
amm-sulf 'ammonium sulfate'
urea
map 'monammonium phosphate'
dap 'diammonium phosphate'
ssp-155 'single superphosphate: 15.5 pct'
tsp-pow 'triple superphosphate: powdered'
tsp 'triple superphosphate: granular'
np-20-20 'nitrophosphate 20-20-0'
c-250-55 'compound 25-5.5-0'
c-300-100 'compound 30-10-0'
ammonia
co2
nitr-acid 'nitric acid'
sulf-acid 'sulfuric acid'
phos-acid 'phosphoric acid'
el-aswan 'electricity from aswan dam'
coke-gas 'coke-oven gas'
nat-gas 'natural gas'
ref-gas 'refinery gas'
phos-rock 'phosphate rock'
limestone
el-sulfur 'elemental sulfur'
pyrites
electric 'electricity'
bf-gas 'blast-furnace gas'
water 'cooling water'
steam
bags
labor /
cf(c) 'final products' / urea, c-nitr, can-310, can-335, amm-sulf,
map, dap, ssp-155, tsp-pow, tsp, np-20-20 /
ci(c) 'intermediate products'
/ ammonia, co2, nitr-acid, sulf-acid, phos-acid /
cs(c) 'intermediates for shipment'
/ ammonia, sulf-acid, phos-acid /
cr(c) 'raw materials' / el-aswan, coke-gas, nat-gas, ref-gas, phos-rock,
limestone, el-sulfur, pyrites , sulf-acid /
cd(c) 'domestic materials'
/ electric, bf-gas, water, steam, bags /
c75(c) 'fertilizer used in 1975'
/ urea, can-260, can-310, can-335, amm-sulf,
dap, ssp-155, c-250-55, c-300-100 /
tg 'time periods' / 1979-81, 1982-84, 1985-87 /
q 'cost categories'
/ transport 'cost (mill le per year)'
d-r-c 'domestic recurrent cost (mill le per year)'
operating 'cost (mill le per year)'
work-cap 'working capital cost (mill le per year)'
capital-ch 'capital charges (mill le per year)'
import-raw 'import cost: raw materials (mill le per year)'
import-fp 'import cost: final products(mill le per year)'
export 'export revenues (mill le per year)' /;
Alias(i,ip);
$sTitle Consumption and Demand Data
Table cf75(j,c75) '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 dem80(*,cq) 'demand projections in nutrients (1000 tpy)'
n p2o5
medium 496 112
high 542 112;
Parameter eta(tg) 'urea consumption restriction' / 1979-81 .60
1982-84 .75
1985-87 .85 /;
Table alpha(c,cq) 'nutrient content'
n p2o5
urea .46
c-nitr .155
can-260 .26
can-310 .31
can-335 .335
amm-sulf .206
map .11 .54
dap .18 .46
ssp-155 .155
tsp-pow .46
tsp .46
np-20-20 .20 .20
c-250-55 .25 .055
c-300-100 .30 .10 ;
Parameter
cn75(j,cq) 'consumption of nutrients 1974-75 (1000 tpy)'
cn75t(cq) 'total nutrient consumption 1974-75 (1000 tpy)'
rdc(j,cq) 'regional distribution of consumption'
cinc(cq) 'consumption increment'
db(cq,j,tg) 'demand in nutrients (1000 tpy)'
midyear(tg) / 1979-81 1980, 1982-84 1983, 1985-87 1986 /;
cn75(j,cq) = sum(c75, alpha(c75,cq)*cf75(j,c75));
cn75t(cq) = sum(j, cn75(j,cq));
rdc(j,cq) = cn75(j,cq)/cn75t(cq);
cinc(cq) = (dem80("medium",cq) - cn75t(cq))/5;
db(cq,j,tg) = rdc(j,cq)*(cn75t(cq) + cinc(cq)*(midyear(tg)-1975));
Parameter
eh(tg) 'total export restriction (1000 tpy)'
eb(tg) 'maximum export by product (1000 tpy)';
eh(tg) = 100;
eb(tg) = 25;
display cn75, cn75t, rdc, cinc, db, midyear, eh, eb;
Parameter dsum 'demand summary';
dsum(cq,j,tg) = db(cq,j,tg);
dsum("n","**total**",tg) = sum(j, dsum("n",j,tg));
dsum("p2o5","**total**",tg) = sum(j, dsum("p2o5",j,tg));
dsum("**total**","**total**",tg) = sum((cq,j), dsum(cq,j,tg));
display dsum;
$sTitle Transportation Data
Table road(j,i) 'road distances (km)'
abu-kir kafr-el-zt talkha abu-zaabal helwan suez assiout aswan
alexandria 16 119 187 210 244 362 607 1135
behera 76 42 120 50 184 288 547 1065
gharbia 150 20 55 65 122 226 485 1003
kafr-el-sh 145 20 35 105 162 266 525 1043
dakahlia 208 58 3 138 152 219 515 1033
damietta 267 131 66 216 233 286 596 1114
sharkia 240 78 58 60 110 214 473 991
ismailia 365 241 146 142 173 89 536 1054
suez 370 246 298 224 178 541 1059
menoufia 157 33 90 154 109 213 472 990
kalubia 190 66 81 97 76 180 439 957
giza 287 133 146 48 9 169 372 890
beni-suef 359 248 261 163 105 270 257 775
fayoum 341 230 243 145 88 252 308 826
minia 384 372 386 288 230 394 132 650
assiout 616 504 518 420 362 527 518
new-valley 815 703 717 619 561 726 199 519
sohag 715 603 617 519 461 626 99 419
quena 858 746 760 662 604 769 242 276
aswan 1134 1022 1036 938 880 1045 518 ;
Table rail(i,ip) 'interplant rail distances (km)'
abu-kir kafr-el-zt talkha abu-zaabal helwan suez assiout aswan
kafr-el-zt 128
talkha 196 58
abu-zaabal 219 85 138
helwan 253 142 155 57
suez 371 246 298 224 178
assiout 616 504 518 420 362 527
aswan 1134 1022 1036 938 880 1045 518 ;
Table ied(i,*) 'import export distances (kms)'
barge road rail-e
abu-kir 16 16
kafr-el-zt 104 6 104
talkha 199 199
abu-zaabal 210 .1 210
helwan 183 166
suez 346 50 10
assiout 583 583
aswan 1087 10 1087;
Parameter
muf(i,j) 'transport cost (le per ton): final products'
mufv(j) 'transport cost (le per ton): imported final products'
mue(i) 'transport cost (le per ton): exports'
mui(i,ip) '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);
muf(i,j) = ( .5 + .0144*road(j,i) )$road(j,i);
mufv(j) = ( .5 + .0144*min(road(j,"abu-kir"),road(j,"suez")) )$min(road(j,"abu-kir"),road(j,"suez"));
mue(i) = ( .5 + .0300*ied(i,"rail-e") )$ied(i,"rail-e");
mui(i,ip) = (3.5 + .0300*rail(i,ip) )$rail(i,ip);
mur(i) = (1.0 + .0030*ied(i,"barge") )$ied(i,"barge")
+ ( .5 + .0144*ied(i,"road" ) )$ied(i,"road ");
display road, muf, mufv, mue, mui, mur;
$sTitle Technology Data
Parameter a(c,p) 'input-output coefficients';
Table a0(c,p) 'input-output coefficients'
sulf-a-s sulf-a-p nitr-acid amm-elec amm-c-gas amm-n-gas amm-r-gas phos-acid c-nitr amm-sulf urea
nitr-acid 1.00 -.66
phos-acid 1.00
c-nitr 1.00
amm-sulf 1.00
urea 1.00
ammonia -.292 1.00 1.00 1.00 1.00 -.26 -.58
co2 1.00 -.58
sulf-acid 1.00 1.00 -1.80 -.76
el-aswan -12.00
coke-gas -2.00
nat-gas -33.00
ref-gas -.98
phos-rock -2.35
limestone -.35
el-sulfur -.334
pyrites -.826
electric -50.00 -75.00 -231.00 -1960.00 -33.00 -50.00 -144.00 -19.00 -75.00
bf-gas -609.00
water -20.00 -60.00 -.60 -700.00 -10.00 -14.00 -4.00 -17.00
steam -4.00 -1.50
bags -22.00 -22.00 -22.00
+ tsp can-310 can-335 map dap ssp-155 tsp-pow nitrophos
nitr-acid -.71 -.76 -.51
phos-acid -.74 -.99 -.87 -.74
c-nitr .57
tsp 1.00
can-310 1.00
can-335 1.00
map 1.00
dap 1.00
ssp-155 1.00
tsp-pow 1.00
np-20-20 .43
ammonia -.20 -.21 -.15 -.23 -.06
sulf-acid -.41
phos-rock -.35 -.62 -.35 -.27
limestone -.12 -.04
electric -28.00 -22.00 -22.00 -14.00 -23.00 -52.00
water -49.00 -49.00 -6.00 -2.00 -19.00
steam -.10 -.40 -.40 -.10 -.15 -.20 -.30
bags -22.00 -23.00 -23.00 -22.00 -22.00 -22.00 -23.00 -23.00 ;
Table b(m,p) 'capacity utilization matrix'
sulf-a-s sulf-a-p nitr-acid amm-elec amm-c-gas amm-n-gas amm-r-gas phos-acid c-nitr amm-sulf urea
sulf-a-s 1.0
sulf-a-p 1.0
nitr-acid 1.0
amm-elec 1.0
amm-c-gas 1.0
amm-n-gas 1.0
amm-r-gas 1.0
phos-acid 1.0
c-nitr 1.0
amm-sulf 1.0
urea 1.0
+ tsp can-310 can-335 map dap ssp-155 tsp-pow nitrophos
c-nitr .6
c-amm-nitr 1.0 1.0
amm-phos 1.0 1.0
ssp 1.0 1.0
tsp 1.0
nitro-phos 1.0 ;
$sTitle Prices
Parameter pv(c) 'import price (cif us$ per ton 1975)' / pyrites 17.5
el-sulfur 55
urea 150
can-260 100
can-310 110
can-335 120
amm-sulf 75
map 220
dap 210
ssp-155 80
tsp 150
np-20-20 150 /;
Table pd(i,c) 'domestic raw material prices'
limestone nat-gas coke-gas ref-gas el-aswan phos-rock sulf-acid
* le/ton le/mscf le/mncm le/mncm le/mwh le/ton le/ton
abu-kir .56
kafr-el-zt 5.0
talkha 1.2 .56
abu-zaabal 4.0
helwan 1.2 .60 16 3.0
suez 1.2 .65 8 6.0
assiout 3.5
aswan 1.2 1 ;
$eolCom //
Parameter pmisc(c) 'miscellanous material cost'/ electric .007 // le/kwh
bf-gas .0075 // le/m3
water .031 // le/m3
steam 1.25 // le/ton
bags .28 /; // le/unit
Scalar plab 'price of labor (le per man year)' / 360 /;
Parameter
pe(c) 'export price (us$ per ton 1975)'
oc(c,p) 'process operating cost for miscellenous inputs (le per unit level)';
pe(cf) = .7*pv(cf);
a(c,p)$(not cd(c)) = a0(c,p);
oc(cd,p) = - pmisc(cd)*a0(cd,p);
display pv, pe, a, oc;
$sTitle Capacity Data
Table dcap(i,m) 'design capacities of plants (tons per day)'
sulf-a-s sulf-a-p nitr-acid amm-elec amm-c-gas amm-n-gas amm-r-gas c-nitr c-amm-nitr amm-sulf urea ssp
abu-kir 1000 1500
kafr-el-zt 200 50 600
talkha 1050 1600 1000 1650
abu-zaabal 542 227 600
helwan 282 172 364 35
suez 572 230 758 200
assiout 250 600
aswan 800 450 1100 ;
* talkha.ammonia = 400 talkha i + 1200 talkha ii ???
Parameter
caput(i) 'capacity utilization factor' / abu-kir .9, kafr-el-zt .85
talkha .9, abu-zaabal .85
helwan .7, suez .7
assiout .9, aswan 1.0 /
k(m,i) 'initial capacity (1000 tpy)';
k(m,i) = .33*caput(i)*dcap(i,m);
display k;
$sTitle Investment Costs
* fix fixed cost in mill. us$
* prop variable cost in 1000 us$/ton/year
Table inv(m,*) 'investment cost'
fix prop
amm-sulf 3.2 32.1
urea 16.7 52.2
amm-phos 4.5 32.4
ssp 7.5 25.5
tsp 7.0 34.2
nitro-phos 8.0 70.0
sulf-a-s 8.5 33.0
amm-n-gas 47.9 103.8
phos-acid 10.0 57.0;
Parameter
omega(m) 'fixed-charge portion of investment (million le per year)'
omegag(g) 'fixed-charge for capacity conversion (million le per year)'
omegal 'fixed-charge portion for labor (units)'
nu(m) 'variable portion of investment (million le per 1000 tpy)'
nul 'variable charge portion for labor (units per 1000 tpy)'
hb(m) 'maximum capacity expansion (1000 tpy)'
f(m,g,i) 'capacity conversion (1000 tpy)'
sf 'site factor'
sigma 'capital recovery factor'
delta 'discount factor'
life 'life of productive unit (years)'
oer 'official exchange rate (le per us$)'
rho 'opportunity cost of capital';
sf = 1.3;
omega(m) = 1000*sf*inv(m,"fix");
omegag("amm-c-n") = 20 * 1000 * sf;
nu(m) = sf*inv(m,"prop");
omegal = .5;
nul = .00125;
hb(m) = 600;
f("amm-n-gas","amm-c-n","helwan") = k("amm-c-gas","helwan");
f("amm-c-gas","amm-c-n","helwan") = -k("amm-c-gas","helwan");
life = 15;
rho = .1;
oer = .4;
sigma = rho*(1+rho)**life/((1+rho)**life-1);
delta(tg) = (1+rho)**(1976-midyear(tg))
+ (1+rho)**(1975-midyear(tg))
+ (1+rho)**(1974-midyear(tg));
display omega, nu, f, sigma, delta;
Set
mpos(m,i) 'productive unit possibilities'
ppos(p,i) 'process possibilities'
cposp(c,i) 'commodity production possibilities'
cposn(c,i) 'commodity consumption possibilities'
cposi(c,ip,i) 'commodity production and consumption possibilities - interplant'
cposr(c,i) 'imported input commodity consumption possibilities'
cpose(c,i) 'export commodity possibilities'
cposd(c,i) 'domestic commodity purchase possibilities'
fpos(g,i) 'upgrading possibilities'
hpos(m,i) 'expansion unit possibilities'
t(tg) 'time periods' / 1979-81, 1982-84, 1985-87 /;
mpos(m,i) = no; ppos(p,i) = no; cposp(c,i) = no; cposn(c,i) = no; cposi(c,i,ip) = no;
cposr(c,i) = no; cpose(c,i) = no; cposd(c,i) = no; fpos(g,i) = no; hpos(m,i) = no;
Alias(t,tp);
Parameter ts(t,tp) 'time summation matrix';
ts(t,tp) = 1$(ord(t) ge ord(tp));
display ts;
$sTitle Equations
Variable
z(p,i,t) 'process level (1000 tpy)'
xf(c,i,j,t) 'domestic shipment activity: final products (1000 tpy)'
xi(c,i,ip,t) 'domestic shipment activity: intermediates (1000 tpy)'
vf(c,j,t) 'imports: final products (1000 tpy)'
vr(c,i,t) 'imports: raw materials (1000 tpy)'
e(c,i,t) 'exports (1000 tpy)'
et(t) 'total exports in year (1000 tpy)'
u(c,i,t) 'domestic raw material purchases (units)'
h(m,i,t) 'capacity expansion (1000 tpy)'
up(g,i,t) 'binary variable: upgrading'
y(m,i,t) 'binary variable: expansion'
psi 'total cost (discounted) (million le)'
psic(q,t) 'total cost components (undiscounted) (mill le per year)';
Positive Variable z, xf, xi, vf, vr, e, u, h;
Binary Variable up, y;
Equation
obj 'objective function (million le discounted)'
ak 'accounting: capital cost charges (mill le per year)'
ap 'accounting: domestic recurrent cost (mill le per year)'
ao 'accounting: operating cost (mill le per year)'
al 'accounting: transport cost (mill le per year)'
am 'accounting: working capital (mill le per year)'
air 'accounting: import cost for raw materials (mill le per year)'
aif 'accounting: import cost for final products (mill le per year)'
ae 'accounting: export revenue (mill le per year)'
mbd(cq,j,t) 'material balance: demand (1000 tpy)'
mbu(j,t) 'material balance: urea consumption (1000 tpy)'
mb(c,i,t) 'material balance: plants (1000 tpy)'
cc(i,m,t) 'capaciy constraint (1000 tpy)'
mm(i,m,t) 'maximum capacity expansion (1000 tpy)'
ex(g,i) 'mutual exclusivity constraint (unity)'
eca(t) 'aggregate export constraint (1000 tpy)'
ecmax(t) 'export constraint by market share: maximum (1000 tpy)'
ecmin(t) 'export constraint by market share: minimum (1000 tpy)';
obj.. psi =e= sum(t, delta(t)*sum(q, psic(q,t)));
mbd(cq,j,t).. sum(cf, alpha(cf,cq)*( vf(cf,j,t)$pv(cf) + sum(i$cposp(cf,i), xf(cf,i,j,t)) )) =g= db(cq,j,t);
mbu(j,t).. alpha("urea","n")*( vf("urea",j,t) + sum(i$cposp("urea",i), xf("urea",i,j,t)) ) =l= eta(t)*db("n",j,t);
mb(c,i,t).. sum(p$ppos(p,i), a(c,p)*z(p,i,t))
+ sum(ip, xi(c,ip,i,t)$cposi(c,ip,i) - xi(c,i,ip,t)$cposi(c,i,ip))
+ u(c,i,t)$cposd(c,i) + vr(c,i,t)$cposr(c,i)
=g= sum(j, xf(c,i,j,t))$cposp(c,i) + e(c,i,t)$cpose(c,i);
cc(i,m,t)$mpos(m,i).. sum(p$ppos(p,i), b(m,p)*z(p,i,t)) =l= k(m,i) + sum(tp$ts(t,tp), .9*h(m,i,tp)$hpos(m,i)
+ sum(g, f(m,g,i)*up(g,i,tp)) );
mm(i,me,t)$hpos(me,i).. h(me,i,t) =l= hb(me)*y(me,i,t);
ex(g,i)$fpos(g,i).. sum(t, up(g,i,t)) =l= 1;
eca(t).. et(t) =e= sum((cf,i)$cpose(cf,i), e(cf,i,t));
**** something fishy
ecmax(t+1).. et(t+1) =l= 1.3*et(t);
ecmin(t+1).. et(t+1) =g= et(t);
ak(t).. psic("capital-ch",t) =e= oer*sum(tp$ts(t,tp), sigma*(
sum((i,me)$hpos(me,i), omega(me)*y(me,i,tp) + nu(me)*h(me,i,tp))
+ sum((i,g)$fpos(g,i), omegag(g)*up(g,i,tp)) ) ) / 1000;
ap(t).. psic("d-r-c",t) =e= sum((c,i)$cposd(c,i), pd(i,c)*u(c,i,t)) / 1000;
ao(t).. psic("operating",t) =e= (sum((cd,p,i)$ppos(p,i), oc(cd,p)*z(p,i,t))
+ plab*sum(tp$ts(t,tp), sum((me,i)$hpos(me,i), omegal*y(me,i,tp) + nul*h(me,i,tp)) )
) / 1000;
al(t).. psic("transport",t) =e= (sum(cf, sum((i,j)$cposp(cf,i), muf(i,j)*xf(cf,i,j,t))
+ sum(j, mufv(j)*vf(cf,j,t))
+ sum(i$cpose(cf,i), mue(i)*e(cf,i,t)) )
+ sum((cs,i,ip)$cposi(cs,i,ip), mui(i,ip)*xi(cs,i,ip,t))
+ sum((cr,i)$cposr(cr,i), mur(i)*vr(cr,i,t)) ) / 1000;
am(t).. psic("work-cap",t) =e= .025*(psic("d-r-c",t) + psic("operating",t) + psic("import-raw",t));
air(t).. psic("import-raw",t) =e= oer*sum((cr,i)$cposn(cr,i), pv(cr)*vr(cr,i,t)) / 1000;
aif(t).. psic("import-fp",t) =e= oer*sum((cf,j), pv(cf)*vf(cf,j,t)) / 1000;
ae(t).. psic("export",t) =e= - oer*sum((cf,i)$cpose(cf,i), pe(cf)*e(cf,i,t)) / 1000;
Model
model1 'base case model' / mbd, mb, mbu, cc, mm, ex, eca, obj, ak, ap, ao, al, am, air, aif, ae /
model2 'basecase without urea requirements' / model1 - mbu /
model3 'basecase with bounds on exports' / model1 + ecmax + ecmin /;
$onText
Scenario Definitions:
basecase : model1 with: et.up(t) = 100; e.up(cf,i,t) = 25; y.fx("phos-acid","abu-zaabal","1979-81") = 1;
scenario1: basecase with: y.fx("nitro-phos","suez","1979-81") = 1;
scenario2: basecase with: z.lo("c-nitr","suez",t) = 150;
scenario3: model1 with: et.up(t) = +inf; e.up(cf,i,t) = +inf; y.fx(m,i,t) = 0;
scenario4: model3 with: et(.up("1979-81") = 500; e.up(cf,i,t) = +inf; y.fx("phos-acid","abu-zaabal","1979-81") = 1;
y.fx("amm-n-gas","suez","1982-84") = 1;
y.fx("urea","suez","1982-84") = 1;
y.fx("urea","suez","1985-87") = 1;
scenario5: model3 with: et.up("1979-81") = 250; y.fx("phos-acid","abu-zaabal","1979-81") = 1;
scenario6: model1 with: et.up(t) = 100; e.up(cf,i,t) = 25; vf.fx(cf,j,t) = 0;
y.fx("phos-acid","abu-zaabal","1979-81") = 1; y.fx("sulf-a-s","abu-zaabal","1982-84") = 1;
scenario7: model2 with: et.up(t) = 100; e.up(cf,i,t) = 25; y.fx("phos-acid","abu-zaabal","1979-81") = 1;
$offText
$sTitle Model Reductions and Scenarios
* set-up for basecase;
Set hposx expansion possibilities / phos-acid.abu-zaabal /;
hpos(me,i) = hposx(me,i);
mpos(m,i) = yes$(k(m,i) + sum(g, abs(f(m,g,i)))) + hpos(m,i);
ppos(p,i) = yes$(sum(m$(not mpos(m,i)), b(m,p)) eq 0);
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) = yes$(cposp(cs,i)*cposn(cs,ip));
cposr(cr,i) = yes$(cposn(cr,i)$pv(cr));
cposd(cr,i) = yes$(cposn(cr,i)$pd(i,cr));
cpose(cf,i) = yes$(cposp(cf,i)$pe(cf));
fpos(g,i) = yes$sum(m, f(m,g,i) ne 0);
display mpos, ppos, cposp, cposn, cposi, cposr, cposd, cpose, fpos;
y.fx(me,i,t) = 0;
y.fx("phos-acid","abu-zaabal","1979-81") = 1;
e.up(cf,i,t)$cpose(cf,i) = eb(t);
et.up(t) = eh(t);
solve model1 minimizing psi using mip;
* define summary reports:
Parameter
imports
sumxf
sumxi
production
exports;
imports("final-prod",t) = sum((cf,j), vf.l(cf,j,t));
imports("inter-prod",t) = sum((cr,i), vr.l(cr,i,t));
sumxf(i,t,cf) = sum(j, xf.l(cf,i,j,t));
sumxf(i,t,"total") = sum(cf, sumxf(i,t,cf));
sumxi(i,t,cs) = sum(ip, xi.l(cs,i,ip,t));
sumxi(i,t,"total") = sum(cs, sumxi(i,t,cs));
production("final-prod",t) = sum((p,i)$(sum(cf, a(cf,p)) eq 1), z.l(p,i,t));
production("inter-prod",t) = sum((p,i), z.l(p,i,t)) - production("final-prod",t);
exports("final-prod",t) = sum((cf,i), e.l(cf,i,t));
exports("inter-prod",t) = sum((c,i), e.l(c,i,t)) - exports("final-prod",t);
display psic.l, production, imports, exports, sumxf, sumxi;