Analytica 4.2 beta Release Notes/Changes in 4.2.3
Patch Release 4.2.3
This page describes some speed improvements, fixes to major bugs, and a few enhancements in patch release 4.2.3 since the previous 4.2.2 patch.
You don't need a new license or activation key to install 4.2.3 if you already have a previous release of 4.2 installed.
We encourage you to install this patch to upgrade from 4.2.2 to 4.2.3. It should take only a minute or two. It has no features that might "break" existing models, and fixes some important bugs. The small enhancements described below should be icing on the cake.
Known Problems with this Patch
- On a small percentage of computers, maximized diagram windows go blank (don't repaint) after performing a variety of operations. So far this has been observed only on 2 cases we've heard about. It does not occur on those as long as you don't display your windows in maximized mode. It might depend on where your application window is located on the screen, so that if you move your app to the top-left it goes away. We're not yet positive that the issue is new to 4.2.3 -- it is starting to look like it may have always been present in earlier releases but just reported immediately following the release. We are working hard to reproduce it in-house.
- After you install, please check the Edit→Maintain Recovery Info preference setting and ensure that it is checked. There is a possibility that this might get turned off when upgrading.
Download
The patch can be downloaded from:
If you've previously activated a 4.2 license, just leave the activation key blank when running the installer. The previous activation will still be valid.
If all required information is available to the installer, you will be provided with an express install option.
Analytica Wiki integration
More and more the Analytica Wiki is becoming the primary reference for Analytica modelers. As we progress, Analytica is becoming more and more integrated with this Wiki, and this patch release includes several steps in that direction.
- There is a new item on the Help menu: Wiki login info.... If you didn't enter it during the install, or if you change your Wiki password, you can enter it here. Then when you click on a Wiki link inside Analytica, Analytica will automatically log you into the Wiki, saving you from having to type and remember your user name and password. If you've forgotten your user name, a link on that dialog takes you to a page that helps you find it. If you've forgotten your password, there is a link for that on the Analytica Wiki main page.
- When running the installer, after entering your email address, etc., the installer will communicate with Lumina's system to find your Wiki user name automatically, or to automatically create a new Wiki account for you if you are a new user with active support. This helps you stay connected to the Analytica Wiki.
- Most error messages will now show a "more information" link on the error dialog. Clicking that link will jump to a page on the Analytica Wiki dedicated specifically to that error message. On the Wiki there is plenty of room to provide in-depth information on mistakes or conditions, including non-intuivitive that might cause this particular error. Since you, as a user of Analytica with active support, can edit the Wiki, we invite you to make notes right on those pages about your own experiences when you solve problems and figure out why an unexpected error was occurring. We've added content and commentary for most error messages, and hope you help us improve this over time for the benefit of yourself and all other Analytica users.
User Interface
GUI while computation is in-progress
Previously, you could cause Analytica to hang or crash if you made changes while Analytica was computing a result. It now prevents you from making such changes while computation is in-progress. In general, you can browse your model, but can't changes it until the computation terminates. Some highlights:
- The Result button () changes to a stop-sign button while computating. This provides a visual indication that a computation is in-progress. Pressing the Stop button ends the computation, just like Ctrl+Break.
- Similarly, while computing, the Result menu contains a Stop computation option.
- Menu items and toolbar buttons that can't be used are disabled during computation.
- When you close the result window whose value you requested while it is calculating, it will abort the computation, as if you pressed Ctrl+Break. Closing other windows, including result windows, will not have this effect.
- Several GUI-operations now automatically end a computation, including exiting Analytica, selecting New', Open, Save, Save As..., Save a copy in..., Close Model, or recent files from the File menu.
- Manipulations that change the model, including diagram manipulations, are disabled while computing (as in Browse mode).
- A small computation in-progress icon in the top-left corner of the typescript window also provides a visual indication.
- Input and Output controls on diagrams are disabled while computing.
- Attribute entry and controls in the attribute pane or object window are in a disabled state while computing.
- Better handling of choice controls on diagrams when the choice control's index needs to be computed.
- When a choice control on a diagram uses a computed index, the index needs to be computed for the diagram to display. When that computation is lengthy, this would cause the UI to hang, unable to complete the redraw, but now handles it gracefully by drawing "«computing»" in place of the pulldown. If the computation results in an error or is aborted by the user, the control displays as a Refresh button.
- There were several conditions that could lead to application crashes if you did much while a computation was in-progress. Operations that would cause a diagram to "re-synch" to changes, or closing windows when a GUI command was pending, would often cause crashes. Veteran Analytica users, I think, would often learn not to fool with it too much while the computation was in-progress for this reason. This patch fixes an underlying architectural flaw in the underlying UI-toolkit used by Analytica that caused these problems, making it now quite stable even if you are doing stuff while the computation is in-progress.
- When you are loading a model and press Stop (or abort) while it is Checking Definitions, this now aborts the entire checking definitions phase. Formerly it only aborted the parsing of the variable it was working on when you pressed the button. Also, if you press Stop while it is in the reading phase, a warning is displayed about the model being only partially read.
Module hierarchy breadcrumbs
The option Show module hierarchy from the Edit→Preferences dialog causes a hierarchy stripe to appear along the top of each diagram window. This hierarchy stripe now shows a much more useful list of module ancestors, from Main model on the left to current module on the right, sometimes known as " bread crumbs". You can click any ancestor to open its diagram. You can press on the triangle to the left of each ancestor to get a pulldown tree listing its submodules, enabling you to move around a large model much more easily.
If you have a large model with many levels, you will find this feature extremely useful.
Speed ups
- It displays extremely large edit tables (millions of cells) much faster.
- It loads and saves very large models, especially models with large tables, dramatically faster.
- It no longer "hangs" (or takes so long that it appears to hang) when displaying a table with a cell containing a text with millions of characters.
Tables
- The selector dropdown box in an index slicer control (in the header area of a table view) is now larger and resizable, and includes hover-tooltips to show the full content of an item that still doesn't fit horizontally in the box's width.
Attribute View
- UI controls now appear for several attributes when viewing these attributes in the object window or attribute pane, whereas previously these attributes showed up as text. The recursive and meta-only attribute flags display as checkboxes. The CachingMethod attribute displays as a pulldown (or dual-pulldowns).
- The Object Window now displays all enabled User-Defined Attributes. Formerly, only the first five could be displayed on the object window.
- Formerly you could not edit a definition with more than 32000 characters in expr view. The only definitions that ever get that long are tables, but big tables often did get that long. You can now edit long definitions exceeding the 32000 character limit form the attribute pane or object window.
Icons
- This patch contains new application and document icons which include high-fidelity super-large versions that display nicely in Windows 7 very large icon views, or at any size with higher fidelity than previous ones. You'll note that the .ana document icon has changed -- instead of being just a cube, it is now a piece of paper with an influence diagram on it, with a cube floating in front.
Copy/Paste
- Previously text copy/paste operations would paste only the first 255 characters into an edit table cell. This limit has been removed.
- Fixed a problem in which some copy/paste operations from Excel to Analytica involving tables with several empty rows would end up not copying the final rows into Analytica.
Printing
- Fixed some problems that often prevented printing from Analytica 64-bit.
Misc
- When an evaluation error occurs within a User-Defined Function, the 'Edit Definition option on the error dialog will now jump to the position of the error inside the UDF's definition. Previously it would jump to the variable that called the UDF. It seems that more often, the problem being reported by the error message is in the function's definition itself. The one exception to this is if you report your own custom error message using the Error function. In that case, it will jump to the definition that called the function.
- Show/Hide Definitions are disabled in browse-mode.
- In some cases, in 4.2.2 the text for a row or column header in a table would display over its cell boundaries, partially occluding or overlapping the content in the body of the table.
- When an expression in a User-Defined Function contained an assignment to a global variable, such as "Y := X", Analytica did not previous maintain the dependency between the function and Y. Thus, when Y was renamed, the "Y" in the definition didn't get changed. That dependency is now recorded, so rename works, and can even be viewed as a dependency with arrows on the diagram (if your diagram settings preference has function arrows turned on). The arrow goes from the UDF to Y.
- A variable marked directly with Hide Definition(s) and also having an input now keeps its definition hidden, while previously its definition would show (because of the input node). However, as before, if node is not marked directly, but its parent or ancestor module is marked with Hide Definition(s), its definition will show if it has an input node, so that behavior has not changed.
Expressions & Built-in functions
- Top-level functions cannot appear as edit-table cell definitions. Functions like Dynamic, Iterate, and ComputedBy can only occur at the top level in a definition. They cannot appear in an edit-table cell. However, edit tables were not enforcing that -- allowing them to be entered without an error, and even computing results that didn't make sense without error. It is now enforcing this restriction.
- Two new functions, SipEncode and SipDecode, were added to support ProbabilityManagement.org standards for managing uncertainty in an organization.
- Functions Floor and Ceil now support an optional «digits» parameter, similar to the parameter supported by Round.
- Functions Floor, Ceil and Round now support an optional «dateUnit» parameter that allows you to round a date-time number to the nearest year, quarter, month, weekday, day, hour, minute or second.
- Function MakeTime(h,m,s) now allows h to exceed 23 without an error. This is useful when encoding hour durations using this function.
- The expression syntax will now recognize and parse a date in the form d-MMM-yyyy, with MMM being one of the 12 three-letter English-language month abbreviations anywhere within an expression, independent of the number format setting. Thus, you can now write
Sequence(1-Jan-2010,1-Dec-2020,dateUnit:"M")
in an expression. To avoid ambiguities, or problems when a model is sent to someone else in a different region, this recognition has been limited only to this specific standard syntax. As before, Analytica will parse dates in a large variety of syntaxes, and respecting regional ordering of fields, when the date is at the top-level of the definition (the only thing in the definition), or in a GUI table cell.
- MemoryInUseBy, and the performance profiler, did not previous include memory consumed by internal record set structures (when DbQuery is used), or fast associative-lookup indexing structures used with indexes. These are now tallied as part of that count, providing a more accurate picture of which nodes are using memory.
- AskMsgText accepts an optional «password» flag. When set to true, the text typed is hidden (appears as astrisks) as the user types it.
- An index node with the meta-only attribute set to true is useful for defining a list-of-identifiers, which causes the IndexValue for the index to be a list-of-handles. That is not new. But previously, in such a configuration, it would only allow you to enter identifiers of variables, not identifiers of other objects like modules, input/output controls, or User-Defined Functions. Now you can enter those as well.
Optimizer
- This patch contains the latest Frontline Systems solver libraries -- SDK 9.0 (compared to 4.2.2 which used SDK 7.0). It thus contains numerous improvements to optimization functionality incorporated by Frontline.
- The optimizer engine can now be used over Remote Desktop without headaches of having to install a Sentinel license server for the Frontline license. This was a rare configuration, when when it occurred, it was a pain. Frontline SDK 9.0 now uses the Reprise license manager, the same that Lumina's products use, and thus doesn't have this limitation any more that was inherent with its previous Sentinel license manager.
Databases
- When you import dates, times or date-times from an external database, you can now control whether these are imported as numeric dates or as text. Formerly they were always imported textually. You can control this in two ways. A global preference options controls the default for all DbQuery calls. You can set the default in Typescript by setting Sys_DbDatesAsText := 1. Or you can specify an optional parameter «datesAsText» as true or false to override the global default. Note that Sys_DbDatesAsText is set to 1 by default to preserve backward compatibility for existing models.
- We fixed a memory leak that occurred when importing date or date-time fields from an external ODBC data source using DbQuery.
Installer
- As listed above, the installer will look up Wiki account information when provided with your email, and will obtain your Wiki credentials from the Lumina server if you don't know them. Or, if you are a new user and are eligible to have Wiki access, it will automatically set up a Wiki account for you and record your credentials for easy login later.
- When installing a patch release, the installer offer an express install (if it has all your info already). The custom option is still there if you really want to review all your previous information.
- Fixed an issue on Windows 7 where Windows 7's compatibility assistant would display a dialog (incorrectly) saying that the application may not have installed correctly.
ADE
- The CATable::Slice and CATable::Subscript methods, when applied to a DefTable, now automatically act as SubTables. In other words, the sliced DefTable is itself a DefTable, and changes to cells inside it are automatically inserted into the corresponding slice of the original table.
Other Misc
- The Embed All linked modules works correctly now when your model contained locked or browse-only submodules. Even though they are embedded, they will remain locked or browse-only in the single-file model copy.
Enable comment auto-refresher