Description
General Equilibrium Variant of the von Thunen Model.
Small Model of Type : MCP
Category : GAMS Model library
Main file : vonthmcp.gms
$title General Equilibrium Variant of the von Thunen Model (VONTHMCP,SEQ=136)
$onText
General Equilibrium Variant of the von Thunen Model.
Rowse, Mackinnon, Samuelson, and von Thunen, General Equilibrium Variant
of the von Thunen Model.
Keywords: mixed complementarity problem, general equilibrium model, von Thunen model
$offText
Set
r 'regions' / r1*r12 /
c 'commodities' / wheat, rice, corn, barley /
h 'households' / worker, owner, porter /;
Scalar
ltot 'labor endowment' / 30 /
trns 'transport endowment' / 20 /;
Parameter
d(r) 'distance to region r'
a(r) 'area of region r'
t(c) 'transport requirement'
phi(c) 'cost function scale parameter'
beta(c) 'cost function share parameter'
alpha(*,h) 'demand function share';
d(r) = 5*(2*ord(r) - 1);
a(r) = 2*3.1415*d(r);
Table misc(*,*)
wheat rice corn barley leisure
phi 1 2 3 4
beta 0.9 0.7 0.5 0.3
t 0.015 0.006 0.004 0.01
worker 0.2 0.3 0.1 0.3 0.1
owner 0.3 0.3 0.2 0.2
porter 0.6 0.2 0.1 0.1 ;
phi(c) = misc("phi",c);
beta(c) = misc("beta",c);
t(c) = misc("t",c);
alpha(c,h) = misc(h,c);
alpha("leisure",h) = misc(h,"leisure");
Positive Variable
cst(r,c) 'unit cost function'
y(r,c) 'output level'
ip(r) 'intervention purchase'
pk(r) 'rental rate'
wp 'porter wage'
wl 'worker wage'
p(c) 'market price';
Equation
def_cst(r,c)
prf_y(r,c)
pkbnd(r)
mkt_k(r)
mkt_t
mkt_l
mkt_g(c);
def_cst(r,c).. phi(c)*cst(r,c) =g= (wl/beta(c))**beta(c)*(pk(r)/(1 - beta(c)))**(1 - beta(c));
prf_y(r,c).. cst(r,c) + t(c)*d(r)*wp =g= p(c);
pkbnd(r).. pk(r) =g= 0.0001*wl;
mkt_k(r).. a(r) - ip(r) =g= sum(c, y(r,c)*(1 - beta(c))*cst(r,c))/pk(r);
mkt_t.. trns =g= sum((r,c), t(c)*d(r)*y(r,c));
mkt_l.. wl*ltot =g= sum((r,c), y(r,c)*beta(c)*cst(r,c)) + alpha("leisure","porter")*ltot;
mkt_g(c).. p(c)*sum(r, y(r,c)) =g= alpha(c,"porter")*trns*wp
+ alpha(c,"worker")*ltot*wl
+ alpha(c,"owner")*sum(r, pk(r)*(a(r) - ip(r)));
p.lo(c) = 0.1;
pk.lo(r) = 0.001;
Model vonthun / def_cst.cst, prf_y.y, pkbnd.ip, mkt_k.pk, mkt_t.wp, mkt_l.wl, mkt_g.p /;
cst.l(r,c) = 1;
y.l(r,c) = 1;
ip.l(r) = 0;
pk.l(r) = 1;
wp.l = 1;
wl.l = 1;
p.l(c) = 1;
* use the labor wage as numeraire:
wl.fx = 1;
solve vonthun using mcp;
display y.l, cst.l;