chenery.gms : Substitution and Structural Change
This model follows conventional input-output formulations for production
with nonlinear demand functions, import and export functions and production
functions for direct factor use.
Reference:
- Chenery, H B, and Raduchel, W J, Substitution and Structural Change. In Chenery, H B, Ed, Structural Change and Development Policy. Oxford University Press, New York and Oxford, 1979.
Small Model of Type: NLP
$Title Substitution and Structural Change (CHENERY,SEQ=33)
$Ontext
This model follows conventional input-output formulations for production
with nonlinear demand functions, import and export functions and production
functions for direct factor use.
Chenery, H B, and Raduchel, W J, Substitution and Structural Change.
In Chenery, H B, Ed, Structural Change and Development Policy. Oxford
University Press, New York and Oxford, 1979.
$Offtext
Sets i sectors / light-ind, food+agr, heavy-ind, services /
t(i) tradables / light-ind, food+agr, heavy-ind /
lmh possible elasticities / low, medium, high /
sde other parameters / subst, distr, effic /
Alias (i,j)
Table aio(i,i) input coefficients
light-ind food+agr heavy-ind services
food+agr .1
heavy-ind .2 .1
services .2 .3 .1
***
* In the next 3 tables data is specified for many different possible
* hypotheses about the economy. One particular subset is used for any
* individual model. See assignment statements below.
***
Table pdat(lmh,*,sde,i) production data
light-ind food+agr heavy-ind services
low.a.subst
low.a.distr .915 .944 2.60 .80
low.a.effic 3.83 3.24 4.0 1.8
low.b.subst
low.b.distr .276 1.034 2.60 .77
low.b.effic 2.551 3.39 4.0 1.77
medium.a.subst .11 .29 .2 .05
medium.a.distr .326 .443 .991 .00798
medium.a.effic 3.97 3.33 1.67 1.84
medium.b.subst .22 .58 .4 .1
medium.b.distr .41 .47 .92 .08
medium.b.effic 3.99 3.33 1.8 1.89
high.a.subst .45 1.15 .4 .2
high.a.distr .456 .483 .917 .23
high.a.effic 4.0 3.33 1.8 1.92
high.b.subst .93 1.15 .8 .4
high.b.distr .484 .483 .769 .344
high.b.effic 4.0 3.33 1.96 1.96
Table ddat(lmh,*,i) demand parameters
light-ind food+agr heavy-ind services
(low,medium,high).ynot 100 230 220 450
medium.p-elas -.674 -.246 -.587 -.352
high .p-elas -1 -1 -1 -1
Table tdat(lmh,*,t) trade parameters
light-ind food+agr heavy-ind
medium.alp .005 .001 .01
high .alp .0025 .0005 .00178
(medium,high).gam 1.0 1.1 1.0
(medium,high).xsi .005 .0157 .00178
Parameter mew(t) intercept on import cost function
xsi(t) slope of import cost function
gam(t) intercept on export revenue function
alp(t) slope of export revenue function
ynot(i) demands in base year
sig(i) elasticity of substitution capital to labor
thet(i) price elasticity of demand
rho(i) substitution parameter in production functions
del(i) distribution parameter in production functions
efy(i) efficiency parameter in production functions ;
Scalar lbar total supply of labor / 750. /
plab price of labor / 1. /
kbar capital stock / 500 /
dbar trade deficit / 0 / ;
Variables x(i) quantity of output
v(i) value added per unit output at current prices
y(i) final consumption
p(i) prices
l(i) labor use per unit of output
k(i) capital use per unit of output
e(i) quantity of exports
m(i) quantity of imports
g(t) foreign exchange cost of imports
h(t) foreign exchange value of exports
pk nominal market price of capital
pi factor price ratio
pd price deflator
td total demand
vv(i) intermediate result ;
Positive Variables x,y,e,m,g,h,p,k,l,v ;
Equations dty total demand: definition
mb(i) material balance
tb trade balance
dg(t) definition of imports
dh(t) definition of exports
dem(i) demand equations
lc labor constraint
kc capital constraint
sup(i) supply equations
fpr factor price ratio definition
dvv(i) definition of vv
dl(i) definition of labor coefficient
dk(i) definition of capital coefficient
dv(i) value added ;
***
* the naming convention followed below is -
* endogenous variables have 1 or 2 character names
* exogenous parameters have 3 or more characters
***
dty.. td =e= sum(i, y(i)) ;
mb(i).. x(i) =g= y(i) + sum(j, aio(i,j)*x(j)) + ( e(i) - m(i) )$t(i) ;
tb.. sum(t, g(t)*m(t) - h(t)*e(t)) =l= dbar ;
dg(t).. g(t) =e= mew(t) + xsi(t)*m(t) ;
dh(t).. h(t) =e= gam(t) - alp(t)*e(t) ;
dem(i).. y(i) =e= ynot(i)*(pd*p(i))**thet(i) ;
lc.. sum(i, l(i)*x(i)) =l= lbar ;
kc.. sum(i, k(i)*x(i)) =e= kbar ;
sup(i).. p(i) =e= sum(j, aio(j,i)*p(j)) + v(i) ;
fpr.. pi =e= pk/plab ;
dvv(i)$(sig(i) ne 0).. vv(i) =e= (pi*(1-del(i))/del(i))**(-rho(i)/(1+rho(i))) ;
dl(i).. l(i)*efy(i) =e= ((del(i)/vv(i) + (1-del(i)))**(1/rho(i)) )$(sig(i) ne 0) + 1$(sig(i) eq 0) ;
dk(i).. k(i)*efy(i) =e= ((del(i) + (1-del(i))*vv(i))**(1/rho(i)) )$(sig(i) ne 0) + del(i)$(sig(i) eq 0) ;
dv(i).. v(i) =e= pk*k(i) + plab*l(i) ;
Model chenrad chenery raduchel model / all / ;
* bounds for variables
y.up(i) = 2000 ; x.up(i) = 2000 ; e.up(t) = 400 ; m.up(t) = 400 ;
g.up(t) = 4 ; h.up(t) = 4 ; p.up(i) = 100 ;
p.lo(i) = 0.1 ;
l.up(i) = 1 ; k.up(i) = 1 ;
pk.lo = 0.25 ; pk.up = 4 ;
pi.lo = 0.25 ; pi.up = 4 ;
v.up(i) = 100 ;
vv.lo(i) = 0.001 ;
***
* select coefficient values for this run
***
mew(t) = 1.0 ;
xsi(t) = tdat("medium","xsi",t) ;
gam(t) = tdat("medium","gam",t) ;
alp(t) = tdat("medium","alp",t) ;
ynot(i)= ddat("medium","ynot",i) ;
thet(i)= ddat("medium","p-elas",i) ;
sig(i) = pdat("medium","a","subst",i) ;
del(i) = pdat("medium","a","distr",i) ;
efy(i) = pdat("medium","a","effic",i) ;
rho(i)$(sig(i) ne 0) = 1./sig(i) - 1. ;
* initial values for variables
y.l(i) = 250 ; x.l(i) = 200 ;
e.l(t) = 0 ; m.l(t) = 0 ;
g.l(t) = mew(t) + xsi(t)*m.l(t) ;
h.l(t) = gam(t) - alp(t)*e.l(t) ;
pd.l = 0.3 ; p.l(i) = 3 ;
pk.l = 3.5 ;
pi.l = pk.l/plab ;
vv.l(i)$sig(i) = (pi.l*(1-del(i))/del(i))**(-rho(i)/(1+rho(i))) ;
l.l(i) = (((del(i)/vv.l(i) + (1-del(i)))**(1/rho(i)) )$(sig(i) ne 0)
+ 1$(sig(i) eq 0))/efy(i) ;
k.l(i) = (((del(i) + (1-del(i))*vv.l(i))**(1/rho(i)) )$(sig(i) ne 0)
+ del(i)$(sig(i) eq 0))/efy(i) ;
v.l(i) = pk.l*k.l(i) + plab*l.l(i) ;
* add bounds to avoid function evaluation errors
pd.lo = 0.01; p.lo(i) = 0.1;
Solve chenrad using nlp maximizing td ;
Scalar cva total value added at current prices
rva real value added
fve foreign exchange value of exports
emp total employment
cli cost of living index ;
cva = sum(i,v.l(i)*x.l(i)) ;
fve = sum(t,e.l(t)*h.l(t)) ;
emp = sum(i, l.l(i)*x.l(i)) ;
cli = sum(i, p.l(i)*ynot(i))/sum(i, ynot(i)) ;
rva = cva/cli ;
Display cli,cva,rva,fve,emp ;