This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
howtos:toolcoding:projecting_a_share_into_simulation_time [2010/12/21 17:57] 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> | <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, \ | localinformant yearInfoSet[] = create (; object=set, \ | ||
desc="defaults wrt projection year", \ | desc="defaults wrt projection year", \ | ||
Line 23: | Line 26: | ||
desc="defaults wrt normalizing", \ | desc="defaults wrt normalizing", \ | ||
elemName1 = "doRenorm", \ | elemName1 = "doRenorm", \ | ||
- | elemName2 = "dimNumInMainVar") | + | elemName2 = "normDimNum") |
+ | afterInformants: | ||
- | local varNameHis[upperdims,timeseq] = newSizeShrPU[cr,vcld,t][1] | + | local varHis[upperdims,timeseq] = newSizeShrPU[cr,vcld,t][1] |
- | local varNameResult[upperdims,timeseq] = newSizeShrPU[cr,vcld,t][3] | + | local varResult[upperdims,timeseq] = newSizeShrPU[cr,vcld,t][3] |
local yearInfoForProj[yearInfoSet] = create (; dim=yearInfoSet, dataType=integer) | local yearInfoForProj[yearInfoSet] = create (; dim=yearInfoSet, dataType=integer) | ||
Line 42: | Line 46: | ||
local normInfo[normInfoSet] = create (; dim=normInfoSet, dataType=integer) | local normInfo[normInfoSet] = create (; dim=normInfoSet, dataType=integer) | ||
normInfo[yearInfoSet] = insert (1; normInfoSet:doRenorm) | normInfo[yearInfoSet] = insert (1; normInfoSet:doRenorm) | ||
- | normInfo[yearInfoSet] = insert (2; normInfoSet:dimNumInMainVar) | + | normInfo[yearInfoSet] = insert (2; normInfoSet:normDimNum) |
local percentChgFromLYHis[] = create (; data=50.0) | local percentChgFromLYHis[] = create (; data=50.0) | ||
- | local defaultJoin[] = create (; data=2) ! join history | + | local defaultJoin[] = create (; data=2) ! join trend |
+ | |||
+ | local firstHisYearForProjection[], asymtoticPercentChange[], joinMethod[] | ||
+ | |||
+ | string $viewDesc = "view myViewName: " | ||
tool $informPath/satProjFromHist.t \ | tool $informPath/satProjFromHist.t \ | ||
Line 54: | Line 62: | ||
percentChgFromLYHis[] \ | percentChgFromLYHis[] \ | ||
defaultJoin[] \ | defaultJoin[] \ | ||
- | varNameHis[upperdims,timeseq] \ | + | varHis[upperdims,timeseq] \ |
- | varNameResult[upperdims,timeseq] | + | varResult[upperdims,timeseq] \ |
+ | firstHisYearForProjection[] \ | ||
+ | asymtoticPercentChange[] \ | ||
+ | joinMethod[] | ||
+ | |||
- | newSizeShrPU[cr,vcld,t][3] = varNameResult[upperdims,timeseq] | + | 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] * \ | newPUVehShr[cr,vcld->vpsld,ts][3] = mapcat (newSizeShrPU[cr,vcld,t][3] * \ | ||
Line 63: | Line 95: | ||
desc=$viewMenuChoices) | desc=$viewMenuChoices) | ||
- | ! CU vehicles | ||
- | varNameHis[upperdims,timeseq] = newSizeShrCU[cr,vcld,t][1] | ||
- | varNameResult[upperdims,timeseq] = newSizeShrCU[cr,vcld,t][3] | ||
- | tool $informPath/satProjFromHist.t \ | ||
- | yearInfoForProj[yearInfoSet] \ | ||
- | boundsChecking[boundsInfoSet] \ | ||
- | normInfo[normInfoSet] \ | ||
- | percentChgFromLYHis[] \ | ||
- | defaultJoin[] \ | ||
- | varNameHis[upperdims,timeseq] \ | ||
- | varNameResult[upperdims,timeseq] | ||
- | |||
- | newSizeShrCU[cr,vcld,t][3] = varNameResult[upperdims,timeseq] | ||
- | newLDVShr[cr,vcld->vpsld,ts][3] = mapcat (newSizeShrCU[cr,vcld,t][3] * \ | ||
- | newEngineShrCU[cr,vcld,vpsld,th][2]; category=vcldCOvpsld, \ | ||
- | desc=$viewMenuChoices) | ||
- | endif | ||
</code> | </code> | ||
+ | |||
+ | ===== How to load ===== | ||
+ | Go to your informants window in SAMM and load the informs.samm file from your sub-routine directory | ||
+ | |||
+ |