orani.gms : A Miniature Version of Orani 78


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 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   /*    */


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.


 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;