Description
A spatial price equilibrium model is used to demonstrate different ways of modeling market behavior. In this version, we use EMP to model competetive and monopolistic markets. Harker, P T, Alternative Models of Spatial Competition. Operations Research 34, 3 (1986), 410-425. Harker model from GAMSLIB. Contributor: Steven Dirkse, June 2011
Small Model of Type : EQUIL
Category : GAMS EMP library
Main file : hark-monop.gms includes : hark-data.inc [html]
$title SPE model from Harker - monopolist and competetive versions (HARK-MONOP,SEQ=64)
$onText
A spatial price equilibrium model is used to demonstrate different
ways of modeling market behavior. In this version, we use EMP
to model competetive and monopolistic markets.
Harker, P T, Alternative Models of Spatial Competition. Operations
Research 34, 3 (1986), 410-425.
Harker model from GAMSLIB.
Contributor: Steven Dirkse, June 2011
$offText
$eolCom //
$include hark-data.inc
positive variables
t(n,n) transport quantity
d(n) demand quantity
s(n) supply quantity
;
variables
obj objective value
price(n) demand price
tc(n,n) per unit transportation cost
;
equations objDef, flowBal(n), priceDef(n), tcDef(n,n);
objDef.. obj =e= sum{L, price(L) * d(L)}
- sum{L, alpha(L) * s(L) + beta(L)*sqr(s(L))}
- sum{arc(i,j), tc(i,j)*t(i,j)};
flowBal(n).. s(n)$L(n) + sum{i$arc(i,n), t(i,n)} =g=
d(n)$L(n) + sum{j$arc(n,j), t(n,j)};
priceDef(L).. price(L) =e= rho(L) - eta(L)*d(L);
tcDef(arc(i,j)).. tc(i,j) =e= kappa(i,j) + nu(i,j)*sqr(t(i,j));
model hark / objDef, flowBal, priceDef, tcDef /;
set dummy 'order reports like the paper' / cspe2, cspeE, monop2, monop1, monop1t /;
parameters rep1 transport summary
rep2 supply demand and price summary
tab6 table VI from page 422 Harker paper;
s.l(L) = 25; d.l(L)=25;
solve hark maximizing obj using nlp;
repMonop(monop1t);
file myinfo / '%emp.info%' /;
// full monopoly power - plain-vanilla NLP so empty info file
putclose myinfo '* monop1: no dual equations';
solve hark maximizing obj using emp;
repMonop(monop1);
// monopoly in the demand market but not in transportation, so we use dualEqu
// to force monopolist to act as a price-taker in the transportation market
put myinfo '* monop2: act as a price taker by assuming tc is fixed';
putclose myinfo / 'dualEqu tcDef tc';
solve hark maximizing obj using emp;
repMonop(monop2);
// Classic Spatial Price Equilibrium (CSPE) assumes no monopoly power,
// neither in the demand market nor in transportation, so use dualEqu for both
put myinfo '* CSPE2';
put myinfo / 'dualEqu';
put / ' tcDef tc';
put / ' priceDef price';
putclose;
solve hark maximizing obj using emp;
repMonop(cspe2);
put myinfo '* CSPE2';
put myinfo / 'equilibrium';
put / 'max obj t d s objDef flowbal';
put / 'vi';
put / ' tcDef tc';
put / ' priceDef price';
putclose;
solve hark using emp;
repMonop(cspeE);
display rep1, rep2, tab6;