splcge.gms : A Simple CGE Model

Description

No description.


Small Model of Type : NLP


Category : GAMS Model library


Main file : splcge.gms

$title A Simple CGE Model in Ch. 5 (SPLCGE,SEQ=275)

$onText
No description.


Hosoe, N, Gasawa, K, and Hashimoto, H
Handbook of Computible General Equilibrium Modeling
University of Tokyo Press, Tokyo, Japan, 2004

Keywords: nonlinear programming, general equilibrium model, social accounting
          matrix, utility maximization problem
$offText

Set
   u    'SAM entry' / BRD, MLK, CAP, LAB, HOH /
   i(u) 'goods'     / BRD, MLK                /
   h(u) 'factor'    /           CAP, LAB      /;

Alias (u,v), (i,j), (h,k);

Table SAM(u,v) 'social accounting matrix'
         BRD   MLK   CAP   LAB   HOH
   BRD                            15
   MLK                            35
   CAP     5    20
   LAB    10    15
   HOH                25    25      ;

* Loading the initial values
Parameter
   X0(i)   'household consumption of the i-th good'
   F0(h,j) 'the h-th factor input by the j-th firm'
   Z0(j)   'output of the j-th good'
   FF(h)   'factor endowment of the h-th factor';

X0(i)   = SAM(i,"HOH");
F0(h,j) = SAM(h,j);
Z0(j)   = sum(h, F0(h,j));
FF(h)   = SAM("HOH",h);

display X0, F0, Z0, FF;

* Calibration
Parameter
   alpha(i)  'share parameter in utility function'
   beta(h,j) 'share parameter in production function'
   b(j)      'scale parameter in production function';

alpha(i)  = X0(i)/sum(j, X0(j));
beta(h,j) = F0(h,j)/sum(k, F0(k,j));
b(j)      = Z0(j)/prod(h, F0(h,j)**beta(h,j));

display alpha, beta, b;

Variable
   X(i)   'household consumption of the i-th good'
   F(h,j) 'the h-th factor input by the j-th firm'
   Z(j)   'output of the j-th good'
   px(i)  'demand price of the i-th good'
   pz(j)  'supply price of the i-th good'
   pf(h)  'the h-th factor price'
   UU     'utility [fictitious]';

Equation
    eqX(i)   'household demand function'
    eqpz(i)  'production function'
    eqF(h,j) 'factor demand function'
    eqpx(i)  'good market clearing condition'
    eqpf(h)  'factor market clearing condition'
    eqZ(i)   'price equation'
    obj      'utility function [fictitious]';

eqX(i)..   X(i)   =e= alpha(i)*sum(h, pf(h)*FF(h))/px(i);

eqpz(j)..  Z(j)   =e= b(j)*prod(h, F(h,j)**beta(h,j));

eqF(h,j).. F(h,j) =e= beta(h,j)*pz(j)*Z(j)/pf(h);

eqpx(i)..  X(i)   =e= Z(i);

eqpf(h)..  sum(j, F(h,j)) =e= FF(h);

eqZ(i)..   px(i)  =e= pz(i);

obj..      UU     =e= prod(i, X(i)**alpha(i));

* Initializing variables
X.l(i)   = X0(i);
F.l(h,j) = F0(h,j);
Z.l(j)   = Z0(j);
px.l(i)  = 1;
pz.l(j)  = 1;
pf.l(h)  = 1;

* Setting lower bounds to avoid division by zero
X.lo(i)   = 0.001;
F.lo(h,j) = 0.001;
Z.lo(j)   = 0.001;
px.lo(i)  = 0.001;
pz.lo(j)  = 0.001;
pf.lo(h)  = 0.001;

pf.fx("LAB") = 1;

Model splcge / all /;

solve splcge maximizing UU using nlp;