User Tools

Site Tools


howtos:toolcoding:projecting_a_share_into_simulation_time

This is an old revision of the document!


Projecting Share Variables into Simulation Time

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.

To find the sub-routine related files look in: \\maxwell\whatif\whatifdocs\toolSubroutines\satProj

Example call to the sub-routine

! 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[]

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.1296492721.txt.gz · Last modified: 2011/01/31 16:52 by shona.weldon