User Tools

Site Tools


howtos:toolcoding:projecting_a_share_into_simulation_time

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
howtos:toolcoding:projecting_a_share_into_simulation_time [2010/12/21 17:43]
shona.weldon
howtos:toolcoding:projecting_a_share_into_simulation_time [2011/02/15 21:36] (current)
marcus.williams
Line 3: Line 3:
 Projecting share variables from history into the simulation time using a saturating projection is a common way to create the business as usual data for these variables.  ​ Projecting share variables from history into the simulation time using a saturating projection is a common way to create the business as usual data for these variables.  ​
  
-There is a subroutine which can be hooked into your model and then called from views which does saturated projections with several parameters.+To find the sub-routine related files look in: 
 +\\maxwell\whatif\whatifdocs\toolSubroutines\satProj
  
-Here's some reference ​code you would put in your view to call the sub routine and below that is the code for the sub routine ​itself+ 
 +===== Example call to the sub-routine ===== 
 +<code
 +! NOTE these informants should be put into your model then these lines should not be included when calling ​the sub routine 
 +skipto afterInformants 
 +localinformant yearInfoSet[] = create (; object=set, \ 
 + desc="​defaults wrt projection year", \ 
 + elemName1 = "​min",​ \ 
 + elemName2 = "​max",​ \ 
 + elemName3 = "​default",​ \ 
 + elemName4 = "​timeDimNum"​) 
 +localinformant boundsInfoSet[] = create (; object=set, \ 
 + desc="​defaults wrt bounds checking",​ \ 
 + elemName1 = "​setMax",​ \ 
 + elemName2 = "​maxVal",​ \ 
 + elemName3 = "​setMin",​ \ 
 + elemName4 = "​minVal"​) 
 +localinformant normInfoSet[] = create (; object=set, \ 
 + desc="​defaults wrt normalizing",​ \ 
 + elemName1 = "​doRenorm",​ \ 
 + elemName2 = "​normDimNum"​)  
 +afterInformants:​ 
 + 
 +local varHis[upperdims,​timeseq] = newSizeShrPU[cr,​vcld,​t][1] 
 +local varResult[upperdims,​timeseq] = newSizeShrPU[cr,​vcld,​t][3] 
 + 
 +local yearInfoForProj[yearInfoSet] = create (; dim=yearInfoSet,​ dataType=integer) 
 +yearInfoForProj[yearInfoSet] = insert (1982; yearInfoSet:​min) 
 +yearInfoForProj[yearInfoSet] = insert (2000; yearInfoSet:​max) 
 +yearInfoForProj[yearInfoSet] = insert (1982; yearInfoSet:​default) 
 +yearInfoForProj[yearInfoSet] = insert (3; yearInfoSet:​timeDimNum) 
 + 
 +local boundsChecking[boundsInfoSet] = create (; dim=boundsInfoSet) 
 +boundsChecking[boundsInfoSet] = insert (1.0; boundsInfoSet:​setMax) 
 +boundsChecking[boundsInfoSet] = insert (1.0; boundsInfoSet:​maxVal) 
 +boundsChecking[boundsInfoSet] = insert (1.0; boundsInfoSet:​setMin) 
 +boundsChecking[boundsInfoSet] = insert (0.0; boundsInfoSet:​minVal) 
 + 
 +local normInfo[normInfoSet] = create (; dim=normInfoSet,​ dataType=integer) 
 +normInfo[yearInfoSet] = insert (1; normInfoSet:​doRenorm) 
 +normInfo[yearInfoSet] = insert (2; normInfoSet:​normDimNum) 
 + 
 +local percentChgFromLYHis[] = create (; data=50.0) 
 + 
 +local defaultJoin[] = create (; data=2) ! join trend  
 + 
 +local firstHisYearForProjection[],​ asymtoticPercentChange[],​ joinMethod[] 
 + 
 +string $viewDesc = "view myViewName: " 
 + 
 +tool $informPath/​satProjFromHist.t \ 
 + yearInfoForProj[yearInfoSet] \ 
 + boundsChecking[boundsInfoSet] \ 
 + normInfo[normInfoSet] \ 
 + percentChgFromLYHis[] \ 
 + defaultJoin[] \ 
 + varHis[upperdims,​timeseq] \ 
 + varResult[upperdims,​timeseq] \ 
 + firstHisYearForProjection[] \ 
 + asymtoticPercentChange[] \ 
 + joinMethod[] 
 +  
 + 
 +integer $firstHisYearForProjection 
 +getobjinfo (firstHisYearForProjection[],​ $firstHisYearForProjection;​ info=dataElement) 
 +buildstring ($viewDesc,​$viewDesc,"​first year of history for projection = ",​$firstHisYearForProjection,":​ ") 
 + 
 +string $asymtoticPercentChange 
 +getobjinfo (asymtoticPercentChange[],​ $asymtoticPercentChange;​ info=dataElement) 
 +buildstring ($viewDesc,​$viewDesc,"​asymtotic percent change = ",​$asymtoticPercentChange,":​ ") 
 + 
 +integer $joinMethod 
 +getobjinfo (joinMethod[],​ $joinMethod;​ info=dataElement) 
 +if $joinMethod == 1 
 + buildstring ($viewDesc,​$viewDesc,"​join to projection of last 2 years of history"​) 
 +endif 
 +if $joinMethod == 2 
 + buildstring ($viewDesc,​$viewDesc,"​join to trend line"​) 
 +endif 
 +if $joinMethod == 3 
 + buildstring ($viewDesc,​$viewDesc,"​join to trend projection of last history year"​) 
 +endif 
 + 
 +newSizeShrPU[cr,​vcld,​t][3] = assign (varResult[upperdims,​timeseq];​ desc=$viewDesc) 
 + 
 +newPUVehShr[cr,​vcld->​vpsld,​ts][3] = mapcat (newSizeShrPU[cr,​vcld,​t][3] * \ 
 + newEngineShrPU[cr,​vcld,​vpsld,​th][2];​ category=vcldCOvpsld,​ \ 
 +desc=$viewMenuChoices) 
 + 
 + 
 + 
 +</​code>​ 
 + 
 +===== How to load ===== 
 +Go to your informants window in SAMM and load the informs.samm file from your sub-routine ​directory
  
  
howtos/toolcoding/projecting_a_share_into_simulation_time.1292953425.txt.gz · Last modified: 2010/12/21 17:43 by shona.weldon