Analytica 4.0 beta Release Notes/

Changes in


Important: Please uninstall previous builds before running the installer for Otherwise, the libraries and example models aren't updated. Despite lots of effort, we still haven't solved this installer glitch.


  • A new SolverSDK.dll release from Frontline. This build upgrades to SDK 7.1 (from the previous SDK 7.0).
  • We're now using the name "Analytica Optimizer", rather than "Analytica Enterprise with Optimizer". The name on the splash screen reflects this. Also, the AnalyticaEdition system variable now contains "Optimizer", rather than "Enterprise" if you have the Optimizer edition. Note: if you have a UDF or expression that tests for the enterprise edition (or better), you should also accept AnalyticaEdition="Optimizer".
  • Ability to use a nonlinear engine with QpDefine. For example, if you have non-convex constraints, the "SOCP Barrier" engine may fail, so you can use the "GRG Nonlinear" engine instead.
  • The search control settings for QpDefine and NlpDefine, specified through the Parameter and Setting attributes of NlpDefine, were not taking effect previously. (They were changing the settings for the "LP/Quadratic" engine, not the engine actually used). One cool side-effect of this is:
    • You can now use the Multistart option with the "GRG Nonlinear" engine (with NlpDefine). When you have local minima, this option seems to be pretty effective, and often seems to be a better option (when there is continuity) than switching to "Evolutionary" engine. It is used like this (if this is the only setting changed):
NlpDefine( ..., parameter:"Multistart", setting:1 )
  • NlpDefine now evaluates the Obj, Lhs, Gradient, and Jacobian expressions in the current Evaluation Context, rather than always evaluating these in Mid mode as it did previously. Prior to the SetContext and Over parameter extensions to NlpDefine that are now present in 4.0, array abstraction over the Run index seemed pretty infeasible in general, but now with those extensions, it makes sense, which means you can now potentially have a single NLP in Mid mode, and a sample of NLPs in sample mode (if you structure the rest of your model appropriately).
  • Several optimization examples using the "Evolutionary" engine were previously failing to terminate. That had to do with a change in Frontline's SDK 7.0 compared to their earlier SDK 4.5, in which the evolutionary engine would basically run forever until stopped. Frontline made changes in their engine for us so it would stop more reliably, and some example models were adjusted to solve better in 4.0.

Built-in Functions

  • Attrib of (Obj) uses evaluation-time binding on Obj when Obj is surrounded by parentheses. The parens treat (Obj) as if it is an expression, which gets evaluated. Without parens, Attrib of Obj uses parse time binding. Hence, this difference:
Variable Va2 := Handle(Va1)
identifier of Va2 → "Va2"
identifier of (Va2) → "Va1"
  • Additional part codes added to DatePart, including: "DD" (two digit day, e.g., "03"), "MM" (two digit month, "09"), "YY" (two digit year), so that the fields in custom number format are basically also available in DatePart.
  • DatePart requires "M", "MM", "MMM", "MMMM" (month indicators) to be upper case. Lower case "m", "mm", etc., is now rejected. It is this way so that in the future, "m" and "mm" will be available for minutes.
  • The Regression has been improved to rescale data internally to automatically cope in a robust fashion with large data values exceeding 100M.
  • Cumulate - Fixed a problem (a rare circumstance) where Cumulate wasn't cumulating.

Libraries and Example Models

  • Improved Performance Profiler library which now lists memory and CPU usage together in a single table.


  • Changed the default for the "Windows of each kind" preference from "one" to "any number".

GUI glitches

  • Change so that certain warnings are displayed before errors caused by the condition that led to the warning. Previously, if an error was encountered before Analytica had deduced whether a warning impacts the final result, the error, rather than the warning, displayed, which was often very confusing. Example: Bernoulli(P[I=5]), when 5 is not an element of I. Now the warning, "5 is out-of-range for I", appears before the error "non-numeric parameter to Bernoulli" (assuming you've left "Show Result Warnings" on -- which is highly recommended).
  • Eliminated black rectangle that appeared in top-left corner when you clicked in an edit box of an input node.
  • Ctrl-R (show result) would sometimes jump to an open result, rather than opening the result for the currently selected node.


  • A few missing files for the AdeTest solution that prevented the project from building in Visual Studio 2005 have been added into the installer, so the example should now build.

You are not allowed to post comments.