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;