Difference between revisions of "WhatIf"
m (→See Also) |
|||
Line 4: | Line 4: | ||
==Whatif(expr, v, x)== | ==Whatif(expr, v, x)== | ||
− | Returns the value of expression «expr», after assigning value «x» to variable «v» | + | Returns the value of expression «expr», after assigning value «x» to variable «v». |
− | + | '''Whatif''' helps you explore the effects of a change to a variable, without making it permanent. After evaluation, it returns «v» back to its original definition, and so makes no permanent change to the model. | |
+ | |||
+ | [[Syntax]]: | ||
+ | :'''Whatif'''(expr: Expression; v: Variable; x ''; preserve : optional boolean'') | ||
==WhatifAll(expr, vars, newVals)== | ==WhatifAll(expr, vars, newVals)== | ||
− | Returns an array of values indexed by «vars», a list of variables, obtained by evaluating expression «expr», after assigning to each variable in «vars» the corresponding value from «newVals». Usually, «newVals» is an array indexed by «vars». | + | Returns an array of values indexed by «vars», a list of variables, obtained by evaluating expression «expr», after assigning to each variable in «vars» the corresponding value from «newVals». Usually, «newVals» is an array indexed by «vars». |
− | |||
− | |||
− | + | Use '''WhatifAll''' for generating tornado diagrams and other sensitivity analyses when you want to see the effect on «expr» of changing each variable one-at-a-time. '''Whatif''' helps you explore the effects of a change to a variable, without making it permanent. After evaluation, it returns the variables in «vars» back to their original definition, and so makes no permanent change to the model. | |
− | '' | + | [[Syntax]]: |
+ | :'''Whatif'''(expr: Expression; vars: Variable; newVals ''; preserve : optional Boolean'') | ||
− | + | == Preservation of Computed Values == | |
− | + | Prior to Analytica 4.1, use of '''WhatIf''' or '''WhatIfAll''' caused previously computed results downstream of the varied variable(s) to be invalidated, requiring a recomputation of these results the next time they are requested. Starting with Analytica 4.2, this behavior has changed -- '''WhatIf''' and '''WhatIfAll''' now preserve previously computed values. | |
− | There | + | There are several upsides to preserving the previously computed values. Computation time is saved if the results are required later, Monte Carlo samples are preserved so that the specific sample points are retained, and two related '''WhatIf''''s (both descending from the same varying variable) don't invalidate each other. |
− | + | There is one downside to preserving previously computed values -- increased memory consumption. In some cases, '''WhatIf''' is used on models that consume nearly all available memory. Without dropping previously computed values, the memory required to remember the previous values is not recovered during the '''WhatIf''' evaluation. If you find yourself this close to exhausting available memory resources and need to drop previously computed values when evaluating '''WhatIf''' or '''WhatIfAll''', then the optional «preserve» parameter can be specified as ''false'', e.g.: | |
− | + | :<code>WhatIf(expr, v, x, preserve: false)</code> | |
+ | == See Also == | ||
* [[Dydx]] | * [[Dydx]] | ||
* [[Elasticity]] | * [[Elasticity]] | ||
* [[Analytica_User_Group/Past_Topics#Tornado_Charts|Tornado Charts webinar]], recorded at: [http://AnalyticaOnline.com/WebinarArchive/2008-03-20-Tornado-Charts.wmv Tornado-Charts.wmv] | * [[Analytica_User_Group/Past_Topics#Tornado_Charts|Tornado Charts webinar]], recorded at: [http://AnalyticaOnline.com/WebinarArchive/2008-03-20-Tornado-Charts.wmv Tornado-Charts.wmv] |
Revision as of 00:14, 23 January 2016
Whatif(expr, v, x)
Returns the value of expression «expr», after assigning value «x» to variable «v».
Whatif helps you explore the effects of a change to a variable, without making it permanent. After evaluation, it returns «v» back to its original definition, and so makes no permanent change to the model.
- Whatif(expr: Expression; v: Variable; x ; preserve : optional boolean)
WhatifAll(expr, vars, newVals)
Returns an array of values indexed by «vars», a list of variables, obtained by evaluating expression «expr», after assigning to each variable in «vars» the corresponding value from «newVals». Usually, «newVals» is an array indexed by «vars».
Use WhatifAll for generating tornado diagrams and other sensitivity analyses when you want to see the effect on «expr» of changing each variable one-at-a-time. Whatif helps you explore the effects of a change to a variable, without making it permanent. After evaluation, it returns the variables in «vars» back to their original definition, and so makes no permanent change to the model.
- Whatif(expr: Expression; vars: Variable; newVals ; preserve : optional Boolean)
Preservation of Computed Values
Prior to Analytica 4.1, use of WhatIf or WhatIfAll caused previously computed results downstream of the varied variable(s) to be invalidated, requiring a recomputation of these results the next time they are requested. Starting with Analytica 4.2, this behavior has changed -- WhatIf and WhatIfAll now preserve previously computed values.
There are several upsides to preserving the previously computed values. Computation time is saved if the results are required later, Monte Carlo samples are preserved so that the specific sample points are retained, and two related WhatIf's (both descending from the same varying variable) don't invalidate each other.
There is one downside to preserving previously computed values -- increased memory consumption. In some cases, WhatIf is used on models that consume nearly all available memory. Without dropping previously computed values, the memory required to remember the previous values is not recovered during the WhatIf evaluation. If you find yourself this close to exhausting available memory resources and need to drop previously computed values when evaluating WhatIf or WhatIfAll, then the optional «preserve» parameter can be specified as false, e.g.:
WhatIf(expr, v, x, preserve: false)
See Also
- Dydx
- Elasticity
- Tornado Charts webinar, recorded at: Tornado-Charts.wmv
Enable comment auto-refresher