French Forest Sector Model (FFSM++)

Laboratoire d'Economie Forestière - LEF - Nancy, France

User Tools

Site Tools


en:dev:initialisation_mkt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:dev:initialisation_mkt [2017/03/21 13:15]
Antonello Lobianco
en:dev:initialisation_mkt [2018/06/18 16:45] (current)
Line 1: Line 1:
-This is the workflow of the model in the first few years.+The workflow of the initialisation of the market module.
  
 '' -> products; '' -> products;
Line 6: Line 6:
 r  -> region; r  -> region;
 t  -> time'' t  -> time''
 +
 +ModelCoreSpatial::initMarketModule()
  
 $pl_{r,tp,t=2}= \sum_{pp} {pl_{r,pp,t=2} * a_{r,pp,t=2,tp} } + (m_{r,tp,t=2} * pol\_trSub_{r,tp,t=2})  $ $pl_{r,tp,t=2}= \sum_{pp} {pl_{r,pp,t=2} * a_{r,pp,t=2,tp} } + (m_{r,tp,t=2} * pol\_trSub_{r,tp,t=2})  $
  
-$dl_{r,pp,t=2}= \sum_{pt} {sl_{r,tp,t=2} * a_{r,pp,t=2,tp} } $+$dl_{r,pp,t=2}= \sum_{tp} {sl_{r,tp,t=2} * a_{r,pp,t=2,tp} } $
  
 $st_{r,p,t=2} = sl_{r,p,t=2} + sa_{r,p,t=2} $ $st_{r,p,t=2} = sl_{r,p,t=2} + sa_{r,p,t=2} $
Line 15: Line 17:
 $dt_{r,p,t=2} = dl_{r,p,t=2} + da_{r,p,t=2} $ $dt_{r,p,t=2} = dl_{r,p,t=2} + da_{r,p,t=2} $
  
