Description
This is a detailed production and distribution scheduling model of the Mexican steel sector. The model is reduced explicitly.
Large Model of Type : LP
Category : GAMS Model library
Main file : mexls.gms
$title Mexico Steel - Large Static (MEXLS,SEQ=17)
$onText
This is a detailed production and distribution scheduling model of
the Mexican steel sector. The model is reduced explicitly.
Kendrick, D, Meeraus, A, and Alatorre, J, The Planning of Investment
Programs in the Steel Industry. The Johns Hopkins University Press,
Baltimore and London, 1984.
A scanned version of this out-of-print book is accessible at
http://www.gams.com/docs/pdf/steel_investment.pdf
Data References
---------------
1. Sicartsa, Descripcion de los procesos que se realizan en las
plantas del complejo siderurgico sicartsa, 1978
2. Altos Horos, Information general (blueprint), 1974
3. Altos Hornos, Diagrama de flujo 3.75 mmt/a and 4.25 mmt/a
(blueprints), 1978
4. CCIS, Situacion actual y crecimiento futuro de la industria
siderurgica, 1978
5. CCIS, Reporte de la prueba del empleo de fierro esponja
hyl en el Alto Horno 2, 1978
6. CCIS, Estudio de pre-factibilidad para una planta de fierro
esponja para exportacion convenio Mexico-Brasil, 1978
7. CCIS, Las materias primas y otros insumos en la industria
siderurgica, 1977
8. Russel and Vaughan, Steel Production, 1976
9. Secretaria de la Precidencia, La industria siderurgica
integrada de Mexico (vol i and ii), 1976
10. Ahmsa, Capacity sheet, 1978
11. Ahmsa, Capacity expansion 1979 - 1982, 1978
12. Fundidora, La moderna fundidora ...., 197..
13. Sicartsa, Production y consumo
14. Sicartsa, Insumos principales, pecios de presupuesto, 1979
15. Hylsa, The hyl iron ore direct reduction process, 1973
16. Fundidora, Computer data bank, 1978
17. Fundidora, Oferta y Demanda, Joint industry projections, 1978
18. CCIS, Transport cost and distances for mineral coal
19. CCIS, Transport cost and distances for iron ore
20. CCIS, Shortest railroad distances between major cities
21. CCIS, Transport cost and distances for some steel products
22. IBRD, Sicartsa ii, 1975
23. Capital cost. Sicartsa first stage. 1973. Report by
industrial department. IBRD.
24. Plan de desarrollo de la industria siderurgica paraestatal
1979-1990. Sidermex. Confidential document. Not published yet
Keywords: linear programming, production problem, distribution problem, scheduling,
micro economics, steel industry
$offText
$eolCom //
$sTitle Set Definitions
Set
im 'iron ore and coal mines'
/ p-colorada 'pena colorada colima'
lastruchas 'lazaro cardenas michoacan'
la-perla 'camargo chihuahua'
cerro-mer 'cerro de mercado durango'
hercules 'sierra mojada coahuila'
la-chula 'minatitlan colima'
el-encino 'pihuamo jalisco'
coahuila 'coal mining region' /
ir 'raw material plants'
/ penacol 'pena colorada colima'
laperla 'camargo chihuahua'
alzada 'colima'
esperanzas 'coahuila' /
is 'steel mills'
/ sicartsa 'las truchas'
ahmsa 'monclova'
fundidora 'monterrey'
hylsa 'monterrey'
hylsap 'puebla'
tamsa 'veracruz' /
j 'domestic market areas'
/ mexico-df 'mexico d.f.'
puebla 'puebla'
queretaro 'queretaro'
san-luis 'san luis potosi'
monterrey 'nuevo leon'
guadalaja 'guadalajara jalisco'
l-cardenas 'michoacan'
coatzacoal 'veracruz' /
l 'export points'
/ gulf
pacific /
mm 'productive units at mines'
/ mine-co 'mining equipment for coal mines'
mine-eq 'mining equipment: trucks and crushers'
conc-mag 'magnetic concentrator'
conc-flot 'flotation concentrator' /
mr 'productive units at raw material plants'
/ pellet 'pellet plant'
coke-oven 'coke oven and byproduct units' /
ms 'productive units at steel mills'
/ pellet 'pellet plant'
sinter 'sinter plant'
coke-oven 'coke ovens and by-product units'
blast-furn 'blast furnaces'
direct-red 'direct reduction units'
openhearth 'open hearth furnaces'
bof 'basic oxygen converters'
elec-arc 'electric arc furnaces'
concas-sl 'continuous casting unit for slabs'
concas-bi 'continuous casting unit for billets'
ingot-cast 'ingot casting'
primary-fl 'primary mill and soaking pits - flat products'
primary-nf 'primary mills and soaking pits - non flat'
plate-mill 'plate mill'
hot-mill 'hot strip mill'
pickleline 'pickling line'
cold-mill 'cold strip mill'
anneal 'annealing units'
tempermill 'temper mill'
tin-line 'tinning line'
billet 'billet mill'
heavysmill 'heavy shapes mill'
bar-mill 'integrated bar mill'
wire-mill 'integrated wire mill'
seaml-mill 'seamless pipe mill' /
pm 'production processes at mines'
/ min-co 'mining unwashed coal'
was-co 'washing of coal'
min-n 'mining in the northern mines'
min-s 'mining in the southern mines'
min-tr 'mining in las truchas mine'
conc-n 'concentration of northern ore'
conc-s 'concentration of southern ore'
conc-tr 'concentration of truchas ore' /
pr 'production processes at raw material plants'
/ pelt-c 'pellet production using conc ore'
coke-hd 'coke production with domestic coal' /
ps 'production processes at steel mills'
/ pelt-c 'pellet production using concentrated ore'
sinter 'sinter production'
coke-hd 'coke production with high domestic coal input'
coke-hi 'coke production with high import coal input'
pig-ore 'pig iron ore production with lump ore'
pig-sin 'pig iron production with high sinter charge'
pig-pel 'pig iron production with high pellets charge'
pig-pel-m 'pig iron production with coke from imported coal'
sponge 'sponge iron production'
stl-oh-p 'steel production in open hearths with high pig iro'
stl-oh-s 'steel production in open hearths with high scrap charge'
stl-oh-s2 'steel production in open hearths with highest scrap charge'
stl-bof-p 'steel production in bof with high pig iron charge'
stl-bof-s 'steel production in bof with high scrap charge'
stl-eaf-sp 'steel production in electric fur. with high sponge'
stl-eaf-s 'steel production in electric furnace with high scrap'
slabs-cc 'slabs production by continuous casting'
billets-cc 'billet production by continuous casting'
ingot 'ingot casting'
slab-roll 'slab production by rolling'
bloom-roll 'rolling of blooms from ingots'
billet-rol 'billet production by rolling blooms'
plate 'plate production from slabs'
hot-sheet 'hot rolled coil production'
pickled 'pickled coil production'
cold-sheet 'cold roll coil production'
annealed 'annealed coil production'
tempered 'tempered coil production'
tinning 'tin production'
heavyshape 'heavy shape rolling'
lightshape 'rolling of light shapes'
rough-nf 'roughing mill for non-flat products'
bar-roll 'rolling of bars'
rebars-ld 'rolling of large diameter re-rods and bars'
rebars-sd 'rolling of small diameter re-rods and bars'
wire rod 'rolling of wire rod'
seam-rol 'rollling of seamless pipes' /
cs 'commodities at steel mills'
/ ore-n 'iron ore from north. high s and p. 59% fe.'
ore-s 'iron ore from south. no p. 60% fe.'
ore-trucha 'iron ore from sicartsa. no p. 55% fe.'
ore-conc 'iron ore concentrated'
pellets 'pellets'
sinter 'sinter'
coal-d 'coal-domestic: washed'
coal-i 'coal-imported: washed'
coal-r 'raw unwashed coal'
coke 'coke produced with domestic coal'
coke-imp-c 'coke produced with imported coal'
fuel-oil 'fuel oil in thousand liters'
limestone 'limestone'
pig-iron 'pig iron (hot metal)'
nat-gas 'natural gas in 1000 m3'
sponge 'sponge iron'
scrap 'steel scrap'
ferro-allo 'ferroalloys'
refrac 'refractories'
dolomite 'dolomite'
lime 'lime'
electrodes 'electrodes (kg)'
steel-liq 'liquid steel'
steel-ing 'ingot steel'
slabs 'slabs'
plate 'plate'
hot-strip 'hot strip sheet'
pick-strip 'pickled strip sheet'
cold-strip 'cold strip sheet'
anl-strip 'annealed strip sheet'
temp-strip 'tempered strip sheet'
tin 'tin sheet'
blooms 'blooms'
billets 'billets'
heavyshape 'heavy shapes'
lightshape 'light shapes'
bars 'bars'
rebars 'reinforcing rods - demand data is available only for aggregate'
rebars-ld 'large diameter reinforcing rods'
rebars-sd 'small diameter reinforcing rods'
wire 'wire rod'
seamless 'seamless pipe'
pesos 'mexican currency'
electric 'electricity in 1000 kwh'
water 'water in 1000 m3'
ing-blooms 'steel blooms for seamless pipe'
rails 'rails - only imported' /
craw(cs) 'domestic raw materials'
/ fuel-oil, limestone, nat-gas, scrap, ferro-allo, refrac
dolomite, lime, electrodes, water, electric /
cm(cs) 'commodities at mines'
/ ore-n, ore-s, ore-trucha, coal-r, coal-d, ore-conc /
cr(cs) 'commodities at raw material plants'
/ ore-n, ore-s, ore-trucha, coal-r, coal-d, ore-conc, pellets, coke, electric /
crv(cs) 'imported raw materials and intermediate products'
/ coal-i, pellets, scrap, coke /
cmr(cs) 'commodities shipped from mines to raw material plants'
/ ore-conc, coal-d /
cms(cs) 'commodities shipped from mines to steel plants'
/ coal-d, ore-conc, ore-s, ore-n, ore-trucha /
crs(cs) 'commodities shipped from raw material plants to steel mills'
/ pellets, coke /
css(cs) 'commodities for interplant shipment between steel mills'
/ sponge, pellets, coke /
cf(cs) 'final products'
/ plate, hot-strip, temp-strip, tin , heavyshape, lightshape
bars , rebars-ld, rebars-sd , wire, seamless , rails /
ce(cs) 'commodities for exports'
cfv(cs) 'imported final products'
o 'owner numbers'
/ 1*5 /
own(o,is) 'owner groups'
/ 1.sicartsa, 2.ahmsa, 3.fundidora, 4.(hylsa,hylsap), 5.tamsa /
isex(is) 'plants excluded from alzada ores'
/ sicartsa, ahmsa, fundidora, tamsa /
res(cm,im) 'reserve types at locations'
/ ore-s.p-colorada, ore-trucha.lastruchas, ore-n.la-perla
ore-n.cerro-mer , ore-n.hercules , ore-s.la-chula
ore-s.el-encino , coal-r.coahuila /;
ce(cf) = yes;
cfv(cf) = yes;
Alias (is,isp);
$sTitle Production
Parameter as(cs,ps,is) 'input output relations for steel mills';
Table am(cm,pm) 'a matrix for mining products'
min-n min-s min-tr conc-n conc-s conc-tr min-co was-co
ore-n 1. -1.42
ore-s 1. -1.28
ore-trucha 1. -1.37
ore-conc 1. 1. 1.
coal-r 1. -2.1
coal-d 1. ;
Table ar(cs,pr) 'a matrix for raw material plants'
pelt-c coke-hd
fuel-oil -.02
ore-conc -.99
pellets 1.0
coal-d -1.50
coke 1.0
electric -.045 -.060;
Table asic(cs,ps) 'a matrix for sicartsa'
pelt-c coke-hi pig-pel-m stl-bof-p stl-bof-s
ore-trucha -.20
ore-conc -.99
pellets 1.0 -1.384
coal-i -1.38
coke-imp-c 1.0 -.60
fuel-oil -.045
limestone -.081
pig-iron 1.0 -.944 -.833
scrap -.166 -.180
ferro-allo -.033 -.033
refrac -.006 -.006
dolomite -.049 -.06 -.06
lime -.09 -.09
steel-liq 1.0 1.0
electric -.045 -.060 -.090 -.068 -.068
+ billets-cc lightshape rebars-ld rebars-sd wire
scrap .04 .03 .03 .03 .02
steel-liq -1.05
billets 1.0 -1.06 -1.06 -1.06 -1.05
lightshape 1.0
rebars-ld 1.0
rebars-sd 1.0
wire 1.0
electric -.08 -.08 -.08 -.08
water -.01 -.01 -.01 -.01;
* data for pelt-c and coke-hi come from plant visit. data for pig-pel
* and stl-bof-p comes from (1 page 83 and 95). idealized data rather
* than historical yields for 1978 were used for rolling mills.
Table aahm(cs,ps) 'a matrix for ahmsa'
coke-hd sinter pig-pel pig-sin
ore-n -1.1 -.64
coal-d -1.50
sinter 1.0 -1.03
pellets -1.6
coke 1.0 -.11 -.63 -.70
limestone -.17 -.10
dolomite -.049 -.049
pig-iron 1.0 1.0
nat-gas -.05 -.05
sponge
electric -.060 -.040 -.090 -.090
ferro-allo -.065 -.065
+ stl-oh-s stl-bof-p stl-bof-s ingot slabs-cc slab-roll
ore-n -.02
pig-iron -.77 -1.02 -.74
scrap -.33 -.11 -.42 .02 .02 .13
nat-gas -.078 -.05 -.05
fuel-oil -.079
limestone -.14
ferro-allo -.011 -.011 -.011
refrac -.012 -.006 -.012
dolomite -.10 -.06
lime -.09 -.14
steel-liq 1.0 1.0 1.0 -1.04 -1.04
steel-ing 1.0 -1.17
slabs 1.0 1.0
electric -.040 -.068 -.068
+ bloom-roll billet-rol plate hot-sheet pickled
scrap .13 .13 .02 .03
steel-ing -1.17
slabs -1.04 -1.05
plate 1.0
hot-strip 1.0 -1.0
blooms 1.0 -1.17
billets 1.0
pick-strip 1.0
+ cold-sheet annealed tempered tinning
scrap .13
pick-strip -1.17
cold-strip 1.0 -1.0
anl-strip 1.0 -1.0
temp-strip 1.0 -1.02
tin 1.0
+ heavyshape lightshape bar-roll rebars-ld rebars-sd wire
blooms -1.15
heavyshape 1.0
billets -1.14 -1.06 -1.06 -1.06 -1.0
lightshape 1.0
bars 1.0
rebars-ld 1.0
rebars-sd 1.0
wire 1.0
scrap .05 .03 .04 .04 .04 .0;
Table afund(cs,ps) 'a matrix for fundidora'
pig-pel pig-ore pelt-c
ore-n -.29 -1.38
ore-conc -.99
pellets -1.38 -.29 1.0
coke -.69 -.75
limestone -.24 -.27
pig-iron 1.0 1.0
nat-gas -.051 -.029
electric -.06 -.036 -.045
water -.003 -.001
ferro-allo -.065 -.065
+ stl-oh-s stl-bof-p stl-bof-s stl-oh-s2
ore-n -.02 -.02
fuel-oil -.079 -.079
pig-iron -.74 -.96 -.81 -.32
nat-gas -.078 -.078
scrap -.42 -.15 -.27 -.80
ferro-allo -.012 -.012 -.012 -.012
refrac -.012 -.006 -.006 -.012
lime -.14 -.14
steel-liq 1.0 1.0 1.0 1.0
electric -.072 -.068 -.068 -.072
+ ingot slab-roll plate hot-sheet pickled cold-sheet
scrap .01 .10 .10 .13
steel-liq -1.04
steel-ing 1.0 -1.14
slabs 1.0 -1.12 -1.05
plate 1.0
hot-strip 1.0 -1.0
pick-strip 1.0 -1.17
cold-strip 1.0
+ annealed tempered bloom-roll billet-rol lightshape
scrap .10 .10
steel-ing -1.13
cold-strip -1.0
anl-strip 1.0 -1.0
temp-strip 1.0
blooms 1.0 -1.03
billets 1.0 -1.14
lightshape 1.0
+ wire rebars-sd
scrap .04 .04
billets -1.06 -1.06
rebars-sd 1.0
wire 1.0 ;
* data for the pig-ore and pig-pel processes were derived
* from bf no. 2 and bf no. 3 data for 1975 as reported in
* (9- vol i) table 3.3.6
* data for stl-oh-s are from same source table 3.4.6
Table ahyl(cs,ps) 'a matrix for hylsa in monterrey'
sponge stl-eaf-sp stl-eaf-s ingot slab-roll
pellets -1.38
nat-gas -.470 -.05
sponge 1.0 -1.09 -.60
scrap -.46 .05
ferro-allo -.012 -.012
refrac -.006 -.006
electrodes -.0052 -.0052
dolomite -.009 -.009
lime -.007 -.007
steel-liq 1.0 1.0 -1.02
steel-ing 1.0 -1.07
slabs 1.0
electric -.10 -.68 -.60
+ hot-sheet pickled cold-sheet annealed
scrap .05 .06 .02
slabs -1.07
plate
hot-strip 1.0 -1.06
pick-strip 1.0 -1.05
cold-strip 1.0 -1.0
anl-strip 1.0
+ tempered tinning
scrap .03 .01
anl-strip -1.04
temp-strip 1.0 -1.02
tin 1.0 ;
* data for eaf from (15), rolling processes from (9 vol ii)
* verify scrap generation and electricity
Table ahylp(cs,ps) 'a matrix for hylsa in puebla'
sponge stl-eaf-sp stl-eaf-s billets-cc
pellets -1.38
nat-gas -.420
sponge 1.0 -1.09
scrap -1.06
ferro-allo -.014 -.012
refrac -.006 -.006
electrodes -.0052 -.0052
dolomite -.009 -.009
lime -.007 -.007
steel-liq 1.0 1.0 -1.06
billets 1.0
electric -.010 -.68 -.50
+ lightshape bar-roll rebars-ld rebars-sd wire
scrap .04 .04 .04 .03 .03
billets -1.06 -1.06 -1.06 -1.05 -1.05
lightshape 1.0
bars 1.0
rebars-ld 1.0
rebars-sd 1.0
wire 1.0
electric -.03 -.025 -.025 -.03 -.03;
* rolling processes from (9-ii), sponge and st-eaf from plant visits and (15)
Table atam(cs,ps) 'a matrix for tamsa'
sponge stl-eaf-sp stl-eaf-s ingot
pellets -1.38
nat-gas -.50
sponge 1.0 -1.09
scrap -1.06
ferro-allo -.033 -.033
refrac -.006 -.006
electrodes -.0052 -.0052
dolomite -.009 -.009
lime -.007 -.007
steel-liq 1.0 1.0 -1.06
ing-blooms 1.0
electric -.01 -.68 -.50
+ billet-rol lightshape bar-roll seam-rol
scrap .01 .04 .04 .35
ing-blooms -1.03 -1.45
billets 1.0 -1.06 -1.06
lightshape 1.0
bars 1.0
seamless 1.0;
as(cs,ps,"sicartsa") = asic(cs,ps);
as(cs,ps,"ahmsa") = aahm(cs,ps);
as(cs,ps,"fundidora") = afund(cs,ps);
as(cs,ps,"hylsa") = ahyl(cs,ps);
as(cs,ps,"hylsap") = ahylp(cs,ps);
as(cs,ps,"tamsa") = atam(cs,ps);
Table bm(mm,pm) 'capacity utilization matrix for mines'
min-n min-s min-tr conc-s conc-tr conc-n min-co
mine-eq 1 1 1
conc-mag 1 1
conc-flot 1
mine-co 1;
Table br(mr,pr) 'capacity utilization for raw materials plants'
coke-hd pelt-c
coke-oven 1
pellet 1;
Table bs(ms,ps) 'capacity utilization matrix for steel mills'
coke-hd coke-hi pig-ore pig-sin pig-pel pig-pel-m
coke-oven 1 1
blast-furn 1 1 .96 1
+ sponge stl-oh-p stl-oh-s stl-oh-s2
blast-furn
direct-red 1
openhearth 1 1 1
+ stl-bof-p stl-bof-s stl-eaf-sp stl-eaf-s
bof 1 1
elec-arc 1 1
+ slabs-cc billets-cc ingot slab-roll bloom-roll
concas-sl 1
concas-bi 1
ingot-cast 1
primary-fl 1
primary-nf 1
+ billet-rol plate hot-sheet pickled cold-sheet
plate-mill 1
hot-mill 1
pickleline 1
cold-mill 1
billet 1
+ annealed tempered tinning heavyshape lightshape
anneal 1
tempermill 1
tin-line 1
heavysmill 1
bar-mill 1
+ bar-roll rebars-ld rebars-sd wire seam-rol
bar-mill 1 1
wire-mill 1 1
seaml-mill 1
+ pelt-c sinter
pellet 1
sinter 1;
$sTitle Capacity
Table km(mm,im) 'initial capacities for mines (1000 tpy)'
p-colorada lastruchas la-perla cerro-mer hercules
mine-eq 4000 2700 1000 3000 1000
conc-mag 4000 1500
conc-flot 1000 3000
+ la-chula el-encino coahuila
mine-eq 500 3000
conc-mag 3000
mine-co 7000;
Table kr(mr,ir) 'initial capacities for raw material plants (1000 tpy)'
penacol laperla alzada esperanzas
pellet 3000 600 1500
coke-oven 684;
Table ks(ms,is) 'initial capacities for steel mills (1000 tpy)'
sicartsa ahmsa fundidora hylsa hylsap tamsa
pellet 1850 750
sinter 1500
coke-oven 660 2100
blast-furn 1100 3247 1400
direct-red 660 1000 270
openhearth 1500 850
bof 1300 2070 1500
elec-arc 1000 560 450
concas-sl 710
concas-bi 1300 560
ingot-cast 2600 2000 1000 420
primary-fl 1850 1450 1000
primary-nf 1200
plate-mill 960 250
hot-mill 1600 870 900
pickleline 1600 575 650
cold-mill 1495 500 600
anneal 1348 420 450
tempermill 1225 520 450
tin-line 315 70
billet 1000 200
heavysmill 200
bar-mill 600 135 430 80
wire-mill 600 270 200
seaml-mill 280;
$onText
sicartsa
1. coke-oven (1) 2200 t/day = 660 mt/a based on stated coal mix
2. blast-furn (1) 3300 t/day with 330 days/year = 1100 mt/a
3. all capacities from (1) unless otherwise noted
ahmsa
1. all capacities from (10) unless otherwise noted
fundidora
1. coke plant is at the mine
2. all capacities from (12) unless otherwise noted
3. open hearth capacity is for steelshop no. 2 from (9 - vol i) table 3.4.3
hylsa
1. all capacities from (9 - vol i) unless otherwise noted
2. only rough estimates for pickle, annealing, and temper lines
3. monterrey visit april 1981
hylsap
1. data obtained during plant visit
tamsa
1. all capacities from(9 -vol i)
2. monterrey visit 1981
$offText
Parameter ut(is) 'capacity utilization' / sicartsa .5, (ahmsa,fundidora,tamsa) .9, hylsa 1, hylsap 1.1 /;
km(mm,im) = .9*km(mm,im);
kr(mr,ir) = .9*kr(mr,ir);
ks(ms,is) = ut(is)*ks(ms,is);
$sTitle Demand Data
Set ds 'demand data components' / demand, semi-int, adj-dem /;
Table mrod(cs,cs) 'map for disaggregating demand for reinforced bars to large and small diameters'
rebars-sd rebars-ld
rebars .4 .6;
Table demdat(cs,ds) 'demand and semi-intgrated output (1000 tpy)'
demand semi-int
plate 1050
hot-strip 600
temp-strip 1250
tin 400
heavyshape 300 130
lightshape 310 160
bars 340 155
rebars 1150 395
wire 600 190
seamless 800
rails 110 ;
Table regdem(cs,j) 'regional demand per product (% of total)'
mexico-df puebla queretaro san-luis monterrey
plate 63.5 0.2 0.3 0.3 31.0
hot-strip 41.9 2.8 1.6 2.8 36.2
temp-strip 45.1 2.5 4.5 1.1 41.7
tin 87.6 0.3 9.4
heavyshape 36.6 2.2 3.2 0.8 12.9
lightshape 74.4 2.5 1.9 1.8 8.1
bars 46.6 4.2 23.5 2.2 11.2
rebars 46.7 10.3 4.0 3.4 12.8
wire 61.2 5.3 3.9 3.7 12.2
seamless 10.5 28.0 0.4 0.2 18.4
rails 40.0 5.0 5.0 10.0 20.0
+ guadalaja l-cardenas coatzacoal
plate 4.5 0.1 0.1
hot-strip 12.6 0.5 1.6
temp-strip 4.3 0.4 0.4
tin 2.7
heavyshape 42.6 1.4 0.3
lightshape 8.9 1.6 0.8
bars 11.8 0.4 0.1
rebars 11.8 6.1 4.9
wire 9.8 1.9 2.0
seamless 1.8 1.7 39.0
rails 10.0 5.0 5.0;
* data base estimated
* rail distibution has been added in washington
demdat(cs,"adj-dem") = demdat(cs,"demand") - demdat(cs,"semi-int");
demdat(cf,"adj-dem")$sum(cs, mrod(cs,cf)) = sum(cs, mrod(cs,cf)*demdat(cs,"adj-dem"));
regdem(cf,j)$sum(cs, mrod(cs,cf)) = sum(cs$mrod(cs,cf), regdem(cs,j));
Parameter d(*,*) 'adjusted demand for semi-integr plants (1000 tpy)';
d(cf,j) = demdat(cf,"adj-dem")*regdem(cf,j)/100;
d(" total ",j) = sum(cf, d(cf,j));
d(cf," total ") = sum(j, d(cf,j));
d(" total "," total ") = sum(cf, d(cf," total "));
display demdat, regdem, d;
Parameter
emax(cf) 'export limit by product (1000 tpy)'
etot 'total export limit (1000 tpy)';
emax(cf) = 500;
etot = 250;
$sTitle Prices
Set sp 'domestic and international prices' / domestic, internat /;
Parameter mc(pm) 'mining cost (pesos per ton)' / min-co 250, (min-s,min-n,min-tr) 100 /;
Table prices(cs,sp) 'domestic and international prices of commodities'
domestic internat
* (79 pesos) (79 dollars)
ore-conc 28 // tons
pellets 430 45 // tons
coal-d 880 // tons
coal-i 63 // tons
coke 1200 100 // tons
fuel-oil 1000 // tons **** 1000liters
limestone 120 // tons
nat-gas 322 152 // 1000 m3
scrap 3050 120 // tons
ferro-allo 16000 // tons
refrac 50000 // tons
dolomite 800 // tons
lime 690 // tons
electrodes 48000 // tons
electric 552 // 1000 kwh
plate 347 // tons
hot-strip 393 // tons
temp-strip 373 // tons
tin 393 // tons
billets 300 // tons
heavyshape 338 // tons
lightshape 364 // tons
bars 350 // tons
rebars-ld 347 // tons
rebars-sd 368 // tons
wire 434 // tons
seamless 455 // tons
rails 345 // tons
* different prices for limestone: ahmsa 90, fundidora 60, sicartsa 120
* price of natural gas for sicartsa expansions: 30% lower.
Parameter
pd(cs) 'prices of domestic products (1979 pesos per unit)'
pv(cs) 'prices of imports (1979 us $ per ton)'
pe(cs) 'export prices (1979 us $ per ton)'
sh 'shadow exchange rate (1979 pesos per us$)';
sh = 25.0;
pd(craw) = prices(craw,"domestic");
pv(crv) = prices(crv,"internat");
pv(cfv) = prices(cfv,"internat");
pe(ce) = .8*prices(ce,"internat");
$sTitle Transport Data
Table rdsj(is,j) 'rail distances from steel mills to markets (km)'
mexico-df puebla queretaro san-luis monterrey
sicartsa 819 995 691 875 1305
ahmsa 1204 1300 849 592 218
fundidora 1017 1159 755 498
hylsa 1017 1159 755 498
hylsap 185 410 667 1085
tamsa 428 315 650 907 1330
+ guadalaja l-cardenas coatzacoal
sicartsa 704 1638
ahmsa 1125 1416 1850
fundidora 1030 1322 1756
hylsa 1030 1322 1756
hylsap 760 995 671
tamsa 1005 1239 550;
* data from (20) and (21)
* only steel plants included, since pellet and coke plants do not
* send final products to markets
Table rdss(is,is) 'rail distances between steel plants'
sicartsa ahmsa fundidora hylsa hylsap tamsa
ahmsa 1416
fundidora 1322 218
hylsa 1322 218 10
hylsap 995 1300 1159 1159
tamsa 1239 1499 1405 1405 315 ;
Table rdrs(ir,is) 'rail distances from raw material plants to steel mills'
sicartsa ahmsa fundidora hylsa hylsap tamsa
penacol 1037 1490 1396 1396 1116 1360
laperla 1797 403 621 621 1595 1703
alzada 920 1360 1260 1260 990 1300
esperanzas 1522 122 340 340 1422 1670;
* data from (19) and(20)
Table rdms(im,is) 'rail distances from mines to steel plants'
sicartsa ahmsa fundidora hylsa hylsap tamsa
p-colorada 1037 1490 1396 1396 1116 1360
lastruchas 1416 1322 1322 995 1239
la-perla 1797 403 621 621 1595 1927
cerro-mer 1275 677 636 636 1245 1489
hercules 1613 219 563 563 1411 1655
la-chula 1044 1480 1300 1300 1112 1356
el-encino 965 1401 1307 1307 1033 1277
coahuila 1500 120 400 400 1420 1700;
Table rdmr(im,ir) 'rail distances from mines to raw material plants'
penacol laperla alzada esperanzas
p-colorada 1803 70
lastruchas 1037 1797 920
la-perla 1803 1800
cerro-mer 1500 400 1500
hercules 1616 400 1600
la-chula 90 1800 60
el-encino 90 1800 40
coahuila 15;
* data from (19)
* data from (18)
* distances from coal mines to pellet plants not included for obviou
Table rdps(*,is) 'rail distances from nearest port to steel mill'
sicartsa ahmsa fundidora hylsa hylsap tamsa
gulf 1239 739 521 521 315
pacific 1416 1322 1322 995 1239;
* data from (19) and (20)
* distances in this table are from plant to nearest port.
* for gulf: sicartsa,hylsap,tamsa and new-manz po veracruz.
* ahmsa,fundidora,hylsa,naw-tamp to tampico.
* new-coat to coatzacoalcos.
* for pacific: all plants to lazaro carenas, axcept fpr
* new-manz to manzanillo
Table rdpj(*,j) 'rail distances from nearest port to markets'
mexico-df puebla queretaro san-luis monterrey
gulf 428 315 650 444 521
pacific 819 995 691 875 1305
+ guadalaja l-cardenas coatzacoal
gulf 995 1239
pacific 300 1638;
* data base from (20) and (21)
* nearest ports for
* gulf: veracruz to mexico-df,puebla,queretaro,toluca,l-cardenas
* tampico to san-luis,guadalajara
* matamoros to monterrey
* coatzacoalcos to coatzacoal
* pacific: all to lazaro cardenas, except for manzanillo to guadalaja
* mines - iron ore and coal mines
* plants - raw material plants
* mills - steel mills
Parameter
mumr(im,ir) 'transport cost: mines to plants (us$ per ton)'
mums(im,is) 'transport cost: mines to mills (us$ per ton)'
murs(ir,is) 'transport cost: plants to mills (us$ per ton)'
muss(is,is) 'transport cost: between mills (us$ per ton)'
musj(is,j) 'transport cost: mills to markets (us$ per ton)'
mupsr(is) 'transport cost: ports to mills - raw material (us$ per ton)'
muspf(is) 'transport cost: mills to ports - final product ($ per ton)'
mupj(j) 'transport cost: ports to markets (us$ per ton)';
rdps("short",is) = min(rdps("gulf",is) ,rdps("pacific",is));
rdss(is,isp) = max(rdss(is,isp),rdss(isp,is));
rdpj("short",j) = min(rdpj("gulf",j ),rdpj("pacific",j));
mumr(im,ir) = (35 + .11*rdmr(im,ir))$rdmr(im,ir);
mums(im,is) = (35 + .11*rdms(im,is))$rdms(im,is);
murs(ir,is) = (35 + .11*rdrs(ir,is))$rdrs(ir,is);
muss(is,isp) = (35 + .11*rdss(is,isp))$rdss(is,isp);
mupsr(is) = (35 + .11*rdps("short",is))$rdps("short",is);
musj(is,j) = (60 + .19*rdsj(is,j))$rdsj(is,j);
muspf(is) = (60 + .19*rdps("short",is))$rdps("short",is);
mupj(j) = (60 + .19*rdpj("short",j))$rdpj("short",j);
* data base from (19) and (20)
* old figures were 57.16 + .194 and 17.46 + .106
display mumr, mums, murs, muss, musj, mupsr, muspf, mupj;
Parameter
loss(cs) 'correction factor for coke losses during intermill shipments of coke'
pct(o) 'share of pellet shipments from pena colarada by ownership'
/ 2 .46, 3 .1, 4 .26, 5 .18 /;
loss(cs) = 1;
loss("coke") = 0.9;
$sTitle Model Reduction
Set
mmpos(mm,im) 'productive unit possibility: mines'
mrpos(mr,ir) 'productive unit possibility: raw material plants'
mspos(ms,is) 'productive unit possibility: steel mills'
pmpos(pm,im) 'process possibility: mines'
prpos(pr,ir) 'process possibility: raw material plants'
pspos(ps,is) 'process possibility: steel mills'
cmposp(cs,im) 'commodity production possibility: mines'
crposp(cs,ir) 'commodity production possibility: raw material plants'
csposp(cs,is) 'commodity production possibility: steel mills'
cmposn(cs,im) 'commodity consumption possibility: mines'
crposn(cs,ir) 'commodity consumption possibility: raw material plants'
csposn(cs,is) 'commodity consumption possibility: steel mills';
mmpos(mm,im) = yes$km(mm,im);
mrpos(mr,ir) = yes$kr(mr,ir);
mspos(ms,is) = yes$ks(ms,is);
pmpos(pm,im)$sum(cm, am(cm,pm)$res(cm,im) <> 0 ) =
yes$(sum(mm$(not mmpos(mm,im)), bm(mm,pm) <> 0) = 0);
prpos(pr,ir)$sum(cr, ar(cr,pr) <> 0 ) =
yes$(sum(mr$(not mrpos(mr,ir)), br(mr,pr) <> 0) = 0);
pspos(ps,is)$sum(cs, as(cs,ps,is) <> 0 ) =
yes$(sum(ms$(not mspos(ms,is)), bs(ms,ps) <> 0) = 0);
cmposp(cm,im) = yes$sum(pm$pmpos(pm,im), am(cm,pm) > 0);
crposp(cr,ir) = yes$sum(pr$prpos(pr,ir), ar(cr,pr) > 0);
csposp(cs,is) = yes$sum(ps$pspos(ps,is), as(cs,ps,is) > 0);
cmposn(cm,im) = yes$sum(pm$pmpos(pm,im), am(cm,pm) < 0);
crposn(cr,ir) = yes$sum(pr$prpos(pr,ir), ar(cr,pr) < 0);
csposn(cs,is) = yes$sum(ps$pspos(ps,is), as(cs,ps,is) < 0);
display mmpos, mrpos, mspos, pmpos, prpos, pspos, cmposp, crposp,
csposp, cmposn, crposn, csposn;
Set
imres(im) 'restricted mines' / lastruchas /
imfree(im) 'free mines'
xmpos(cs,im,*) 'possible shipments of mining products to raw mat plants';
imfree(im) = yes - imres(im);
xmpos("coal-d","coahuila","esperanzas") = yes;
xmpos("ore-conc","p-colorada","penacol") = yes;
xmpos("ore-conc","la-perla","laperla") = yes;
xmpos("ore-conc","el-encino","alzada") = yes;
xmpos(cm,"lastruchas","sicartsa") = yes;
xmpos(cm,imfree,is) = yes;
$sTitle Equations
Equation
mbm(cm,im) 'material balance: mines (1000 tpy)'
mbr(cr,ir) 'material balance: raw material plants (1000 units tpy)'
mbs(cs,is) 'material balance: steel mills (1000 units tpy)'
ccm(mm,im) 'capacity constraint: mines (1000 tpy)'
ccr(mr,ir) 'capacity constraint: raw material plants (1000 tpy)'
ccs(ms,is) 'capacity constraint: steel mills (1000 tpy)'
mreq(cf,j) 'market requirements (1000 tpy)'
me(cf) 'export bounds (1000 tpy)'
me2 'total exports (1000 tpy)'
pelpc(o) 'pellet shipments from pena colarada (1000 tpy)'
pelal 'pellet shipments from alzada (1000 tpy)'
acost 'accounting: total cost (mill us$)'
arec 'accounting: recurrent cost (mill us$)'
atrans 'accounting: transport cost (mill us$)'
aimp 'accounting: import cost (mill us$)'
aexp 'accounting: export revenue (mill us$)';
Variable
zm(pm,im) 'process level: mines (1000 tpy)'
zr(pr,ir) 'process level: raw material plants (1000 tpy)'
zs(ps,is) 'process level: steel mills (1000 tpy)'
xm(cs,im,*) 'shipments: mine products (1000 tpy)'
xr(cs,ir,is) 'shipments: from raw material plants (1000 tpy)'
xs(cs,is,isp) 'shipments: interplant (1000 tpy)'
xf(cs,is,j) 'shipments: final products (1000 tpy)'
ur(cs,ir) 'domestic products purchase: raw mat. plants (1000 units tpy)'
us(cs,is) 'domestic products purchase: steel mills (1000 units tpy)'
e(cs,is) 'exports (1000 tpy)'
vs(cs,is) 'imports to steel mills (1000 tpy)'
vf(cs,j) 'import of final products (1000 tpy)'
cost 'total cost (mill us$)'
recurrent 'cost (mill us$)'
transport 'cost (mill us$)'
import 'cost (mill us$)'
export 'cost (mill us$)';
Positive Variable zm, zr, zs, xm, xr, xs, xf, ur, us, e, vs, vf;
mbm(cm,im).. sum(pm$pmpos(pm,im), am(cm,pm)*zm(pm,im))
=g= ( sum(ir$(xmpos(cm,im,ir)*crposn(cm,ir)), xm(cm,im,ir))
+ sum(is$(xmpos(cm,im,is)*csposn(cm,is)), xm(cm,im,is)))$cmposp(cm,im);
mbr(cr,ir).. sum(pr$prpos(pr,ir), ar(cr,pr)*zr(pr,ir))
+ (sum(im$(cmposp(cr,im)*xmpos(cr,im,ir)), xm(cr,im,ir))$cmr(cr) + ur(cr,ir)$craw(cr))$crposn(cr,ir)
=g= sum(is$(crs(cr)*crposp(cr,ir)*csposn(cr,is)), xr(cr,ir,is));
mbs(cs,is).. sum(ps$pspos(ps,is), as(cs,ps,is)*zs(ps,is))
+ ( sum(im$(cmposp(cs,im)*xmpos(cs,im,is)), xm(cs,im,is))$cms(cs)
+ sum(ir$crposp(cs,ir), loss(cs)*xr(cs,ir,is))$crs(cs)
+ sum(isp$csposp(cs,isp), loss(cs)*xs(cs,isp,is))$css(cs)
+ us(cs,is)$craw(cs) + vs(cs,is)$crv(cs))$csposn(cs,is)
=g= ( sum(isp$csposn(cs,isp), xs(cs,is,isp))$css(cs)
+ sum(j, xf(cs,is,j))$cf(cs) + e(cs,is)$ce(cs))$csposp(cs,is);
ccm(mm,im)$mmpos(mm,im).. sum(pm$pmpos(pm,im), bm(mm,pm)*zm(pm,im)) =l= km(mm,im);
ccr(mr,ir)$mrpos(mr,ir).. sum(pr$prpos(pr,ir), br(mr,pr)*zr(pr,ir)) =l= kr(mr,ir);
ccs(ms,is)$mspos(ms,is).. sum(ps$pspos(ps,is), bs(ms,ps)*zs(ps,is)) =l= ks(ms,is);
mreq(cf,j).. sum(is$csposp(cf,is), xf(cf,is,j)) + vf(cf,j) =g= d(cf,j);
me(cf).. sum(is$csposp(cf,is), e(cf,is)) =l= emax(cf);
me2.. sum((cf,is)$csposp(cf,is), e(cf,is)) =l= etot;
pelpc(o).. sum(is$(own(o,is)*csposn("pellets",is)), xr("pellets","penacol",is)) =l= pct(o)*kr("pellet","penacol");
pelal.. sum(isex$csposn("pellets",isex), xr("pellets","alzada",isex)) =e= 0;
acost.. cost =e= recurrent + transport + sh*(import-export);
arec.. recurrent =e= ( sum((pm,im)$pmpos(pm,im), mc(pm)*zm(pm,im))
+ sum((craw,ir)$crposn(craw,ir), pd(craw)*ur(craw,ir))
+ sum((craw,is)$csposn(craw,is), pd(craw)*us(craw,is)))/1000;
atrans.. transport =e= ( sum((cmr,im,ir)$(cmposp(cmr,im)*xmpos(cmr,im,ir)*crposn(cmr,ir)), mumr(im,ir)*xm(cmr,im,ir))
+ sum((cms,im,is)$(cmposp(cms,im)*csposn(cms,is)*xmpos(cms,im,is)), mums(im,is)*xm(cms,im,is))
+ sum((crs,ir,is)$(crposp(crs,ir)*csposn(crs,is)), murs(ir,is)*xr(crs,ir,is))
+ sum((css,is,isp)$(csposp(css,is)*csposn(css,isp)), muss(is,isp)*xs(css,is,isp))
+ sum((cf,is,j)$csposp(cf,is), musj(is,j)*xf(cf,is,j))
+ sum((crv,is)$csposn(crv,is), mupsr(is)*vs(crv,is))
+ sum((cf,is)$csposp(cf,is), muspf(is)*e(cf,is)) + sum((cf,j), mupj(j)*vf(cf,j)))/1000;
aimp.. import =e= (sum((crv,is)$csposn(crv,is), pv(crv)*vs(crv,is)) + sum((cfv,j), pv(cfv)*vf(cfv,j)))/1000;
aexp.. export =e= (sum((ce,is)$csposp(ce,is), pe(ce)*e(ce,is)))/1000;
Model one / all /;
* define run 1
vs.up("coke",is) = 0;
us.up("scrap",is) = 0;
ks(ms,"ahmsa") = ks(ms,"ahmsa")*0.9;
ks(ms,"fundidora") = ks(ms,"fundidora")*0.95;
display ks;
solve one minimizing cost using lp;