orani.gms : A Miniature Version of Orani 78

**Description**

This mini version of ORANI, a multisector price endogenous model of Australia, demonstrates the percentage change formulation first applied by Johansen.

**Reference**

- Kendrick, D, Style in Multisector Modeling. In Hallet, A J H, Ed, Applied Decision Analysis and Economic Behavior. Kluwer and Nijhoff, Boston and The Hague, 1984.

**Small Model of Type :** LP

**Category :** GAMS Model library

**Main file :** orani.gms

```
$Title A Miniature version of Orani 78 (ORANI,SEQ=40)
$Inlinecom /* */
$Ontext
This mini version of ORANI, a multisector price endogenous model of
Australia, demonstrates the percentage change formulation first
applied by Johansen.
Kendrick, D, Style in Multisector Modeling. In Hughes-Hallet, J, Ed,
Applied Decision Analysis and Economic Behavior. Kluwer and Nijhoff,
Boston and The Hague, 1984.
$Offtext
Sets c commodities / food, clothing /
ca(c) agricultural commodities / food /
cm(c) manufacturing commodities / clothing /
f factors / labor, capital /
h households / families /
i industries / agric agriculture, manuf manufacturing /
s sources / domestic, imported /
ce(c,c) diagonal
Alias (c,cp), (s,sp), (i,ip) ;
ce(c,c) = yes ;
Display ce;
Table amc(c,s,*) accounting matrix for commodities
* industries households exports import
agric manuf families exp duty
food.domestic 10 8 17 19
clothing.domestic 15 1 34 1
food.imported 1 8 1 -1
clothing.imported 5 2 10 -5
Table amf(f,i) accounting matrix for factors
agric manuf
labor 20 20
capital 10 5
Table amq(c,i) accounting matrix for outputs
agric manuf
food 45 9
clothing 16 35
Table epsilon(c,s) income elasticities
domestic imported
food 1. 1.
clothing 1. 1.
Parameter amt(i) accounting matrix for column totals
gamma(c) export demand parameters / food .5, clothing .05 /
wl(i) share of total employment / agric .5, manuf .5 /
theta wage rate adjustment parameter ;
amt(i) = sum((c,s), amc(c,s,i)) + sum(f, amf(f,i)) ;
amc(c,s,"total") = sum(i, amc(c,s,i)) + amc(c,s,"families") + amc(c,s,"exp") + amc(c,s,"duty") ;
theta = 1 ;
Display amt, amc;
Parameters alpha(c,s,i) share of expenditure by industry
alphak(i) share of expenditure on capital
alphal(i) share of expenditure on labor
alphae(c,s) share of good cs in expenditure on commodity c
etabar(c,s,cp,sp) compensated price elasticities
sb(c,s) share of good cs in household budget
eta(c,s,cp,sp) uncompensated price elasticities
elevel base period export level - not a rate
m(c,i) industry market share
mlevel base period import level - not a rate ;
alpha(c,s,i) = amc(c,s,i)/sum(sp, amc(c,sp,i)) ;
alphak(i) = amf("capital",i)/sum(f, amf(f,i)) ;
alphal(i) = amf("labor",i)/sum(f, amf(f,i)) ;
alphae(c,s) = amc(c,s,"families")/sum(sp, amc(c,sp,"families"));
etabar(c,s,cp,sp) = alphae(cp,sp) ;
etabar(c,s,c,s) = -1. + alphae(c,s) ;
etabar(c,s,cp,sp)$( not ce(c,cp)) = 0. ;
sb(c,s) = amc(c,s,"families")/ sum((cp,sp), amc(cp,sp,"families")) ;
eta(c,s,cp,sp) = - epsilon(c,s)*sb(cp,sp) + etabar(c,s,cp,sp) ;
elevel = sum((c,s), amc(c,s,"exp")) ;
m(c,i) = amq(c,i)/sum(ip, amq(c,ip)) ;
mlevel = sum(c, amc(c,"imported","total")) ;
Parameters mu(c,s) weights for cpi
nm(c) share in total imports
nx(c) share in total exports
r(c,i) revenue share
sc(c,s,i) cost share
sk(i) cost share for capital
sl(i) cost share for labor
wc(c,s) share of consumption in demand
we(c) share of exports in demand
wi(c,s,i) share of intermediates in demand ;
mu(c,s) = sb(c,s) ;
nm(c) = amc(c,"imported","total")/sum(cp, amc(cp,"imported","total")) ;
nx(c) = amc(c,"domestic","exp")/sum(cp, amc(cp,"domestic","exp")) ;
r(c,i) = amq(c,i)/sum(cp, amq(cp,i)) ;
sc(c,s,i) = amc(c,s,i)/amt(i) ;
sk(i) = amf("capital",i)/amt(i) ;
sl(i) = amf("labor",i)/amt(i) ;
wc(c,s) = amc(c,s,"families")/(amc(c,s,"total") - amc(c,s,"duty")) ;
we(c) = amc(c,"domestic","exp")/amc(c,"domestic","total") ;
wi(c,s,i) = amc(c,s,i)/(amc(c,s,"total") - amc(c,s,"duty")) ;
Display alpha, alphak, alphal, alphae, etabar, sb, eta, elevel, m, mlevel, mu, nm, nx, r, sc, sk, sl, wc, we, wi;
$Stitle variable and equation declaration
/* all variables are rates of change unless otherwise noted */
Variables b balance of trade
cn(c,s) consumption - nominal
cr consumption - real
df(c) foreign demand shift
e(c) exports of agricultural commodities
et total exports
k(i) capital demand
kappa(i) sectoral capital stocks
l total employment
li(i) labor demand by industry
mt total imports
p(c,s) prices for commodities in domestic currency
pc prices: consumer price index
phi exchange rate
pk(i) price of capital
px(c) export price in foreign currency
pm(c) import price in foreign currency
q(c,i) output
t(c) import duty
v(c) export subsidy for the manufactures
w wage rate
ws wage shift
x(c,s,i) intermediate commodity demands
ye household expenditure
z(i) industry activity level
Equations con(c,s) consumption
expd(c) export demands
supply(c,i) supply relations
indc(c,s,i) input demand for commodities
indcap(i) input demand for capital
indlab(i) input demand for labor
pric(i) price equations for commodities
priexp(c) price equations for exports
priimp(c) price equations for imports
bald(c) balance equation for domestic commodities
ballab balance equation for labor
balcap(i) balance equation for capital
imports imports
exports exports
baltrade balance of trade
cpi consumer price index
wage wage rate
realc real consumption
dummy nonbinding constraint to get nonzero rhs ;
$Stitle equation definitions
con(c,s).. cn(c,s) =e= epsilon(c,s)*ye + sum((cp,sp), eta(c,s,cp,sp)*p(cp,sp)) ;
expd(c).. px(c) =e= - gamma(c)*e(c) + df(c) ;
supply(c,i).. q(c,i) =e= z(i) + ( p(c,"domestic") - sum(cp, r(cp,i)*p(cp,"domestic")) ) ;
indc(c,s,i).. x(c,s,i) =e= z(i) - ( p(c,s) - sum(sp, alpha(c,sp,i)*p(c,sp)) ) ;
indcap(i).. k(i) =e= z(i) - ( pk(i) - alphal(i)*w - alphak(i)*pk(i) ) ;
indlab(i).. li(i) =e= z(i) - ( w - alphal(i)*w - alphak(i)*pk(i) ) ;
pric(i).. sum(c, r(c,i)*p(c,"domestic")) =e= sum((c,sp), sc(c,sp,i)*p(c,sp)) + sk(i)*pk(i) + sl(i)*w ;
priexp(c).. p(c,"domestic") =e= px(c) + v(c) + phi ;
priimp(c).. p(c,"imported") =e= pm(c) + t(c) + phi ;
bald(c).. sum(i, m(c,i)*q(c,i)) =e= sum(i, wi(c,"domestic",i)*x(c,"domestic",i))
+ wc(c,"domestic")*cn(c,"domestic") + we(c)*e(c) ;
ballab.. sum(i, wl(i)*li(i)) =e= l ;
balcap(i).. k(i) =e= kappa(i) ;
imports.. mt =e= sum(c, nm(c)*( pm(c) + sum(i, wi(c,"imported",i)*x(c,"imported",i))
+ wc(c,"imported")*cn(c,"imported"))) ;
exports.. et =e= sum(c, nx(c)*px(c) + nx(c)*e(c)) ;
baltrade.. b =e= ( elevel*et - mlevel*mt )/100 ;
cpi.. pc =e= sum((c,s), mu(c,s)*p(c,s)) ;
wage.. w =e= theta*pc + ws ;
realc.. cr =e= ye - pc ;
dummy.. pc =l= 100000;
$Stitle exogenous variables and solution reports
df.fx(c)=1; e.fx(cm)=1; kappa.fx(i)=3; phi.fx=0; pm.fx(c)=-2; t.fx(c)=0; v.fx(ca)=0; ws.fx=0; ye.fx=2;
Model orani /all/ ;
Solve orani using lp minimizing pc;
Parameters varcomm(c,*) commodity reports
varindus(i,*) industry reports ;
varcomm(c,"t") = t.l(c);
varcomm(c,"v") = v.l(c);
varcomm(c,"df") = df.l(c);
varcomm(c,"e") = e.l(c);
varcomm(c,"px") = px.l(c);
varcomm(c,"pm") = pm.l(c);
varindus(i,"k") = k.l(i);
varindus(i,"li") = li.l(i);
varindus(i,"pk") = pk.l(i);
varindus(i,"z") = z.l(i);
varindus(i,"kappa") = kappa.l(i);
Display b.l, cr.l, et.l, l.l, mt.l, pc.l, w.l, phi.l, ws.l, ye.l ,q.l, x.l, cn.l, varcomm, varindus;
```