-$ q1_{r,tp,t=1} = \frac{1}{ 1 + da_{} } $ +$ q1_{r,tp,t=1} = \frac{1}{ 1 + \left(\frac{dl_{r,tp,t=2}}{da_{r,tp,t=2}}\right)^{\frac{1}{psi_{r,tp,t=2}}} \frac{pl_{r,tp,t=2}}{pWo_{tp,t=2}} } $
- +
-ModelCoreSpatial::initMarketModule(){ +
-  msgOut(MSG_INFO, "Starting market module (init stage).."); +
- +
-  for(uint i=0;i<regIds2.size();i++){ +
-    int r2 = regIds2[i]; +
-  +
- +
- +
-    // q1(i,p_tr)  =  1/(1+((RPAR('dl',i,p_tr,t-1)/RPAR('da',i,p_tr,t-1))**(1/psi(i,p_tr)))*(RPAR('pl',i,p_tr,t-1)/PT(p_tr,t-1))); +
-    // p1(i,p_tr)               1-q1(i,p_tr); +
-    // RPAR('dc',i,p_tr,t-1)    (q1(i,p_tr)*RPAR('da',i,p_tr,t-1)**((psi(i,p_tr)-1)/psi(i,p_tr))+ p1(i,p_tr)*RPAR('dl',i,p_tr,t-1)**((psi(i,p_tr)-1)/psi(i,p_tr)))**(psi(i,p_tr)/(psi(i,p_tr)-1)); +
-    // RPAR('pc',i,p_tr,t-1)    (RPAR('da',i,p_tr,t-1)/RPAR('dc',i,p_tr,t-1))*PT(p_tr,t-1)+(RPAR('dl',i,p_tr,t-1)/RPAR('dc',i,p_tr,t-1))*RPAR('pl',i,p_tr,t-1); +
-    // RPAR('pc',i,p_pr,t-1)    (RPAR('sa',i,p_pr,t-1)/RPAR('sc',i,p_pr,t-1))*PT(p_pr,t-1)+(RPAR('sl',i,p_pr,t-1)/RPAR('sc',i,p_pr,t-1))*RPAR('pl',i,p_pr,t-1); +
-    // RPAR('pw',i,p_tr,t-1)    (RPAR('dl',i,p_tr,t-1)*RPAR('pl',i,p_tr,t-1)+RPAR('da',i,p_tr,t-1)*PT(p_tr,t-1))/RPAR('dt',i,p_tr,t-1) ; //changed 20120419 +
-    // K(i,p_tr,t-1)            k1(i,p_tr)*RPAR('sl',i,p_tr,t-1); +
-    for(uint sp=0;sp<secProducts.size();sp++){ +
-      double psi = gpd("psi",r2,secProducts[sp],secondYear); +
-      double dl  = gpd("dl",r2,secProducts[sp],secondYear); +
-      double da  = gpd("da",r2,secProducts[sp],secondYear); +
-      double pl  = gpd("pl",r2,secProducts[sp],secondYear); +
-      double sl  = gpd("sl",r2,secProducts[sp],secondYear); +
-      double k1  = gpd("k1",r2,secProducts[sp],secondYear); +
-      double pWo = gpd("pl",WL2,secProducts[sp],secondYear); // World price (local price for region 99999) +
- +
- +
-      double q1  = 1/ ( 1+pow(dl/da,1/psi)*(pl/pWo) ); +
-      double p1  = 1-q1; +
-      double dc  = pow( +
-              q1*pow(da,(psi-1)/psi) + p1*pow(dl,(psi-1)/psi) +
-             , +
-              psi/(psi-1) +
-             ); +
-      double pc = (da/dc)*pWo +
-             +(dl/dc)*pl; +
-      double pw = (dl*pl+da*pWo)/(dl+da); +
-      double k = k1*sl; +
- +
-      spd(q1,"q1",r2,secProducts[sp],firstYear,true); +
-      //spd(p1,"p1",r2,secProducts[sp],firstYear,true); +
-      spd(dc,"dc",r2,secProducts[sp],secondYear,true); +
-      spd(pc,"pc",r2,secProducts[sp],secondYear,true); +
-      spd(pw,"pw",r2,secProducts[sp],secondYear,true); +
-      spd(k,"k",r2,secProducts[sp],secondYear,true); +
-    } +
- +
-    // t1(i,p_pr)              =  1/(1+((RPAR('sl',i,p_pr,t-1)/RPAR('sa',i,p_pr,t-1))**(1/eta(i,p_pr)))*(RPAR('pl',i,p_pr,t-1)/PT(p_pr,t-1))); +
-    // r1(i,p_pr)               1-t1(i,p_pr); +
-    // RPAR('sc',i,p_pr,t-1)    (t1(i,p_pr)*RPAR('sa',i,p_pr,t-1)**((eta(i,p_pr)-1)/eta(i,p_pr))+ r1(i,p_pr)*RPAR('sl',i,p_pr,t-1)**((eta(i,p_pr)-1)/eta(i,p_pr)))**(eta(i,p_pr)/(eta(i,p_pr)-1)) +
-    // RPAR('pc',i,p_pr,t-1)    (RPAR('sa',i,p_pr,t-1)/RPAR('sc',i,p_pr,t-1))*PT(p_pr,t-1)+(RPAR('sl',i,p_pr,t-1)/RPAR('sc',i,p_pr,t-1))*RPAR('pl',i,p_pr,t-1); +
-    // RPAR('pw',i,p_pr,t-1)    (RPAR('sl',i,p_pr,t-1)*RPAR('pl',i,p_pr,t-1)+RPAR('sa',i,p_pr,t-1)*PT(p_pr,t-1))/RPAR('st',i,p_pr,t-1) ; //changed 20120419 +
-    for(uint pp=0;pp<priProducts.size();pp++){+
  
-      double sl  = gpd("sl",r2,priProducts[pp],secondYear); +$ p1_{r,tp,t=1} 1 - q1_{r,tp,t=1} $
-      double sa  gpd("sa",r2,priProducts[pp],secondYear); +
-      double eta gpd("eta",r2,priProducts[pp],secondYear); +
-      double pl  gpd("pl",r2,priProducts[pp],secondYear); +
-      double pWo = gpd("pl",WL2,priProducts[pp],secondYear); // World price (local price for region 99999)+
  
 +$ dc_{r,tp,t=2} = \left(q1_{r,tp,t=1} * da_{r,tp,t=2}^{\frac{psi_{r,tp,t=2}-1}{psi_{r,tp,t=2}}} + p1_{r,tp,t=1} * dl_{r,tp,t=2}^{\frac{psi_{r,tp,t=2}-1}{psi_{r,tp,t=2}}} \right)^{\frac{psi_{r,tp,t=2}}{psi_{r,tp,t=2}-1}} $
  
-      double t1 1/ ( 1+(pow(sl/sa,1/eta))*(pl/pWo) ); +$ pc_{r,tp,t=2} = {\frac{da_{r,tp,t=2}}{dc_{r,tp,t=2}}}pWo_{tp,t=2} {\frac{dl_{r,tp,t=2}}{dc_{r,tp,t=2}}}pl_{r,tp,t=2} $
-      double r1 1-t1; +
-      double sc pow( +
-               t1*pow(sa,(eta-1)/eta) r1*pow(sl,(eta-1)/eta) +
-            , +
-               eta/(eta-1) +
-            ); +
-      double pc (sa/sc)*pWo+(sl/sc)*pl; +
-      double pw (sl*pl+sa*pWo)/(sl+sa);+
  
-      spd(t1,"t1",r2,priProducts[pp],firstYear,true); +$ pw_{r,tp,t=2}= \frac{dl_{r,tp,t=2}*pl_{r,tp,t=2}+da_{r,tp,t=2}*pW0_{tp,t=2}}{dl_{r,tp,t=2}+da_{r,tp,t=2}$
-     //spd(r1,"r1",r2,priProducts[pp],firstYear,true); +
-      spd(sc,"sc",r2,priProducts[pp],secondYear,true);  +
-      spd(pc,"pc",r2,priProducts[pp],secondYear,true); +
-      spd(pw,"pw",r2,priProducts[pp],secondYear,true); +
-    }+
  
-    // up to here tested with gams output on 20120628that's fine !! +$ k_{r,tp,t=2= k1_{r,tp,t=2}*sl_{r,tp,t=2} $
-  // end for each region in level 2+
  
 +$ t1_{r,pp,t=1} = \frac{1}{ 1 + \left(\frac{sl_{r,pp,t=2}}{sa_{r,pp,t=2}}\right)^{\frac{1}{eta_{r,pp,t=2}}} * \frac{pl_{r,pp,t=2}}{pWo_{pp,t=2}} } $ 
  
-  // initializing the exports to zero quantities +$ r1_{r,pp,t=1} 1 - t1_{r,pp,t=1$
-  // initializing of the transport cost for the same region to one and distance to zero +
-  for(uint r1=0;r1<l2r.size();r1++){ +
-    for(uint r2=0;r2<l2r[r1].size();r2++){ +
-      for(uint p=0;p<allProducts.size();p++){ +
-        for(uint r2To=0;r2To<l2r[r1].size();r2To++){ +
-          spd(0,"rt",l2r[r1][r2],allProducts[p],secondYear,true,i2s(l2r[r1][r2To]));  // regional trade, it was exp in gams +
-          if(l2r[r1][r2] == l2r[r1][r2To]){ +
-            spd(1,"ct",l2r[r1][r2],allProducts[p],firstYear,true,i2s(l2r[r1][r2To])); // as long this value is higher than zero, rt within the same region is not choosen by the solver, so the value doesn'really matters. If it is zero, the solver still works and results are the same, but reported rt within the region are crazy high (100000) +
-          } +
-        } +
-      // end each product+
  
-      for(uint r2To=0;r2To<l2r[r1].size();r2To++){ +$ sc_{r,pp,t=2} = \left(t1_{r,pp,t=1} * sa_{r,pp,t=2}^{\frac{eta_{r,pp,t=2}-1}{eta_{r,pp,t=2}}} + r1_{r,pp,t=1} * sl_{r,pp,t=2}^{\frac{eta_{r,pp,t=2}-1}{eta_{r,pp,t=2}}} \right)^{\frac{eta_{r,pp,t=2}}{eta_{r,pp,t=2}-1}} $
-        if(l2r[r1][r2] == l2r[r1][r2To]){ +
-          spd(0,"dist",l2r[r1][r2],"",firstYear,true,i2s(l2r[r1][r2To])); // setting distance zero in codeso no need to put it in the data +
-        } +
-      } +
-    // end of r2 regions +
-  // end of r1 region +
-}+
  
 +$ pc_{r,pp,t=2} = {\frac{sa_{r,pp,t=2}}{sc_{r,pp,t=2}}}* pWo_{pp,t=2} + {\frac{sl_{r,pp,t=2}}{sc_{r,pp,t=2}}}* pl_{r,pp,t=2} $
  
 +$ pw_{r,pp,t=2}= \frac{sl_{r,pp,t=2}*pl_{r,pp,t=2}+sa_{r,pp,t=2}*pW0_{pp,t=2}}{sl_{r,pp,t=2}+sa_{r,pp,t=2}} $
  
  
  
en/dev/initialisation_mkt.1490098529.txt.gz · Last modified: 2018/06/18 16:44 (external edit)