dmcmge.gms : Accounting for economic growth with new inputs

Description

Accounting for Economic Growth with New Inputs.


Reference

  • Feenstra, R C, and Markusen, J R, Accounting for Growth with New Inputs. International Economic Review 35, 2 (1994), 429-447.

Large Model of Types : MPSGE mcp


Category : GAMS Model library


Main file : dmcmge.gms

$title Accounting for Economic Growth with New Inputs (DMCMGE,SEQ=143)

$onText
Accounting for Economic Growth with New Inputs.


Markusen, J R, and Feenstra, R, Accounting for Growth with New Inputs, 1993.

Keywords: mixed complementarity problem, economic development, economic growth model,
          GAMS - MPSGE framework, economic resources
$offText

Set T 'time periods' / 1*12 /;

Alias (T,TP);

Scalar
   S0     /  4  /
   LS0    /  2  /
   KS0    /  1  /
   RS0    /  1  /
   X0     / 10  /
   LX0    /  4  /
   KX0    /  6  /
   N0     /  2  /
   LN0    / .8  /
   KN0    / 1.2 /
   Z0     / 12  /
   XZ0    / 10  /
   FZ0    /  2  /
   LSK0   /  1  /
   U0     /  2  /
   CU0    /  1  /
   CZU0   /  1  /
   SIGMA  'substitution elasticity'          /  6    /
   BETA   'substitution exponent'
   DELTA  'depreciation rate'                /  0.1  /
   RHO    'discount rate'                    /  0.25 /
   SL0    'base year labor'                  /100    /
   GLLOW  'lower bound on labor growth rate' /  0.02 /
   GLHIGH 'upper bound on labor growth rate' /  0.03 /
   SR0    'base year resources'              / 50    /
   GRLOW  'lower bound on resource growth'   /  0.01 /
   GRHIGH 'upper bound on resource growth'   /  0.03 /;

BETA = (SIGMA - 1)/SIGMA;

Parameter
   SL(T) 'labor supply    (noisy)'
   SR(T) 'resource supply (noisy)';

SL("1") = SL0;
SR("1") = SR0;

option SEED = 1001;

loop(T,
   SL(T+1) = SL(T)*(1 + GLLOW + (GLHIGH - GLLOW)*uniform(0,1));
   SR(T+1) = SR(T)*(1 + GRLOW + (GRHIGH - GRLOW)*uniform(0,1));
);

$onText
$MODEL:DMC

$SECTORS:
   S(T)
   X(T)
   N(T)
   Z(T)
   SK(T)
   UTIL(T)
   W

$COMMODITIES:
   UTOT
   L(T)
   K(T)
   R(T)
   CX(T)
   FC(T)
   C(T)
   CZ(T)
   U(T)

$CONSUMERS:
   CONS

$AUXILIARY:
   SUB(T)
   EXPAN(T)

$PROD:S(T) s:1
   O:C(T)    Q:S0
   I:L(T)    Q:LS0
   I:K(T)    Q:KS0
   I:R(T)    Q:RS0

$PROD:X(T) s:1
   O:CX(T)   Q:X0
   I:L(T)    Q:LX0
   I:K(T)    Q:KX0

$PROD:N(T) t:0 s:1
   O:FC(TP)$(ord(TP) >= ord(T))   Q:N0
   I:L(T)                         Q:LN0
   I:K(T)                         Q:KN0

$PROD:Z(T) s:1
   O:CZ(T)   Q:Z0    A:CONS   N:SUB(T)   M:-1
   I:CX(T)   Q:XZ0
   I:FC(T)   Q:FZ0

$PROD:SK(T)
   O:K(TP)$(ord(TP) >= ord(T))    Q:((1 - DELTA)**(ord(TP) - ord(T)))
   I:L(T)                         Q:LSK0

$PROD:UTIL(T) s:1
   O:U(T)    Q:U0
   I:C(T)    Q:CU0
   I:CZ(T)   Q:CZU0

$PROD:W s:1.5
   O:UTOT
   I:U(T)    Q:((1 + RHO)**(1 - ord(T)))

$DEMAND:CONS
   E:L(T)    Q:SL(T)
   E:R(T)    Q:SR(T)
   E:CZ(T)   R:EXPAN(T)
   D:UTOT

$CONSTRAINT:EXPAN(T)
   EXPAN(T) =g= Z0**(1/BETA)*Z(T)**(1/BETA) - Z0*Z(T);

$CONSTRAINT:SUB(T)
   SUB(T) =g= EXPAN(T)/(Z0*Z(T));
$offText

$sysInclude mpsgeset DMC

* OMIT THE IRTS STUFF FOR THE FIRST PASS:
EXPAN.fx(T) = 0;
SUB.fx(T)   = 0;

* SPECIFY A NUMERAIRE:
UTOT.fx = 1;

* GENERATE AND SOLVE THE CRTS MODEL:
$include DMC.GEN
solve DMC using mcp;

EXPAN.up(T) = +inf;
SUB.up(T)   = +inf;
EXPAN.l(T)  = Z0**(1/BETA)*Z.l(T)**(1/BETA) - Z0*Z.l(T);
SUB.l(T)    = EXPAN.l(T)/(Z0*Z.l(T));

* GENERATE AND SOLVE:
$include DMC.GEN
solve DMC using mcp;