Analytica 4.2 Beta FAQs
This page contains FAQs specific to 4.2 beta testing and to the 4.2 beta release. For general Analytica or ADE FAQs, see Analytica User FAQs.
How stable is 4.2 currently -- after all, it is "beta" and not "released"
When you sign up to beta test any product, there is always a worry that because it is a beta version, it may be riddled with glitches that a released version would not have. Are those glitches going to interfere with your ability to get work done?
As of mid May 2009 (build 184.108.40.206), there are several users who have already made the switch. Some of them have made the jump because they wanted to use the 64-bit edition for larger computations. And there are some features and bug fixes in 4.2 that allow then to do stuff they couldn't do in 4.1. Their feedback would indicate that glitches are not interfering with their ability to get work done, and at least one of these has said he thinks 220.127.116.11 beta is more stable than 18.104.22.168.
My opinion is that we are not yet ready to make the statement that the current 4.2 beta build is strictly more stable than the 4.1.2 release. After we've been in beta testing a while longer, I think we will reach that state even while we still remain in beta testing. At present, I expect that we probably will see numerous glitches particularly during installation and license activation. We hope as beta testers that you will exercise a degree of patience with those. We will get those ironed out with practice.
Will my models from 4.1 work in 4.2?
Yes - they better. If for some reason they don't, please send us a bug report (preferably with the model attached).
It is always possible that your model relied on the behavior of a bug in 4.1 that was fixed in 4.2, either intentionally or non-intentionally. This is probably a rare situation.
A few potential "breakers" are:
- High-memory WhatIf evaluations: If you are using WhatIf for large-scale parametric sampling, where one evaluation barely fits within available memory, it is possible that the preservation of previously computed values could prevent your computation from fitting within available memory. If this happens, you can modify your call to WhatIf by adding the parameter: preserve:false. (The same holds for WhatIfAll, Dydx, Elasticity, and NlpDefine, although this is less likely to appear for these).
- Assignment to Variable parameter in a User-Defined Function. If you have created a user defined function that assigns to a parameter variable that is declared as type Variable, the semantics has changed. The example from above, repeated here, demonstrates. In this example, an assignment is made to x, a local parameter declared as type Variable:
Function ChangeIt(x : Variable)
Definition: x := x + 1
In 4.2, a call to this function, say ChangeIt(Va1), would modify Va1, while in 4.1 Va1 would remained unchanged with only the local variable changing. When called from a variable, you'll get an error to the effect that side-effects are not allowed (the function would need to be called from a button script). Changing the qualifier from Variable to Handle would restore the old functionality.
Will my models compute the same results in 4.2 and 4.1?
There are a couple places where the results could come out slightly different.
When you are using uncertainty sampling, any time the random number generator gets off slightly, the precise sequence of random samples generated will change. For example, you may still be getting a sample from a Normal(0,1) in both versions, but the precise sample, and the precise ordering of the sample points, may end up different. There are two aspects of evaluation in 4.2 that could result in the sequence of random numbers coming out different:
- DetermTable and ProbTable optimizations: New optimizations in these functions avoid evaluating cells that aren't selected. For DetermTables containing distributions, and for ProbTables, this means that in some cases fewer random numbers will be generated during evaluation, so that the random number sequence used in Monte Carlo simulation could differ from what it is when your model is evaluated in Analytica 4.1. In both cases, the results would be valid samples, but with slightly different sampling error.
- Dynamic: When your model contains multiple non-intersecting, but touching, dynamic loops, the order of evaluation is likely to be different (note: this is most evident in beta builds 22.214.171.124 and up). Because variables may be evaluated in a slightly different order, uncertain variables used by those dynamic loops may get evaluated in a different order, causing the specific samples generated to be different.
The above two differences don't change the actual "correctness" of the result -- the uncertainty characteristics should remain in agreement, but the precise uncertain sample points might differ.