hansmge.gms : Hansen's Activity Analysis Example - MPSGE

Description

Hansen's Activity Analysis Example - MPSGE.


Small Model of Types : MPSGE mcp


Category : GAMS Model library


Main file : hansmge.gms

$title Hansen's Activity Analysis Example - MPSGE (HANSMGE,SEQ=147)

$onText
Hansen's Activity Analysis Example - MPSGE.


Scarf, H, and Hansen, T, The Computation of Economic Equilibria.
Yale University Press, 1973.

Keywords: mixed complementarity problem, general equilibrium model, activity analysis,
          social accounting matrix, European regional policy
$offText

Set
   C    'commodities' / AGRIC, FOOD, TEXTILES, HSERV,   ENTERT, HOUSEOP, CAPEOP
                        STEEL, COAL, LUMBER,   HOUSBOP, CAPBOP, LABOR,   EXCHANGE /
   N(C) 'numeraire'   / LABOR /
   H    'consumers'   / AGENT1*AGENT4 /
   S    'sectors'     / DOM1*DOM12, IMP1*IMP7, EXP1*EXP7 /;

Alias (C,CC);

Table E(C,H) 'commodity endowments'
              AGENT1  AGENT2  AGENT3  AGENT4
   HOUSBOP         2     0.4             0.8
   CAPBOP          3       2             7.5
   LABOR         0.6     0.8       1     0.6;

Table D(C,H) 'reference demands'
              AGENT1  AGENT2  AGENT3  AGENT4
   AGRIC         0.1     0.2     0.3     0.1
   FOOD          0.2     0.2     0.2     0.2
   TEXTILES      0.1     0.1     0.3     0.1
   HSERV         0.1     0.1     0.1     0.1
   ENTERT        0.1     0.1     0.1     0.1
   HOUSEOP       0.3     0.1             0.1
   CAPEOP        0.1     0.2             0.3;

Parameter ESUB(H) 'elasticities in demand' / AGENT1 1, AGENT2 1, AGENT3 1, AGENT4 1 /;

Table DATA(*,C,S) 'activity analysis matrix'
                     DOM1   DOM2  DOM3  DOM4   DOM5
   OUTPUT.AGRIC      5.00
   OUTPUT.FOOD              5.00
   OUTPUT.TEXTILES                2.00
   OUTPUT.HSERV                         2.00
   OUTPUT.ENTERT                               4.00
   OUTPUT.HOUSEOP                       0.32
   OUTPUT.CAPEOP     0.40   1.30  1.20
   INPUT .AGRIC             3.50  0.10         0.70
   INPUT .FOOD       0.90         0.10         0.80
   INPUT .TEXTILES   0.20   0.50        0.10   0.10
   INPUT .HSERV      1.00   2.00  2.00         2.00
   INPUT .STEEL      0.20   0.40  0.20  0.10
   INPUT .COAL       1.00   0.10  0.10  1.00
   INPUT .LUMBER     0.50   0.40  0.30  0.30
   INPUT .HOUSBOP                       0.40
   INPUT .CAPBOP     0.50   1.50  1.50  0.10   0.10
   INPUT .LABOR      0.40   0.20  0.20  0.02   0.40

   +                 DOM6   DOM7  DOM8  DOM9  DOM10
   OUTPUT.HOUSEOP    0.80
   OUTPUT.CAPEOP     1.10   6.00  1.80  1.20   0.40
   OUTPUT.STEEL                   2.00
   OUTPUT.COAL                          2.00
   OUTPUT.LUMBER                               1.00
   INPUT .TEXTILES   0.80   0.40  0.10  0.10   0.10
   INPUT .HSERV      0.40   1.80  1.60  0.80   0.20
   INPUT .STEEL      1.00   2.00        0.50   0.20
   INPUT .COAL              0.20  1.00         0.20
   INPUT .LUMBER     3.00   0.20  0.20  0.50
   INPUT .CAPBOP     1.50   2.50  2.50  1.50   0.50
   INPUT .LABOR      0.30   0.10  0.10  0.40   0.40

   +                DOM11  DOM12  IMP1  IMP2   IMP3
   OUTPUT.AGRIC                   1.00
   OUTPUT.FOOD                          1.00
   OUTPUT.TEXTILES                             1.00
   OUTPUT.HOUSEOP           0.36
   OUTPUT.CAPEOP     0.90
   INPUT .HSERV                   0.40  0.20   0.20
   INPUT .HOUSBOP           0.40
   INPUT .CAPBOP     1.00         0.20  0.10   0.10
   INPUT .LABOR                   0.04  0.02   0.02
   INPUT .EXCHANGE                0.50  0.40   0.80

   +                 IMP4   IMP5  IMP6  IMP7   EXP1
   OUTPUT.CAPEOP     1.00
   OUTPUT.STEEL             1.00
   OUTPUT.COAL                    1.00
   OUTPUT.LUMBER                        1.00
   OUTPUT.EXCHANGE                             0.50
   INPUT .AGRIC                                1.00
   INPUT .HSERV      0.40   0.40  0.40  0.40   0.20
   INPUT .CAPBOP     0.20   0.20  0.20  0.20   0.20
   INPUT .LABOR      0.04   0.04  0.04  0.04   0.04
   INPUT .EXCHANGE   1.20   0.60  0.70  0.40

   +                 EXP2   EXP3  EXP4  EXP5   EXP6
   OUTPUT.EXCHANGE   0.40   0.80  1.20  0.60   0.70
   INPUT .FOOD       1.00
   INPUT .TEXTILES          1.00
   INPUT .HSERV      0.20   0.20  0.40  0.40   0.40
   INPUT .CAPEOP                  1.00
   INPUT .STEEL                         1.00
   INPUT .COAL                                 1.00
   INPUT .CAPBOP     0.10   0.10  0.20  0.20   0.20
   INPUT .LABOR      0.02   0.02  0.04  0.04   0.04

   +                 EXP7
   OUTPUT.EXCHANGE   0.40
   INPUT .HSERV      0.40
   INPUT .LUMBER     1.00
   INPUT .CAPBOP     0.20
   INPUT .LABOR      0.04 ;

$onText
$MODEL:HANSEN

$SECTORS:
   Y(S)

$COMMODITIES:
   P(C)

$CONSUMERS:
   HH(H)

$PROD:Y(S)
   O:P(C)   Q:DATA("OUTPUT",C,S)
   I:P(C)   Q:DATA("INPUT" ,C,S)

$DEMAND:HH(H) s:ESUB(H)
   D:P(C)   Q:D(C,H)
   E:P(C)   Q:E(C,H)
$offText

* READ THE HEADER:
$ifThen set MPSGEMT
$  log --- MPSGEMT has been set to %MPSGEMT% and initializes the -mt option
*  local -mt=0|1 would still overwrite the --MPSGEMT=0|1 from the command line,
*  but here we use now the one from the command line
$  sysInclude mpsgeset HANSEN -mt=%MPSGEMT%
$else
$  sysInclude mpsgeset HANSEN
$endIf

P.fx(C)$(ord(C) = 1) = 1;

* GENERATE AND SOLVE THE MODEL:

* Try first to find the GEN file in the scratch directory (-mt=1)
* and if this does not exist try to find in the working directory
$ifThen exist "%GAMS.SCRDIR%HANSEN.GEN"
$  include "%GAMS.SCRDIR%HANSEN.GEN"
$  if not %GAMS.KEEP%==1 $call rm "%GAMS.SCRDIR%HANSEN.GEN"
$else
$  include HANSEN.GEN
$endIf

solve HANSEN using mcp;