Description
This model has been used by the secretariat of the Andean common market to assist in the planning of investments in the fertilizer sector. Efficient and equitable investment plans were studied.
Large Model of Types : MIP lp
Category : GAMS Model library
Main file : andean.gms
$title A N D E A N Fertilizer Model (ANDEAN,SEQ=44)
$onText
This model has been used by the secretariat of the Andean
common market to assist in the planning of investments in
the fertilizer sector. Efficient and equitable investment
plans were studied.
Mennes, L, and Stoutjesdijk, A, Multicountry Investment Analysis. The
John Hopkins University Press, Baltimore and London, 1986.
Keywords: mixed integer linear programming, investment planning, fertilizer industry,
micro economics
$offText
$sTitle Set Definitions
Set
w 'countries in Andean common market'
/ bolivia, colombia, ecuador, peru, venezuela /
wr 'countries and region'
i 'plant locations'
/ palmasola 'pta-pequena'
pto-suarez 'pta-grande'
potosi 'enaf'
baranquill 'monomeros'
cartagena 'abocol'
barrancabr 'ferticol'
la-dorada 'la-dorada'
guayaquil 'fertiza'
pt-bolivar 'cepe'
callao-f 'fertiza'
cuzco 'cachimayo'
talara 'petroperu'
callao-i 'indus'
bayovar 'bayovar'
moron 'ivp'
pta-caiman 'pedevesa'
caripito 'ivp'
tablazo 'nitroven' /
wi(w,i) 'country plant location mapping'
/ bolivia. (palmasola ,pto-suarez,potosi)
colombia. (baranquill,cartagena,barrancabr,la-dorada)
ecuador. (guayaquil,pt-bolivar)
peru. (callao-f,cuzco,talara,callao-i,bayovar)
venezuela.(moron,pta-caiman,caripito,tablazo) /
j 'demand regions'
/ cochabamba 'valles'
santa-cruz 'llanos-orientales'
potosi 'altiplano'
bogota 'central'
bucaramang 'nor-oriental'
armenia 'cafetera'
cali 'sur'
quito 'nor-occidental'
babahoyo 'centro-occidental'
machala 'sur-occidental'
chiclayo 'norte'
ica 'centro'
arequipa 'sur'
tingo-mar 'selva'
maturin 'oriental'
maracaibo 'occidental'
calabozo 'centro-oriente'
acarigua 'centro-occidente' /
wj(w,j) 'country demand region mapping'
/ bolivia. (cochabamba,santa-cruz,potosi)
colombia. (bogota,bucaramang,armenia,cali)
ecuador. (quito,babahoyo,machala)
peru. (chiclayo,ica,arequipa,tingo-mar)
venezuela.(maturin,maracaibo,calabozo,acarigua) /
m 'productive units'
/ amm-elec 'ammonia: electrolysis'
amm-n-gas 'ammonia: natural gas'
amm-f-oil 'ammonia: fuel oil'
nitr-acid 'nitric acid'
amm-nitr 'ammonium nitrate'
amm-sulf 'ammonium sulfate'
urea
ssp 'single superphosphate'
tsp 'triple superphosphate'
ss-tsp 'combined ssp-tsp plant'
phos-acid 'phosphoric acid'
sulf-acid 'sulfuric acid'
npk 'compound fertilizer'
dap 'diammonium phosphate'
granulator 'unit for dap npk and tsp granulation'
pot-chlor 'potassium chloride' /
g 'plant types' / old, new /
p 'processes'
/ amm-elec 'ammonia: electrolysis'
amm-n-gas 'ammonia: natural gas'
amm-f-oil 'ammonia: fuel oil'
nitr-acid 'nitric acid'
amm-nitr 'ammonium nitrate'
amm-sulf 'ammonium sulfate'
urea
ssp 'single superphosphate'
tsp 'triple superphosphate'
s-sp 'single superphosphate on ss-tsp unit'
t-sp 'triple superphosphate on ss-tsp unit'
phos-acid 'phosphoric acid'
sulf-acid 'sulfuric acid'
dap 'diammonium phosphate'
dap-g 'diammonium phosphate on granulator unit'
comp-g 'compound fertilizer on granulator unit'
pot-chlor 'potassium chloride'
c-20-18-10 'compound fertilizer'
c-13-13-20 'compound fertilizer'
c-15-21-10 'compound fertilizer'
c-16-12-12 'compound fertilizer'
c-08-24-12 'compound fertilizer'
c-12-12-12 'compound fertilizer' /
cq 'nutrients'
/ n 'nitrogen'
p2o5 'phosphorus'
k2o 'potash' /
c 'all commodities'
/ urea
amm-nitr 'ammonium nitrate'
amm-sulf 'ammonium sulfate'
ssp 'single superphosphate'
tsp 'triple superphosphate'
pot-chlor 'potassium chloride'
dap 'diammonium phosphate'
c-20-18-10 'compound fertilizer'
c-13-13-20 'compound fertilizer'
c-15-21-10 'compound fertilizer'
c-16-12-12 'compound fertilizer'
c-08-24-12 'compound fertilizer'
c-12-12-12 'compound fertilizer'
phos-acid 'phosphoric acid'
ammonia
carb-diox 'carbon dioxide'
nitr-acid 'nitric acid'
electr 'electricity (1000 kwh )'
nat-gas 'natural gas (1000 std.cu.ft)'
fuel-oil
phos-rock 'phosphate rock ( .75 pct bpl )'
el-sulfur 'elemental sulfur'
sulf-acid 'sulfuric acid'
brine /
cf(c) 'final products'
/ urea , amm-nitr , amm-sulf , ssp , tsp , pot-chlor , dap
c-20-18-10, c-13-13-20, c-15-21-10, c-16-12-12, c-08-24-12, c-12-12-12 /
co(c) 'compounds'
/ c-20-18-10, c-13-13-20, c-15-21-10, c-16-12-12, c-08-24-12, c-12-12-12 /
cr(c) 'domestic raw materials'
/ electr, nat-gas, fuel-oil, phos-rock, el-sulfur, sulf-acid, brine /
cis(c) 'products for interplant shipment'
/ urea, amm-nitr, amm-sulf, ssp, tsp, pot-chlor, dap, phos-acid, ammonia /
ce(c) 'products for export'
/ urea, amm-nitr, amm-sulf, ssp, tsp, pot-chlor, dap, phos-acid, ammonia /
cv(c) 'products for import'
/ urea, amm-nitr, amm-sulf, tsp, pot-chlor, dap, phos-acid, ammonia, phos-rock, el-sulfur /
wnpk(w,c) 'country-compound mapping'
/ venezuela.(c-20-18-10,c-13-13-20)
colombia .(c-16-12-12,c-15-21-10)
ecuador .(c-08-24-12)
peru .(c-12-12-12) /
t 'time periods' / 1981-83, 1984-86, 1987-89, 1990-92 /
te(t) 'expansion periods' / 1984-86, 1987-89, 1990-92 /
cores(co,i,j) 'compound shipment possibilities';
Alias (i,ip), (j,jp), (t,tp), (te,tep), (w,wp);
wr(w) = yes;
wr("andean") = yes;
cores(co,i,j) = sum(w$(wi(w,i)*wj(w,j)), wnpk(w,co));
display wr, cores;
* the following format will be used in all the data sections below:
* a. define all the parameters that are used in the model.
* b. present the data used.
* c. define intermediate parameters.
* d. compute necessary parameters from data.
$sTitle Demand Data
Parameter d(j,cq,t) 'demand for nutrients (1000 tpy)';
Table dem82(j,cq) 'nutrient demand projections for 1982 (1000 tpy)'
n p2o5 k2o
cochabamba 1.2 2.3
santa-cruz 1.2 .6
potosi .3 2.4
bogota 74.2 57.1 34.2
bucaramang 29.4 7.1 5.4
armenia 54.3 44.3 29.3
cali 30.8 25.3 15.4
quito 12.6 10.3 6.1
babahoyo 16.2 13.2 7.9
machala 7.2 5.8 3.4
chiclayo 58.0 15.8 9.4
ica 43.2 11.8 7.1
arequipa 17.2 4.7 2.8
tingo-mar 4.9 1.3 .8
maturin 24.8 18.3 11.7
maracaibo 16.5 12.2 7.8
calabozo 42.7 31.5 20.2
acarigua 53.7 39.6 25.4;
Table dem85(j,cq) 'nutrient demand projections for 1985 (1000 tpy)'
n p2o5 k2o
cochabamba 3.7 3.2
santa-cruz 4.6 1.1
potosi 0.9 3.0
bogota 90.7 65.9 37.2
bucaramang 34.9 8.4 6.1
armenia 76.8 63.5 43.7
cali 38.9 31.8 16.9
quito 14.4 11.6 7.0
babahoyo 23.1 18.5 11.3
machala 10.6 8.5 5.1
chiclayo 70.8 21.5 12.8
ica 45.8 13.9 8.3
arequipa 23.6 7.2 4.3
tingo-mar 7.4 2.2 1.4
maturin 30.6 23.6 14.1
maracaibo 20.4 15.7 9.4
calabozo 52.6 40.7 24.2
acarigua 66.2 51.1 30.5;
Table dem88(j,cq) 'nutrient demand projections for 1988 (1000 tpy)'
n p2o5 k2o
cochabamba 5.7 4.7
santa-cruz 7.4 1.7
potosi 3.3 4.3
bogota 99.9 71.1 42.0
bucaramang 38.3 9.9 7.6
armenia 100.8 82.6 49.8
cali 46.6 38.4 18.8
quito 16.0 12.8 7.7
babahoyo 32.0 25.8 15.5
machala 16.0 12.8 7.7
chiclayo 81.5 29.2 17.4
ica 48.2 17.3 10.3
arequipa 28.3 10.2 6.0
tingo-mar 8.3 3.0 1.8
maturin 39.2 32.9 17.2
maracaibo 26.2 21.9 11.5
calabozo 67.5 56.7 29.7
acarigua 84.9 71.3 37.4;
Table dem91(j,cq) 'nutrient demand projections for 1991 (1000 tpy)'
n p2o5 k2o
cochabamba 8.0 6.9
santa-cruz 10.4 3.0
potosi 4.6 5.4
bogota 104.2 74.2 43.2
bucaramang 44.4 12.3 9.0
armenia 121.1 100.8 59.1
cali 54.3 44.3 20.5
quito 16.7 13.3 8.1
babahoyo 43.1 34.8 20.9
machala 23.3 18.7 11.3
chiclayo 90.6 38.8 23.2
ica 51.6 21.4 12.7
arequipa 33.3 14.3 8.5
tingo-mar 11.1 4.8 2.8
maturin 51.0 47.3 21.2
maracaibo 34.0 31.5 14.2
calabozo 87.9 81.6 36.6
acarigua 110.5 102.6 46.1;
Table db(j,*) 'minimum ammonium sulfate requirement (1000 tpy)'
1981-83 1984-86 1987-89 1990-92
cochabamba .5 .5 .5 .5
santa-cruz .5 .5 .5 .5
potosi .3 .5 .5
bogota 9.8 12.4 13.4 15.5
bucaramang 4.7 4.7 6.9 8.0
armenia 9.4 12.0 13.4 15.5
cali 4.7 4.7 6.4 7.5
quito 1.8 2.3 2.8 3.1
babahoyo 1.8 2.3 2.4 2.6
machala 1.4 1.5 1.9 2.2
chiclayo 3.8 4.5 5.3 6.5
ica 3.8 4.5 5.3 6.5
arequipa 3.2 3.9 4.6 5.7
tingo-mar 1.3 1.9 2.7 3.3
maturin 15.4 16.9 20.5 21.5
maracaibo 11.5 11.8 11.9 12.5
calabozo 23.3 24.5 27.0 28.4
acarigua 28.8 32.9 34.0 35.7;
Table alpha(c,cq) 'nutrient content'
n p2o5 k2o
ammonia .80
nitr-acid .22
phos-acid .54
phos-rock .30
brine .0004
urea .46
amm-nitr .33
amm-sulf .205
ssp .20
tsp .46
pot-chlor .60
dap .18 .46
c-20-18-10 .20 .18 .10
c-13-13-20 .13 .13 .20
c-15-21-10 .15 .21 .10
c-16-12-12 .16 .12 .12
c-08-24-12 .08 .24 .12
c-12-12-12 .12 .12 .12 ;
d(j,cq,"1981-83") = dem82(j,cq);
d(j,cq,"1984-86") = dem85(j,cq);
d(j,cq,"1987-89") = dem88(j,cq);
d(j,cq,"1990-92") = dem91(j,cq);
* computations below are simply for analysis.
Parameter
dr(cq,t,*) 'demand for nutrients (1000 tpy)'
dbr(*,t) 'demand for ammonium sulfate by country (1000 tpy)'
dgr(*,cq,*) 'demand growth rates';
dr(cq,t,w) = sum(j$wj(w,j), d(j,cq,t));
dr(cq,t,"andean") = sum(w, dr(cq,t,w));
dbr(w,t) = sum(j$wj(w,j), db(j,t));
dbr("andean",t) = sum(w, dbr(w,t));
Table con76(*,cq) 'nutrient consumption in 1976 (1000 tpy)'
n p2o5 k2o
bolivia 1 2
colombia 108 69 42
ecuador 20 17 10
peru 101 17 13
venezuela 133 95 71;
con76("andean",cq) = sum(w, con76(w,cq));
dgr("76/82",cq,wr)$con76(wr,cq) = (dr(cq,"1981-83",wr)/con76(wr,cq))**(1/6) - 1;
dgr("76/91",cq,wr)$con76(wr,cq) = (dr(cq,"1990-92",wr)/con76(wr,cq))**(1/16) - 1;
dgr("82/85",cq,wr)$dr(cq,"1981-83",wr) = (dr(cq,"1984-86",wr)/dr(cq,"1981-83",wr))**(1/3) - 1;
dgr("85/88",cq,wr)$dr(cq,"1984-86",wr) = (dr(cq,"1987-89",wr)/dr(cq,"1984-86",wr))**(1/3) - 1;
dgr("88/91",cq,wr)$dr(cq,"1987-89",wr) = (dr(cq,"1990-92",wr)/dr(cq,"1987-89",wr))**(1/3) - 1;
dgr("82/91",cq,wr)$dr(cq,"1981-83",wr) = (dr(cq,"1990-92",wr)/dr(cq,"1981-83",wr))**(1/9) - 1;
display d, db, dr, dbr, con76, dgr;
$sTitle Transport
Parameter
mur(i) 'transport cost: imported raw material (us$ per ton)'
mue(i) 'transport cost: export (us$ per ton)'
muf(i,j) 'transport cost: final products (us$ per ton)'
mui(i,ip) 'transport cost: interplant shipments (us$ per ton)'
mufv(j) 'transport cost: imported final products (us$ per ton)'
mux(c) 'transport cost factor for acids';
Table trsp 'transport cost (us$ per ton)'
palmasola pto-suarez potosi baranquill cartagena barrancabr la-dorada guayaquil
potosi 31.25 55.97 70.68 70.68 93.97 97.58 70.32
cochabamba 21.50 46.22 18.17 74.34 74.34 97.63 101.24 71.10
santa-cruz 3.00 27.72 28.25 86.84 86.84 110.13 113.74 83.60
bogota 122.72 1000.00 103.56 32.88 35.61 16.44 12.00 64.04
bucaramang 113.13 1000.00 93.97 23.28 26.03 8.22 21.28 54.45
armenia 101.63 1000.00 82.66 31.15 31.15 21.91 11.47 42.33
cali 96.15 1000.00 77.18 25.67 20.67 32.98 16.95 36.75
quito 103.12 1000.00 87.92 48.76 48.67 72.05 47.40 20.80
babahoyo 91.13 1000.00 75.92 36.76 36.76 60.05 63.66 5.60
machala 88.52 1000.00 73.32 34.16 34.16 57.45 61.06 9.60
chiclayo 88.52 1000.00 70.37 36.14 36.14 59.43 63.04 32.90
ica 84.36 1000.00 66.25 51.05 51.05 74.34 77.95 47.81
arequipa 65.55 1000.00 47.40 41.99 41.99 65.28 68.89 38.25
tingo-mar 124.99 1000.00 106.84 72.61 72.61 95.90 99.51 69.37
maturin 95.81 1000.00 74.49 39.61 39.61 55.46 66.51 39.11
maracaibo 95.81 1000.00 74.49 22.61 31.61 38.17 49.51 39.11
calabozo 105.12 1000.00 83.80 44.22 49.14 45.65 60.21 48.42
acarigua 103.95 1000.00 82.63 37.33 46.33 38.64 53.70 47.25
pts-plant .009 1000.00 40.00 .009 .009 23.30 25.00 .009
+ pt-bolivar callao-f cuzco talara callao-i bayovar moron pta-caiman caripito
potosi 70.32 75.40 55.45 77.02 75.40 77.02 75.12 67.48 67.48
cochabamba 71.10 68.40 47.85 70.02 68.40 70.02 80.94 73.30 73.30
santa-cruz 83.60 80.90 64.70 82.52 80.90 82.52 93.44 85.80 85.80
bogota 64.04 66.02 1000.00 66.02 66.02 66.02 73.34 65.48 65.48
bucaramang 54.45 56.43 1000.00 56.43 56.43 56.43 63.75 55.89 55.89
armenia 42.33 44.93 1000.00 44.93 44.93 44.93 53.33 44.43 44.43
cali 36.75 39.43 1000.00 39.45 39.45 39.45 47.85 38.95 38.95
quito 26.00 46.42 1000.00 46.42 46.42 46.42 58.60 49.70 49.70
babahoyo 13.20 34.42 1000.00 34.42 34.42 34.42 46.60 37.70 37.70
machala 3.00 31.82 1000.00 31.82 31.82 31.82 44.00 35.10 35.10
chiclayo 32.90 21.82 1000.00 19.16 21.82 19.16 44.00 35.10 35.10
ica 47.81 17.91 49.00 36.73 17.91 36.73 58.91 50.01 50.01
arequipa 38.75 27.20 24.70 27.67 27.20 27.67 49.85 40.95 40.95
tingo-mar 69.37 39.47 1000.00 58.29 39.47 58.29 80.47 71.57 71.57
maturin 39.11 39.11 1000.00 39.11 39.11 39.11 20.86 21.03 7.01
maracaibo 39.11 39.11 106.02 39.11 39.11 39.11 15.88 17.52 32.01
calabozo 48.42 48.42 1000.00 48.42 48.42 48.42 11.68 13.08 15.65
acarigua 47.25 47.25 1000.00 47.25 47.25 47.25 10.51 12.27 24.65
pts-plant .009 .009 29.80 .009 .009 .009 .009 .009 .009
+ tablazo pts-market
potosi 67.48 33.00
cochabamba 73.30 50.50
santa-cruz 85.80 71.50
bogota 65.48 32.90
bucaramang 55.89 23.30
armenia 44.43 12.30
cali 38.95 6.90
quito 49.70 17.60
babahoyo 37.70 5.60
machala 35.10 3.00
chiclayo 35.10 3.10
ica 50.01 18.00
arequipa 40.95 8.90
tingo-mar 71.57 39.50
maturin 28.74 7.00
maracaibo 7.01 7.00
calabozo 23.26 11.70
acarigua 11.21 10.50
pts-plant .009 ;
Table tran(i,i) 'transport cost for interplant shipments (us$ per ton)'
palmasola pto-suarez potosi baranquill cartagena barrancabr la-dorada guayaquil
pto-suarez 87.22
potosi 31.25 55.97
baranquill 89.80 114.56 70.68
cartagena 89.80 114.56 70.68 5.00
barrancabr 115.80 137.85 93.97 23.28 26.00
la-dorada 90.16 141.46 97.58 35.90 35.90 13.06
guayaquil 88.52 111.32 70.32 31.20 31.20 54.20 56.10
pt-bolivar 91.52 111.32 70.32 31.14 31.20 54.45 56.10 9.60
callao-f 85.52 108.62 75.40 33.10 33.10 56.43 56.43 28.80
cuzco 90.25 92.42 72.10 69.69 69.69 89.98 93.59 63.45
talara 88.52 110.24 77.02 33.10 33.10 56.43 56.43 29.90
callao-i 85.52 108.62 75.40 33.10 33.10 56.40 60.00 29.90
bayovar 75.12 110.24 77.02 33.10 33.10 56.43 56.43 29.90
moron 67.48 121.16 75.10 40.50 40.50 43.30 57.90 39.70
pta-caiman 67.48 113.52 67.50 32.60 32.60 45.00 60.22 37.10
caripito 67.48 113.52 67.48 32.60 32.60 55.48 66.51 39.11
tablazo 67.48 113.52 67.48 31.60 31.60 38.17 49.51 39.11
+ pt-bolivar callao-f cuzco talara callao-i bayovar moron pta-caiman caripito
callao-f 28.82
cuzco 63.45 51.90
talara 28.82 18.82 52.37
callao-i 28.82 51.90 18.80
bayovar 28.82 21.82 52.37 18.80 21.82
moron 39.70 39.70 77.00 39.70 39.70 39.70
pta-caiman 32.10 32.10 61.80 32.10 32.10 32.10 7.20
caripito 32.10 39.11 77.00 39.11 39.11 39.11 20.90 21.03
tablazo 32.10 39.11 77.00 39.11 39.11 39.11 23.40 17.52 28.74;
mur(i) = trsp("pts-plant",i);
* adjust the raw material transport cost for palmasola because the import/export point for palmasola is not
* the same as it is in the case of all other locations. palmasola imports from the coast but its market is
* just across the border in argentina.
mur("palmasola") = 60;
mufv(j) = trsp(j,"pts-market");
muf(i,j) = trsp(j,i);
mue(i) = trsp("pts-plant",i);
mui(i,ip) =(tran(i,ip) + tran(ip,i));
mux(c) = 1;
mux("phos-acid") = 2;
mux("ammonia") = 2;
display mur, mue, muf, mui, mufv, mux;
$sTitle Technology Data
Set misc 'miscellanious inputs' / electr, water-pr, water-c, nat-gas, steam, misc, bags /;
Table a(c,p) 'input-output coefficients'
amm-elec amm-n-gas amm-f-oil nitr-acid amm-nitr amm-sulf urea ssp tsp
nitr-acid 1. -.76
amm-nitr 1.
amm-sulf 1.
urea 1.
ssp 1.0
tsp 1.0
phos-acid -.74
sulf-acid -.76 -.38
ammonia 1. 1. 1. -.27 -.2 -.265 -.58
carb-diox 1. 1. -.58
electr -87.
nat-gas -27.
fuel-oil -.84
phos-rock -.7 -.45
+ phos-acid sulf-acid dap pot-chlor s-sp t-sp dap-g comp-g c-20-18-10 c-13-13-20
urea -.283 -.15 -.283
ssp 1.
tsp 1. -.293 -.1 -.293
phos-acid 1. -.84 -.74 -.84
sulf-acid -1.5 1. -.38
dap 1. 1. -.17
pot-chlor 1. -.334 -.17 -.334
c-20-18-10 1.
c-13-13-20 1. 1.
ammonia -.23 -.23 -.15
phos-rock -1.8 -.7 -.45 -.19
el-sulfur -.33
brine -150.
+ c-15-21-10 c-16-12-12 c-08-24-12 c-12-12-12
nitr-acid -.15 -.17
amm-sulf -.15 -.053 -.42
urea -.26
ssp -.34 -.21
phos-acid -.2 -.04 -.32
dap -.17 -.17
pot-chlor -.17 -.2 -.2 -.2
c-15-21-10 1.
c-16-12-12 1.
c-08-24-12 1.
c-12-12-12 1.
ammonia -.08 -.107
phos-rock -.2 -.33 ;
Table b(m,p) 'capacity utilization matrix'
amm-elec amm-n-gas amm-f-oil nitr-acid amm-nitr amm-sulf urea ssp tsp
amm-elec 1.0
amm-n-gas 1.0
amm-f-oil 1.0
nitr-acid 1.0
amm-nitr 1.0
amm-sulf 1.0
urea 1.0
ssp 1.0
tsp 1.0
+ phos-acid sulf-acid dap pot-chlor s-sp t-sp dap-g comp-g c-20-18-10 c-13-13-20
ss-tsp 1.0 1.0
phos-acid 1.0
sulf-acid 1.0
npk 1.0 1.0
dap 1.0
granulator 1.045 1.0
pot-chlor 1.0
+ c-15-21-10 c-16-12-12 c-08-24-12 c-12-12-12
npk 1.0 1.0 1.0 1.0 ;
Table am(i,p,misc) 'miscellanious inputs by plant and process'
electr water-pr water-c nat-gas steam misc bags
baranquill.nitr-acid .7 1.2 180.0 .6 .4
baranquill.amm-sulf .18 .05 .3 22.0
baranquill.sulf-acid .05 15.2 .1 .4
baranquill.c-15-21-10 .80 17.0 0.5 2.1 .7 22.0
baranquill.c-16-12-12 .80 17.0 0.5 2.1 .7 22.0
cartagena.amm-n-gas 9.9 1.0 150.0 6.0 .6
cartagena.nitr-acid 1.6 1.1 160.0 .4
cartagena.urea .56 2.5 190.0 2.0 1.1 22.0
cartagena.c-15-21-10 .75 20.0 .9 22.0
cartagena.c-16-12-12 .75 20.0 .9 22.0
barrancabr.amm-n-gas 10.4 4.2 500.0 4.1 1.6
barrancabr.nitr-acid 1.74 1.0 170.0 .5
barrancabr.urea 2.7 3.2 180.0 1.8 2.6 22.0
barrancabr.amm-nitr 0.74 34.0 0.6 0.5 2.2 22.0
guayaquil.phos-acid 4.0 4.0 100.0 2.0 3.0
guayaquil.ssp .2 1.6 22.0
guayaquil.sulf-acid .05 15.2 .1 .4
guayaquil.c-08-24-12 .3 .2 0.6 .2 1.8 22.0
callao-f.amm-f-oil 17.0 4.2 70.0 4.1 1.1
callao-f.nitr-acid .2 1.1 160.0 .4
callao-f.amm-nitr .75 35.0 0.5 2.3 22.0
callao-f.amm-sulf .13 0.1 1.0 22.0
cuzco.amm-elec 15.0 .4 58.0 6.0 2.2
cuzco.nitr-acid 3.1 1.5 150.0 0.9
cuzco.amm-nitr .8 30.0 .4 2.8 22.0
talara.amm-n-gas 7.9 2.9 105.0 1.3 .6
talara.urea .94 1.0 50.0 1.0 1.1 22.0
callao-i.ssp .1 1.6 3.6 22.0
callao-i.c-12-12-12 .33 .3 1.5 .03 1.8 22.0
moron.amm-n-gas .25 1.9 254.0 .4
moron.urea 1.63 1.5 56.0 1.1 1.0 22.0
moron.amm-sulf .18 .05 1.8 22.0
moron.s-sp .10 1.6 22.0
moron.t-sp .20 .1 1.6 22.0
moron.sulf-acid .05 15.2 .1 .4
moron.phos-acid .95 3.8 123.0 1.5 .6
moron.nitr-acid 1.24 1.2 168.0 .23 .5
moron.dap-g .30 1.4 0.1 1.6 22.0
moron.comp-g .25 4.5 .3 0.1 1.2 22.0
moron.c-13-13-20 .25 4.5 .3 0.1 1.2 22.0
moron.c-20-18-10 .25 4.5 .3 0.1 1.2 22.0
tablazo.amm-n-gas .22 1.9 254.0 .4
tablazo.urea 1.63 1.5 56.0 1.1 1.0 22.0;
* note:
* the inputs for nitr-acid at moron are weighted averages from the other
* nitr-acid plants. the norms for the grannulator at moron are assumed to
* be the same as the compound plant.
$sTitle Operating Costs
Parameter
oz(g,p,i) 'variable operating cost (us $ per unit level)'
ocap(m) 'fixed operating cost (us$ per ton per year)'
miscost(misc) 'cost of miscellaneous inputs'
/ electr 2 , water-pr .3, water-c .05
nat-gas 1.1, steam 3 , misc 1 , bags .28 /;
Table opcost(m,*) 'operating cost for new plants (us$ per ton per year)'
capacity process
amm-elec 34.5 12.3
amm-n-gas 34.5 12.3
amm-f-oil 34.5 12.3
nitr-acid 10.6 2.2
amm-nitr 8.4 10.4
amm-sulf 8.0 0.2
urea 17.8 8.0
ssp 9.3 1.7
tsp 9.3 1.7
ss-tsp 9.3 1.7
phos-acid 16.8 9.0
sulf-acid 0.3 2.5
npk 6.5 2.9
dap 7.7 5.5
granulator 9.3 1.7
pot-chlor 13.0 22.0;
Parameter
oold(p,i) 'operating cost of old plants (us$ per unit level)'
onew(p) 'operating cost for new plants (us$ per unit level)';
oold(p,i) = sum(misc, miscost(misc)*am(i,p,misc));
onew(p) = sum(m, b(m,p)*opcost(m,"process"));
oz("old",p,i) = oold(p,i);
oz("new",p,i) = onew(p);
ocap(m) = opcost(m,"capacity");
display oold, onew, oz, ocap;
$sTitle Capacity Data
Parameter
k(m,i,t) 'effective capacity of old plants (1000 tpy)'
umin(t) 'lower bound on npk plant utilization';
Scalar unew 'utilization rates for new plants' / .85 /;
Table dcap(i,m) 'installed capacity in operation in 1980 (tons per day)'
amm-elec amm-f-oil amm-n-gas nitr-acid amm-nitr
baranquill 230
cartagena 340 68
barrancabr 65 85 150
callao-f 70 107 140
cuzco 50 90 118
talara 300
moron 600 88
tablazo 1800
+ amm-sulf urea ssp ss-tsp phos-acid
baranquill 212
cartagena 500
barrancabr 65
guayaquil 120 17
callao-f 50
talara 510
callao-i 100
moron 200 750 300 650
tablazo 2400
+ sulf-acid granulator npk
baranquill 162 850
cartagena 425
guayaquil 80 180
callao-i 240
moron 1200 920 460;
Parameter
caput(m,i,t) 'capacity utilization for old plants'
dcapw(*,m) 'nameplate capacity by country (1000 tpy)'
kw(m,*,t) 'effective capacity by country (1000 tpy)';
umin(t) = .7;
umin("1981-83") = .6;
umin("1984-86") = .65;
caput(m,i,t) = .9;
caput(m,i,t)$(wi("peru",i) + wi("venezuela",i)) = .75;
k(m,i,t) = .33*caput(m,i,t)*dcap(i,m);
k("amm-sulf","moron","1987-89") = .75*.33*390;
k("amm-sulf","moron","1990-92") = .75*.33*390;
display k, umin, caput;
* computations below are for data analysis only.
dcapw(w,m) = sum(i$wi(w,i), dcap(i,m));
kw(m,w,t) = sum(i$wi(w,i), k(m,i,t));
dcapw("region",m) = sum(w, dcapw(w,m));
kw(m,"region",t) = sum(w, kw(m,w,t));
display caput, k, dcapw, kw;
* comments on installed capacity:
* the installed capacity for urea at cartagena is assumed to be 500 mt/day.
* the construction of the plant however is not yet completed.
* the ss-tsp unit at moron can produce either tsp or ssp at 300 mt/day.
* the granulator at moron is designed to produce dap at 880 mt/day or
* npk at 920 mt/day. this particular unit can also be used to granulate
* powdered tsp from other units at 1400 mt/day.
* the ammonium sulfate prodution capacity at moron venzuela is assumed
* to be 390 mt/day for the periods 1987-89 and 1990-92.
$sTitle Prices
Parameter
pv(c,t) 'import prices cif (us$ per ton)'
pe(c,t) 'export prices (us$ per ton)'
pd(i,c) 'domestic raw material prices (us$ per unit)'
pdlim(i,c) 'domestic raw material limits (1000 tpy)' / potosi.phos-rock 35 /;
Table pv(c,t)
1981-83 1984-86 1987-89 1990-92
el-sulfur 73.3 78.3 80.0 80.0
phos-rock 57.4 60.3 61.3 61.3
phos-acid 169.2 193.0 200.0 200.0
ammonia 119.4 160.1 179.0 179.0
urea 163.7 186.8 198.0 198.0
amm-nitr 145.4 165.0 174.0 174.0
amm-sulf 112.2 120.3 123.0 123.0
ssp 92.2 101.2 104.2 104.2
tsp 166.1 187.0 194.2 194.2
pot-chlor 98.8 103.6 105.2 105.2
dap 211.4 242.9 254.2 254.2
c-20-18-10 172.01 191.01 199.01 199.01
c-13-13-20 149.01 160.01 165.01 165.01
c-15-21-10 165.01 183.01 190.01 190.01
c-16-12-12 140.01 154.01 160.01 160.01
c-08-24-12 154.01 170.01 176.01 176.01
c-12-12-12 125.01 138.01 143.01 143.01;
pe(ce,t) = .8*pv(ce,t) - 20*mux(ce);
display pv, pe;
Table pd(i,c)
electr nat-gas fuel-oil phos-rock
palmasola 1.02
pto-suarez 1.02
potosi 45.
cartagena 1.02
barrancabr 1.02
la-dorada 1.02 50.
pt-bolivar 1.02
callao-f 39.00
cuzco 2.00
talara 1.02
callao-i
bayovar 1.02 30.0
moron 1.02 49.70
pta-caiman 42.00
caripito 1.02
tablazo 1.02
+ el-sulfur sulf-acid brine
potosi 10.0
callao-f 40.00
callao-i 40.00
bayovar 40.00 0.2
moron 45.00
pta-caiman 45.00 ;
display pd, pdlim;
$sTitle Investment Data
Set n 'packages' / bol-1, bol-2, col-1, col-2, ecu-1, per-1, per-2, per-3, ven-1, ven-2 /;
Scalar
nnum 'package exclusivity' / 1 /
npack 'minimum number of packages in each country' / 0 /
dpack 'difference in number of packages between countries' / na /
gamma 'package size multiplier for experiments with flexible package sizes' / 1 /
rho 'discount rate' / .1 /
life 'life of productive units (years)' / 15 /;
Parameter
ndef(n,i,m) 'package definitions (tons per day)'
nupf(n) 'fixed package cost (1000 us$)'
hp(n,i,m) 'effective package size (1000 tpy): used to model fixed package sizes'
hb(m) 'maximum plant size (1000 tpy): used to model variable package sizes'
nu(m) 'proportional investment (us$ per tpy)'
delta(t) 'discount factor'
sigma 'capital recovery factor';
Table invdat(m,*) 'investment data'
fixed prop limit
* (mill us$) (us$/tpy) (1000 tpy)
amm-n-gas 84.7 185 550
nitr-acid 5.0 43 200
amm-nitr 5.4 36 200
amm-sulf 4.7 48 300
urea 29.4 93 550
ssp 10.2 35 200
tsp 9.5 47 400
dap 8.6 63 300
npk 8.6 63 800
pot-chlor 10.2 153 150
phos-acid 17.4 100 500
sulf-acid 14.8 58 700;
Parameter ndef / bol-1.palmasola.amm-n-gas 160
bol-1.palmasola.urea 250
bol-2.potosi.tsp 170
bol-2.potosi.phos-acid 125
col-1.la-dorada.amm-n-gas 1000
col-1.la-dorada.urea 1600
col-2.la-dorada.tsp 880
col-2.la-dorada.phos-acid 650
col-2.la-dorada.sulf-acid 980
ecu-1.pt-bolivar.amm-n-gas 435
ecu-1.pt-bolivar.urea 750
per-1.bayovar.amm-n-gas 651
per-1.bayovar.urea 870
per-2.bayovar.sulf-acid 2000
per-2.bayovar.phos-acid 1334
per-2.bayovar.tsp 1076
per-2.bayovar.dap 636
per-3.bayovar.pot-chlor 303
ven-1.pta-caiman.phos-acid 830
ven-1.pta-caiman.sulf-acid 1245
ven-1.pta-caiman.npk 2272
ven-1.pta-caiman.tsp 242
ven-1.pta-caiman.dap 561
ven-2.caripito.amm-n-gas 1500
ven-2.caripito.urea 1030 /;
nupf(n) = sum((i,m)$ndef(n,i,m), 1000*invdat(m,"fixed"));
hp(n,i,m) = .33*ndef(n,i,m);
hb(m) = invdat(m,"limit");
nu(m) = invdat(m,"prop");
Parameter
nup(n) 'package cost (1000 us$)'
pop(n) 'fixed operating cost (1000 us$)'
midyear(t) 'of each period';
nup(n) = sum((i,m)$ndef(n,i,m), 1000*invdat(m,"fixed") + .33*invdat(m,"prop")*ndef(n,i,m));
pop(n) = sum((i,m)$ndef(n,i,m), .33*opcost(m,"capacity")*ndef(n,i,m));
sigma = rho*(1 + rho)**life/((1 + rho)**life - 1);
midyear(t) = 1979 + 3*ord(t);
delta(t) = (1 + rho)**(1981 - midyear(t)) + (1 + rho)**(1982 - midyear(t)) + (1 + rho)**(1983 - midyear(t));
display nupf, hp, hb, nu, delta, rho, life, sigma, pop, nup, midyear;
$sTitle Mappings and Model Reduction Possibilities
Set
nmap(n,i) 'map of packages to locations'
wn(w,n) 'map of countries to packages'
cfv(cf) 'imported final products other than compounds'
old(g) 'old vintage plants' / old /
new(g) 'new vintage plants' / new /
mc(c,i,j) 'marketing possibilities';
nmap(n,i) = yes$sum(m, ndef(n,i,m));
wn(w,n) = yes$sum((m,i)$wi(w,i), ndef(n,i,m));
cfv(cf) = cv(cf) - co(cf);
mc(cf,i,j) = yes;
mc(co,i,j)$(not cores(co,i,j)) = no;
display nmap, wn, cfv, mc;
Scalar
tariffvi 'tariff on imported intermediate goods' / .15 /
tariffvf 'tariff on imported final goods' / .1 /;
Parameter
ple(w,wp) 'matrix for comparing package phasing in countries'
ts(t,tp) 'time summation matrix'
lam(i) 'maximum export capability of individual plants';
ple(w,wp)$(ord(w) <> ord(wp)) = 1;
ts(t,tp) $(ord(t) >= ord(tp)) = 1;
lam(i) = .3;
lam("tablazo") = .7;
lam("palmasola") = .7;
display ple, ts, lam;
* process/reduction possibilities: step 1: define all possibilities
Set
mpos(g,m,i) 'unit possibility'
ppos(g,*,i) 'process possibility'
cposm(c,i) 'consumption possibility'
cposp(c,i) 'production possibility'
hpos(m,i) 'unit expansion possibility'
nfix(m,i) 'fixed package expansions';
mpos(g,m,i) = yes;
ppos(g,p,i) = yes;
cposm(c,i) = yes;
cposp(c,i) = yes;
hpos(m,i) = yes;
nfix(m,i) = yes;
$sTitle Capacity Analysis
Parameter
ax(c,p,i) 'reduced i-o matrix for nutrient potential'
kx(m,i) 'effective capacity'
weight(cq) 'nutrient weights' / n 100, p2o5 10, k2o 1 /
nutxx(c) 'nutrient weight for products'
xrep(*,cq) 'maximum nutrient shipments (1000 tpy)';
Set
pposx(*,i) 'plant possibilities'
cposxp(c,i) 'commodity output possibilities';
ax(c,p,i) = a(c,p);
ax(c,p,i)$((a(c,p) < 0) and (1$cv(c) or pd(i,c))) = 0;
nutxx(cf) = sum(cq, weight(cq)*alpha(cf,cq));
kx(m,i) = 1;
pposx(p,i) = yes;
cposxp(c,i) = yes;
display ax, nutxx;
Variable
zx(p,i) 'process level (1000 tpy)'
xx(c,i) 'output of final products (1000 tpy)'
nut 'total nutrient value (1000 tpy)';
Positive Variable zx, xx;
Equation
mbx(c,i) 'material balance (1000 tpy)'
ccx(m,i) 'capacity constraint (1000 tpy)'
dnut 'nutrient definition';
mbx(c,i).. sum(p$pposx(p,i), ax(c,p,i)*zx(p,i)) =g= xx(c,i)$(cposxp(c,i)*cf(c));
ccx(m,i).. sum(p$pposx(p,i), b(m,p)*zx(p,i)) =l= kx(m,i);
dnut.. nut =e= sum((c,i)$(cposxp(c,i)*cf(c)), nutxx(c)*xx(c,i)) - .1*sum((p,i)$pposx(p,i), zx(p,i));
Model capcheck / mbx, ccx, dnut /;
* define initial capacity values and reduction possibilities for period 1981-83
kx(m,i) = k(m,i,"1981-83");
pposx(p,i) = yes$(sum(m$(not kx(m,i)), b(m,p) <> 0) = 0);
pposx(co,i)$sum(w$wi(w,i), not wnpk(w,co)) = no;
cposxp(c,i) = yes$sum(p$pposx(p,i), ax(c,p,i) > 0);
display "maximum nutrient output for n, p and k", "year 1981-83";
solve capcheck maximizing nut using lp;
* define report of shipments for 1981-83 solution
xrep(w,cq) = sum((cf,i)$wi(w,i), alpha(cf,cq)*xx.l(cf,i));
xrep("region",cq) = sum(w, xrep(w,cq));
display xx.l, xrep;
* define initial capacity values and reduction possibilities for period 1990-92 without capacity expansion
kx(m,i) = k(m,i,"1990-92");
pposx(p,i) = yes$(sum(m$(not kx(m,i)), b(m,p) <> 0) = 0);
pposx(co,i)$sum(w$wi(w,i), not wnpk(w,co)) = no;
cposxp(c,i) = yes$sum(p$pposx(p,i), ax(c,p,i) > 0);
display "maximum nutrient output for n, p and k", "year 1990-92 no capacity expansion";
solve capcheck maximizing nut using lp;
* define report of shipments for 1990-92 solution without capacity expansion
xrep(w,cq) = sum((cf,i)$wi(w,i), alpha(cf,cq)*xx.l(cf,i));
xrep("region",cq) = sum(w, xrep(w,cq));
display xx.l, xrep;
* define initial capacity values and reduction possibilities for period 1990-92 with all packages
kx(m,i) = k(m,i,"1990-92") + sum(n, hp(n,i,m));
pposx(p,i) = yes$(sum(m$(not kx(m,i)), b(m,p) <> 0) = 0);
pposx(co,i)$sum(w$wi(w,i), not wnpk(w,co)) = no;
cposxp(c,i) = yes$sum(p$pposx(p,i), ax(c,p,i) > 0);
display "maximum nutrient output for n, p and k", "year 1990-92 and all packages";
solve capcheck maximizing nut using lp;
* define report of shipments for 1990-92 solution with all packages
xrep(w,cq) = sum((cf,i)$wi(w,i), alpha(cf,cq)*xx.l(cf,i));
xrep("region",cq) = sum(w, xrep(w,cq));
display xx.l, xrep;
$sTitle Reduction and Data Analysis
* reduction procedure: step 2:
mpos("old",m,i) = yes$sum(t, k(m,i,t));
mpos("new",m,i) = yes$sum(n, ndef(n,i,m));
ppos(g,p,i) = yes$(sum(m$( not mpos(g,m,i)), b(m,p) <> 0) = 0);
ppos(g,co,i)$sum(w$wi(w,i), not wnpk(w,co)) = no;
cposm(c,i) = yes$sum((g,p)$ppos(g,p,i), a(c,p) < 0);
cposp(c,i) = yes$sum((g,p)$ppos(g,p,i), a(c,p) > 0);
hpos(m,i) = mpos("new",m,i);
nfix(m,i) = hpos(m,i);
* in the section below we analyse the transport cost for the cases where it is cheaper
* for one location to export a product and for another location to import the same product
* instead of simply intra-shipping between themselves.
Parameter
eviip(i,ip,cis,t) 'international trade advantage (us$ per ton)'
evij(i,j,cf,t) 'international trade advantage (us$ per ton)'
reviip(i,ip,cis,t) 'international trade advantage - with reductions (us$ per ton)'
revij(i,j,cf,t) 'international trade advantage - with reductions (us$ per ton)';
eviip(i,ip,cis,t)$(cv(cis)*ce(cis)) = max(0, mux(cis)*(mui(i,ip) - mur(ip) - mue(i)) - (tariffvi + 1)*pv(cis,t) + pe(cis,t));
evij(i,j,cf,t)$(cv(cf)*ce(cf)) = max(0, mux(cf)*(muf(i,j) - mufv(j) - mue(i)) - (tariffvf + 1)*pv(cf,t) + pe(cf,t));
display eviip, evij;
reviip(i,ip,cis,t) = eviip(i,ip,cis,t)$(cposp(cis,i)*cposm(cis,ip));
revij(i,j,cf,t) = evij(i,j,cf,t)$cposp(cf,i);
display reviip, revij;
$sTitle Model Definition
Variable
z(g,p,i,t) 'process level (1000 units per year)'
xf(c,i,j,t) 'domestic shipment activity: final products (1000 tpy)'
xi(c,i,ip,t) 'domestic shipment activity: interplant (1000 tpy)'
vf(cf,j,t) 'imports: final products (1000 tpy)'
tvf(w,t) 'value of imports: final products (mill us$ per year)'
vi(c,i,t) 'imports of: intermediates and raw materials (1000 tpy)'
tvi(w,t) 'value of imports: intermediates (mill us$ per year)'
e(c,i,t) 'exports (1000 tpy)'
u(c,i,t) 'domestic material purchases (1000 tpy)'
h(m,i,te) 'capacity expansion (1000 tpy)'
yp(n,te) 'package decision variable (binary)'
yw(w,te) 'package decision variable by country'
phik(w,t) 'capital cost (mill us$ per year)'
phip(w,t) 'operating cost (mill us$ per year)'
phig(w,t) 'domestic materials cost (mill us$ per year)'
phiw(w,t) 'working capital cost (mill us$ per year)'
phim(w,t) 'import cost (mill us$ per year)'
phit(w,t) 'tariffs (mill us$ per year)'
phil(w,t) 'transport cost (mill us$ per year)'
phie(w,t) 'export revenue (mill us$ per year)'
phi(w,t) 'cost per year (mill us$ per year)'
phitot 'discounted total cost (mill us$ discounted)';
Positive Variable z, xf, vf, vi, e, u, h, xi;
Binary Variable yp;
Equation
mbd(cq,j,t) 'material balance on demand (1000 tpy)'
mba(j,t) 'ammonium sulfate requirements (1000 tpy)'
mb(c,i,t) 'material balance at plants (1000 tpy)'
ubnd(c,i,t) 'bounds on local materials (1000 tpy)'
atvf(w,t) 'definition of import value: finals products (mill us$ per year)'
atvi(w,t) 'definition of import value: intermediates (mill us$ per year)'
elim(c,i,t) 'export limits (1000 tpy)'
cc(g,m,i,t) 'capacity constraints (1000 tpy)'
ccmin(i,t) 'minimum npk utilization (1000 tpy)'
binv(m,i,te) 'binary constraint: variable plant size (1000 tpy)'
binf(m,i,te) 'binary constraint: fixed plant size (1000 tpy)'
minpack(w) 'minimum number of packages per country'
bw(w,te) 'aggregation of packages in country'
gple(w,wp,te) 'inter-country constraint on package - inequality'
ex(n) 'package mutual exclusivity (units)'
acc(w,t) 'accounting: capital cost (mill us$ per year)'
acp(w,t) 'accounting: operating cost (mill us$ per year)'
acg(w,t) 'accounting: domestic materials (mill us$ per year)'
acw(w,t) 'accounting: working capital (mill us$ per year)'
acm(w,t) 'accounting: import cost (mill us$ per year)'
act(w,t) 'accounting: tariffs (mill us$ per year)'
acl(w,t) 'accounting: transport cost (mill us$ per year)'
ace(w,t) 'accounting: export revenue (mill us$ per year)'
ac(w,t) 'accounting: total annual undiscounted cost (mill us$ per year)'
obj 'accounting: total discounted cost (mill us$)';
mbd(cq,j,t)..
sum(cf, alpha(cf,cq)*(sum(i$(mc(cf,i,j)*cposp(cf,i)), xf(cf,i,j,t)) + vf(cf,j,t)$cfv(cf))) =g= d(j,cq,t);
mba(j,t)..
sum(i$cposp("amm-sulf",i), xf("amm-sulf",i,j,t)) + vf("amm-sulf",j,t) =g= db(j,t);
mb(c,i,t)..
sum((g,p)$ppos(g,p,i), a(c,p)*z(g,p,i,t)) + ( vi(c,i,t)$cv(c) + u(c,i,t)$pd(i,c)
+ sum(ip$cposp(c,ip), xi(c,ip,i,t))$cis(c))$cposm(c,i)
=g=(sum(ip$cposm(c,ip), xi(c,i,ip,t))$cis(c) + e(c,i,t)$ce(c)
+ sum(j$mc(c,i,j), xf(c,i,j,t)))$cposp(c,i);
ubnd(cr,i,t)$(cposm(cr,i)$pdlim(i,cr)).. u(cr,i,t) =l= pdlim(i,cr);
elim(ce,i,t)$cposp(ce,i)..
e(ce,i,t) =l= lam(i)*sum((g,p)$((a(ce,p) > 0)$ppos(g,p,i)), a(ce,p)*z(g,p,i,t));
cc(g,m,i,t)$mpos(g,m,i)..
sum(p$ppos(g,p,i), b(m,p)*z(g,p,i,t)) =l= k(m,i,t)$old(g) + sum(te$ts(t,te), unew*h(m,i,te))$new(g);
ccmin(i,t)$k("npk",i,t)..
sum(p$ppos("old",p,i), b("npk",p)*z("old",p,i,t)) =g= umin(t)*k("npk",i,t);
binv(m,i,te)$hpos(m,i).. h(m,i,te) =l= gamma*sum(n$ndef(n,i,m), hb(m)*yp(n,te));
binf(m,i,te)$nfix(m,i).. h(m,i,te) =e= sum(n$ndef(n,i,m), hp(n,i,m)*yp(n,te));
minpack(w).. sum((n,te)$wn(w,n), yp(n,te)) =g= npack;
bw(w,te).. yw(w,te) =e= sum(n$wn(w,n), yp(n,te));
gple(w,wp,te)$ple(w,wp).. yw(w,te) - yw(wp,te) =l= dpack;
ex(n).. sum(te, yp(n,te)) =l= nnum;
acc(w,t)..
phik(w,t) =e= sigma*sum(te$ts(t,te), sum((m,i)$(wi(w,i)*mpos("new",m,i)), nu(m)*h(m,i,te))
+ sum(n$wn(w,n), nupf(n)*yp(n,te)))/1000;
acp(w,t)..
phip(w,t) =e= sum(i$wi(w,i), sum((g,p)$ppos(g,p,i), oz(g,p,i)*z(g,p,i,t))
+ sum((m,te)$(ts(t,te)$hpos(m,i)),ocap(m)*h(m,i,te)))/1000;
acg(w,t)..
phig(w,t) =e= sum((cr,i)$(wi(w,i)*cposm(cr,i)$pd(i,cr)), pd(i,cr)*u(cr,i,t))/1000;
acw(w,t)..
phiw(w,t) =e= .025*( phip(w,t)+phig(w,t)
+ sum((cv,i)$(wi(w,i)*cposm(cv,i)), (pv(cv,t) + mux(cv)*mur(i))*vi(cv,i,t)))/1000;
acm(w,t).. phim(w,t) =e= tvi(w,t) + tvf(w,t);
act(w,t).. phit(w,t) =e= tariffvi*tvi(w,t) + tariffvf*tvf(w,t);
atvf(w,t).. tvf(w,t) =e= sum((cfv,j)$wj(w,j), pv(cfv,t)*vf(cfv,j,t))/1000;
atvi(w,t).. tvi(w,t) =e= sum((cv,i)$(wi(w,i)$cposm(cv,i)), pv(cv,t)*vi(cv,i,t))/1000;
acl(w,t)..
phil(w,t) =e= (sum((cf,j)$wj(w,j), sum(i$(mc(cf,i,j)*cposp(cf,i)), muf(i,j)*xf(cf,i,j,t)) + mufv(j)*vf(cf,j,t)$cfv(cf))
+ sum(i$wi(w,i), sum(ce$cposp(ce,i), mux(ce)*mue(i)*e(ce,i,t)) + sum(cv$cposm(cv,i), mux(cv)*mur(i)*vi(cv,i,t))
+ sum((cis,ip)$(cposm(cis,ip)*cposp(cis,i)), mux(cis)*mui(i,ip)*xi(cis,i,ip,t))))/1000;
ace(w,t).. phie(w,t) =e= sum((ce,i)$(wi(w,i)*cposp(ce,i)), pe(ce,t)*e(ce,i,t))/1000;
ac(w,t).. phi(w,t) =e= phik(w,t) + phip(w,t) + phig(w,t) + phiw(w,t) + phim(w,t) + phil(w,t) - phie(w,t);
obj.. phitot =e= sum((w,t), delta(t)*phi(w,t));
Model andean1 / mbd , mba , mb , ubnd , atvf
atvi, elim , cc , ccmin, binv
binf, minpack, bw , gple , ex
acc , acp , acg, acw , acm
act , acl , ace, ac , obj /;
dpack = 1;
solve andean1 minimizing phitot using mip;
$sTitle Report
Set
label / capital , oper+w-cap, material, intra , imports
transport, total-cost, exports , net-cost, balance /
lab1(label) / capital, oper+w-cap, material, imports, transport /
wim / bolivia, colombia, ecuador, peru, venezuela, extra /
cap / ecap, slack, utilize /;
Alias (wim,wex);
Parameter
flowf 'final product flow (1000 tpy)'
flowi 'intermediate and raw material flow (1000 tpy)'
cifcif 'value flows - valued at import prices (mill us$ per year)'
tradecost 'trade flow advantage at fob cost (mill us$ per year)'
arep 'capacity reporting: by plant (1000 tpy)'
brep 'capacity reporting: by country (1000 tpy)'
aut 'capacity utilization by plant and unit'
but 'capacity utilization by unit'
cut 'capacity utilization by plant'
dut 'capacity utilization by country'
regcost 'regional cost components (mill us$ per year)'
regtrade 'regional trade (mill us$ per year)'
regbal 'regional trade balance (mill us$ per year)'
phicr 'total undiscounted cost with corrected regional trade at cifcif';
* compute values of the various product flows:
flowf(w,wp,cf,t) = sum((i,j)$(wi(w,i)*wj(wp,j)), xf.l(cf,i,j,t));
flowf("extra",wp,cf,t) = sum(j$wj(wp,j), vf.l(cf,j,t));
flowf(w,"extra",cf,t) = sum(i$wi(w,i), e.l(cf,i,t));
flowf(wim,wex,"final",t) = sum(cf, flowf(wim,wex,cf,t));
flowi(w,wp,cis,t) = sum((i,ip)$(wi(w,i)*wi(wp,ip)), xi.l(cis,i,ip,t));
flowi("extra",wp,cv,t) = sum(ip$wi(wp,ip), vi.l(cv,ip,t));
flowi(w,"extra",ce,t)$(not cf(ce)) = sum(i$wi(w,i), e.l(ce,i,t));
flowi(wim,wex,"interm",t) = sum(c, flowi(wim,wex,c,t));
* convert the flow values above to cifcif prices by using import prices. and then compute the
* the intra-regional trade and net of intra-regional and extra-regional.
cifcif(wim,wex,t) = sum(c, pv(c,t)*(flowf(wim,wex,c,t) + flowi(wim,wex,c,t)))/1000;
cifcif("intra",w,t) = sum(wp$(ord(w) <> ord(wp)), cifcif(wp,w,t));
cifcif(w,"intra",t) = sum(wp$(ord(w) <> ord(wp)), cifcif(w,wp,t));
cifcif(w,"total",t) = cifcif(w,"intra",t) + cifcif(w,"extra",t);
cifcif("total",w,t) = cifcif("extra",w,t) + cifcif("intra",w,t);
cifcif(w,"balance",t) = cifcif(w,"total",t) - cifcif("total",w,t);
* display flowf, flowi, cifcif;
* compute individual country and regional trade flows at fob cost.
tradecost(wex,"extra-imp",t) = cifcif("extra",wex,t);
tradecost(wex,"intra-imp",t) = cifcif("intra",wex,t);
tradecost(wex,"total-imp",t) = tradecost(wex,"extra-imp",t) + tradecost(wex,"intra-imp",t);
tradecost(wex,"extra-exp",t) = sum(c, pe(c,t)*(flowf(wex,"extra",c,t) + flowi(wex,"extra",c,t)))/1000;
tradecost(wex,"intra-exp",t) = cifcif(wex,"intra",t);
tradecost(wex,"total-exp",t) = tradecost(wex,"extra-exp",t) + tradecost(wex,"intra-exp",t);
tradecost(wex,"balance",t) = tradecost(wex,"total-exp",t) - tradecost(wex,"total-imp",t) ;
* display tradecost;
* compute the effective total capacities, slack and utilization rates.
arep(i,m,t,"ecap") = k(m,i,t) + sum(te$ts(t,te), unew*h.l(m,i,te));
arep(i,m,t,"slack") = sum(g, cc.up(g,m,i,t) - cc.l(g,m,i,t));
arep(i,m,t,"utilize")$(arep(i,m,t,"ecap") <> 0) = (arep(i,m,t,"ecap") - arep(i,m,t,"slack"))/arep(i,m,t,"ecap");
arep(i,"total",t,cap) = sum(m, arep(i,m,t,cap));
arep("total",m,t,cap) = sum(i, arep(i,m,t,cap));
arep(i,"total",t,"utilize")$(arep(i,"total",t,"ecap") <> 0) = (arep(i,"total",t,"ecap") - arep(i,"total",t,"slack"))/
arep(i,"total",t,"ecap");
arep("total",m,t,"utilize")$(arep("total",m,t,"ecap") <> 0) = (arep("total",m,t,"ecap") - arep("total",m,t,"slack"))/
arep("total",m,t,"ecap");
brep(w,m,t,cap) = sum(i$wi(w,i), arep(i,m,t,cap));
brep(w,m,t,"utilize")$(brep(w,m,t,"ecap") <> 0) = (brep(w,m,t,"ecap") - brep(w,m,t,"slack"))/brep(w,m,t,"ecap");
brep("total",m,t,cap) = arep("total",m,t,cap);
brep(w,"total",t,cap) = sum(m, brep(w,m,t,cap));
brep(w,"total",t,"utilize")$(brep(w,"total",t,"ecap") <> 0) = (brep(w,"total",t,"ecap") - brep(w,"total",t,"slack"))/
brep(w,"total",t,"ecap");
* report just the utilization rates at various aggregation levels
aut(i,m,t) = arep(i,m,t,"utilize");
aut(i,"total",t) = arep(i,"total",t,"utilize");
aut("total",m,t) = arep("total",m,t,"utilize");
but(m,t) = aut("total",m,t);
cut(i,t) = aut(i,"total",t);
dut(w,t) = brep(w,"total",t,"utilize");
regcost("capital",t) = sum(w, phik.l(w,t));
regcost("oper+w-cap",t) = sum(w, phip.l(w,t) + phiw.l(w,t));
regcost("material",t) = sum(w, phig.l(w,t));
regcost("imports",t) = sum(w, phim.l(w,t));
regcost("transport",t) = sum(w, phil.l(w,t));
regcost("total-cost",t) = sum(lab1, regcost(lab1,t));
regcost("exports",t) = sum(w, phie.l(w,t));
regcost("net-cost",t) = regcost("total-cost",t) - regcost("exports",t);
regcost(label,"all-years") = 3*sum(t, regcost(label,t));
regtrade("intra",t) = sum(w, cifcif(w,"intra",t));
regtrade("imports",t) = regcost("imports",t);
regtrade("exports",t) = regcost("exports",t);
regtrade("balance",t) = regtrade("imports",t) - regtrade("exports",t);
regtrade(label,"all-years") = 3*sum(t, regtrade(label,t));
regbal(w,"reg-export",t) = cifcif(w,"intra",t);
regbal(w,"reg-import",t) = cifcif("intra",w,t);
regbal(w,"reg-bal",t) = regbal(w,"reg-export",t) - regbal(w,"reg-import",t);
phicr(w,t) = phi.l(w,t) - regbal(w,"reg-bal",t);
display phi.l, phicr, regbal;
display phitot.l, phip.l, phig.l, phiw.l, phim.l, phit.l, phil.l, phie.l, phi.l;
display regcost, regtrade, dut, cut, but, cifcif, tradecost, flowf, flowi, arep, brep, aut;
display vf.l, vi.l, u.l, e.l, tvf.l, tvi.l, yp.l, h.l;