GAMS [ Home | Support | Sales | Solvers | Documentation | Model Libraries | Search | Contact Us ]

prolog.gms : Market Equilibrium and Activity Analysis


A nonlinear programming model is used to find the market
equilibrium for a model with activity analysis containing
multiple production technologies. The calibration or reconciliation
calculations are not shown in this version. In practice it may
be necessary to solve another nlp in order to find a consistent
initial point. Also, the shadow prices on commodity balances
and resource constraints are not always as reported in the reference.
only if some variables (and equations) are substituted out and
all constraints are set to =e= will the reported relationship hold.

Reference:
Small Model of Type: NLP
$Title Market Equilibrium and Activity Analysis (PROLOG,SEQ=41) $Ontext A nonlinear programming model is used to find the market equilibrium for a model with activity analysis containing multiple production technologies. The calibration or reconciliation calculations are not shown in this version. In practice it may be necessary to solve another nlp in order to find a consistent initial point. Also, the shadow prices on commodity balances and resource constraints are not always as reported in the reference. only if some variables (and equations) are substituted out and all constraints are set to =e= will the reported relationship hold. Norton, R D, and Scandizzo, P L, Market Equilibrium Computations in Activity Analysis Models. Operations Research 29, 2 (1981). $Offtext Sets i commodities / food, h-industry, l-industry / g(i) goods demanded / food, l-industry / k resources / labor, capital / h households / workers, enterpr / t technologies / tech-1, tech-2, tech-3 / Alias (i,j), (g,gp) ; Table a(i,j) input-output matrix food h-industry l-industry food .060 .244 h-industry .064 .420 .172 l-industry .048 .247 .084 Table d(i,k,t) resource technology matrix labor.tech-1 capital.tech-1 labor.tech-2 capital.tech-2 labor.tech-3 capital.tech-3 food 1.0 2.0 1.2 1.8 .8 2.2 h-industry 2.0 3.0 1.8 3.5 2.4 2.3 l-industry 3.0 3.0 2.7 3.2 3.2 2.7 Table bb(h,k) resource endowment and ownership labor capital workers .900 .100 enterpr .100 .900 Table x0(i,h) initial consumption workers enterpr food 352.0 430.0 l-industry 222.0 292.0 Parameters b(k) total resource endowment / labor = 3712, capital = 5000 / p0(i) initial prices / food = .5942, h-industry = 1.6167, l-industry = 1.31077 / y0(h) initial income q0(i) initial production r0 initial marginal product ; y0(h) = sum(g, x0(g,h)*p0(g)); r0 = sum(h, y0(h))/sum(k, b(k)); display y0, r0; $Stitle calibration of demand system and aggregation tests Parameters gamma(g,h) les parameter beta(g,h) les parameter alpha(g,h) budget shares al(g,h) linear demand intercept cl(g,h) income demand slope s(g,gp,h) cross price demand slope an(g,h) nonlinear demand constant eta(g,gp,h) price elasticities Table epsi(i,h) income elasticities workers enterpr food .8 .6 l-industry 1.14 1.26 Scalar omega money flexibility - frish / -2 / ; alpha(g,h) = p0(g)*x0(g,h)/y0(h); epsi(g,h) = epsi(g,h)/sum(gp, epsi(gp,h)*alpha(gp,h)); beta(g,h) = epsi(g,h)*alpha(g,h); gamma(g,h) = x0(g,h) + beta(g,h)*y0(h)/p0(g)/omega; eta(g,gp,h) = -gamma(gp,h)*p0(gp)*beta(g,h)/p0(g)/x0(g,h); eta(g,g ,h) = gamma(g ,h)*(1-beta(g,h))/x0(g,h) - 1; Display alpha, epsi, beta, gamma, eta; an(g,h) = x0(g,h)/prod(gp, p0(gp)**eta(g,gp,h))/y0(h)**epsi(g,h); cl(g,h) = epsi(g,h)*x0(g,h)/y0(h); s(g,gp,h) = eta(g,gp,h)*x0(g,h)/p0(gp); al(g,h) = x0(g,h) - sum(gp, s(g,gp,h)*p0(gp)) - cl(g,h)*y0(h); Display an, cl, s, al; Parameters etest(h) engel aggregation test htest(g,h) homogeneity test ctest(g,h) cournot aggregation test ; etest(h) = sum(g, epsi(g,h)*alpha(g,h)) -1 ; htest(g,h) = sum(gp, eta(g,gp,h)) + epsi(g,h) ; ctest(g,h) = sum(gp, alpha(gp,h)*eta(gp,g,h)) + alpha(g,h) ; Display etest, htest, ctest; $Stitle model definitions Variables z expenditure minus factor income p(i) prices of goods x(i,h) quantities consumed r(k) marginal product q(i,t) quantities produced y(h) income Positive variables x, q, p, r, y; Equations cb(i) commodity balances rc(k) resource constraint de(g,h) demand - linear expenditure system dl(g,h) demand - linear demand function dn(g,h) demand - nonlinear demand function bc(h) budget constraint id(h) income definition mp(i,t) marginal pricing condition zdef objective definition ; cb(i).. sum(h$g(i), x(i,h)) =l= sum(t, q(i,t) - sum(j, a(i,j)*q(j,t))); rc(k).. sum((i,t), d(i,k,t)*q(i,t)) =l= b(k); de(g,h).. x(g,h) =l= gamma(g,h) + beta(g,h)*( y(h) - sum(gp, gamma(gp,h)*p(gp)) )/p(g); dl(g,h).. x(g,h) =l= al(g,h) + sum(gp, s(g,gp,h)*p(gp)) + cl(g,h)*y(h); dn(g,h).. x(g,h) =l= an(g,h)*prod(gp, p(gp)**eta(g,gp,h))*y(h)**epsi(g,h); bc(h).. sum(g, x(g,h)*p(g)) =l= y(h); id(h).. y(h) =l= sum(k, bb(h,k)*b(k)*r(k)); mp(i,t).. p(i) =l= sum(j, a(j,i)*p(j)) + sum(k, d(i,k,t)*r(k)); zdef.. z =e= sum((g,h), x(g,h)*p(g)) - sum(k, b(k)*r(k)); Model nortone eles version / cb, rc, de, bc, id, mp, zdef / nortonl linear version / cb, rc, dl, bc, id, mp, zdef / nortonn nonlinear version / cb, rc, dn, bc, id, mp, zdef / ; x.l(i,h) = x0(i,h); p.l(i) = p0(i); y.l(h) = y0(h); r.l(k) = r0; * lower bounds are placed on price to avoid the trivial solution p=0. p.lo(i) = .2; Parameters wp(g) weights for price index pi price index yp real income; wp(g) = sum(h, x0(g,h)*p0(g))/sum(h, y0(h)); display wp; Solve nortonl maximizing z using nlp; pi("linear") = sum(g, wp(g)*p.l(g))/sum(g, wp(g)*p0(g)); yp("linear") = sum(h, y.l(h))/pi("linear"); Display pi, yp; Solve nortone maximizing z using nlp; pi("les") = sum(g, wp(g)*p.l(g))/sum(g, wp(g)*p0(g)); yp("les") = sum(h, y.l(h))/pi("les"); Display pi, yp; Solve nortonn maximizing z using nlp; pi("nonlin") = sum(g, wp(g)*p.l(g))/sum(g, wp(g)*p0(g)); yp("nonlin") = sum(h, y.l(h))/pi("nonlin"); Display pi, yp;