Analytica 4.6 beta Release Notes/Changes in 4.6.0.23
The following issues have been fix since the previously released 4.6 beta build (build 4.6.0.20).
Starting up
- Did not run on Windows XP.
- Crash on start-up when the default printer name had more than 31 characters.
Optimizer
- When a call to a COM method or property occurs in an optimization model, DefineOptimization was passing the linear-term or quadratic term structure as a parameter, where a number would normally be expected, causing weird things to happen. It now catches this as a non-linear, non-quadratic function.
- The piecewise-linear encoding in an LP was adjusted to improve numeric stability in the presence of wildly different coefficients. The instabilities could cause some problems that should have feasible solutions to report either "no feasible solution" or "unbounded objective", and even a solution that is not the (theoretically) optimal one. These are caused from numeric round-off due to the finite precision of 64-bit floating point numbers used during the solve of an LP. The improved formulation has eliminated this on our test cases.
- When DefineOptimization is applied to a non-linear optimization problem (NLP) and you do not specify the «type» parameter explicitly, it now preprocesses any linear constraints to infer (tighter) bounds on decision variables. In particular, when you encode a variable bound as a constraint, instead of in the domain of the variable, this pre-processing detects this and tightens the variable bound before sending the problem to the NLP solver engine. If also makes limited multi-step inferences, for example from the constraint
X + Y < 10
andX >1
, it tightens Y's bound toY < 9
. This preprocessing improves the performance of the Evolutionary and LSSQP engines, and of the "Multistart" option in GRG. The preprocessing is based on the results from the coefficient analysis, which is skipped when you specify type:"NLP" on type:"NSP", and hence, is only performed when that parameter is omitted.
- A fix to the Structured Optimization Tools Library fixes a bug with Use_Opt_Decisions(). The function was dropping exogenous dimensions when copying the solutions to the decision variables. You will need to use Add Library..." (Merge) to re-add the fixed library to your model that are already using this library.
Graphing
- Balloon help not showing up in some bar graphs.
- Poor Y-axis auto-scaling in bar graph with origin having nulls in origin in all but one column.
- Messed up bar graph, with coordinates of plotted bars not matching data, when a continuous bar origin is used with a categorical Y-axis, and the same variable is used for both Y-axis and X-Axis.
- Wrong bar origin used in some cases where bar-origin is null in some array-slices.
User-Interface
- Layout of slicers at top of a MultiTable would not adjust completely to changes in dimensionality, leaving blank space in the header area.
- Problem finding node (using Ctrl+F) based on title. Was not finding inputs or alias that had their own title attribute set differently.
- When copying values between Analytica processes (or other programs), INF, NaN and -INF values would end up surrounded by quotes.
Expression evaluation and build-in functions
- This build has a generalized speed-up of evaluation.
HandleFromIdentifier(null)
now returns null without issuing an error.True
andFalse
now parse directly as 0 or 1. This means if you use these in a list, the IndexValue will be the numeric True (1) or False (0), and not a handle to the system variable named True or False.- The Aggregate function accepts "First" and "Last" for the «type» parameter. Type:"Last" is useful when aggregating stock variables, where the final value of the period should be rolled-up. This was possible previously by defining your own User-Defined Function named Last, but this change relieves you of having to do that, plus it is faster.
- COMCreateObject was enhanced to recognize when the object created is an "ADE4.CAEngine" (an Analytica Decision Engine out-of-process server), and if so, it automatically calls CAEngine::MonitorProcess, so that the ADE instance will terminate if the Analytica process abnormally terminates.
Comments
Enable comment auto-refresher