Analytica 4.3 beta Release Notes/Changes in 18.104.22.168
This page describes changes in Analytica beta build 22.214.171.124 since 126.96.36.199.
Notable Open Issues
These notable issues exist in build 188.8.131.52:
- CATable::PutSafeArray is malfunctioning -- not respecting the index order correctly. (applies to ADE)
- A warning about operating over the Time index from within a dynamic loop occurs when you use
Array(Time,...)from inside a dynamic loop.
- The warning about operating over time in a dynamic loop will cause the computation to abort and will jump to the definition when warnings are ignored.
Licensing and Installer
- Fixed a bug in which the automatic updating of beta licenses failed when User Access Control (UAC) in Vista or Windows 7 was turned on. (The feature is intended to automatically keep your beta license current throughout the entire beta period without you having to worry about it, as long as your support remains active. This bug caused the beta license to expire for some people when it should not have).
- Some modifications to the core Dynamic evaluation algorithm have been made in this build. The previous algorithm can continue to be used if for some reasons these impact your model for the worse (which is doubtful). To use the old algorithm, from the Typescript window type:
EvalDynamic:4. This new algorithm is
- When you request a result for a node that is in a dynamic loop, but is not defined with Dynamic, Analytica would previously begin with a full evaluation with no time context. This has been changed so that it immediately starts iterating with a dynamic context. On rare occasions expressions that assumed everything would already be sliced by time would break, and now these don't.
- When you have intersecting dynamic loops based on different indexes, all variables in the dynamic loop will now include all dynamic indexes. Previously, this wasn't always the case, and in fact the presence of a dynamic index sometimes depended on the order of evaluation (even though the final result might be equivalent -- when the index did show up, it would be constant along that index).
- There was a case in which the numeric results in a dynamic could depend on which result was requested first. This is fixed by the new algorithm.
- The way in which User-Defined Functions are evaluated when they are called from within a dynamic loop has been altered. The functions now inherit the dynamic context of the caller. When requesting values that are not in the same dynamic loop, the dynamic context is dropped as before, which means it would be pretty hard to find a case where the result is different. But one instance where this does matter is when the function accepts a parameter that has a
Handlequalifier. If the function accesses the value of the variable passed, problems would result previously if that variable was part of the same dynamic loop (often resulting in a stack overflow). It can now handle this case.
- A warning was restored when you attempt to operate over a dynamic index, e.g., an operation such as
Cumulate(x,Time)from within a dynamic loop. This used to exist in the past, but quick appearing at some point. It is helpful in that it often catches a common user mistake. The error is currently appearing when you use
Array(Time,...), which could impact some existing models. This is only temporary -- we will be allowing this case without the warning in the next build.
Optimizer-Related GUI Features
- The Initial Guess attribute on decision nodes is now hidden by default (this is used in non-linear optimization, and needed only rarely). Use the Object→Attributes... dialog to make it visible if you want to use it.
- The display when you double click on a «LP», «NLP», etc., cell, includes a few additional pieces of information. These include Extrinsic Indexes and Intrinsic Indexes that show you where extrinsic and intrinsic indexes are being introduced (very useful while debugging), Optimization Type to indicate whether it is a maximization or minimization problem.
- Some images from certain applications and in certain formats pasted at the wrong size (e.g., enlarging or shrinking when pasted into Analytica) and in one case, upside down.
- When converting images from one format to another (e.g., PNG to JPEG), the image size would occassionally shrink or flip upside down.
- When entering a list of dates, after you enter the first two dates, as new items are added to the end of the list, they are incremented in a date-aware fashion. E.g., if you enter [1-Jan-2011, 1-Feb-2011], and then press the down arrow, the default values will all fall on the 1st of the month.
- There is now direct support for Semi-Continuous variables. A semi-continuous variable is one whose value is constrained by lower and/or upper bounds, but can also be zero. For example, a power plant can either be off, or when on it must be supplying a minimum power output. To declare a variable as Semi-continuous, you must specify the domain in expression view and include the
Continuous(lb: 1K, ub: 20K, orZero: true)
- Constraints can now be defined using Dynamic, e.g.:
Dynamic(Null, Num_dents >= Num_dents[Time - 1])
- Note: The Null here means there is no constraint in the first time period.
- This was supposed to work in the previous build, but was tended to crash.
Several dozen bugs across the board were fixed. Several involved crashes or internal type mismatch errors. Par for the course for a beta cycle, but not worth listing here.
- In legacy 4.2 models (more specifically, when the Domain as Self index preference is on), DetermTable was not correctly slicing out certain values when domain indexes were involved. This resulted in an extra index in the result that should not have been there, and a massive slow down in at least one legacy model due to the extra dimension. This has been fixed.
- A few optimizer models found in the Optimizer guide are now included in the set of example models.
- Includes two new chapters -- function and attribute reference chapters.