# Highlights of Analytica 4.0

The forthcoming new 4.0 release of Analytica has dozens of major new features and hundreds of smaller enhancements. See the new Analytica logo and cube icon. This is a sample of the highlights:

## Output formats

### Graphs and Charts

We have completely rewritten Analytica's charting and graphing engine, adding a wide range of new styles and options, smarter default behavior, and the flexibility to create much more elegant charts.

- Chart styles: New styles include stacked bars (cylinders), filled areas, symbol sizes and colors to indicate extra dimensions, and more. You can flip x and y axes -- e.g. for horizontal bars for tornado diagrams.

- Axes: Log scales and reversed scales. Date formats. Intelligent label resizing and rotation to avoid overlaps. These scale properties apply to the index shown along that axis. If you set them as the default, those properties will apply to that index in any graph that uses it.

- Appearance: Select color and pattern to backgrounds, including color gradient. Line widths. Font face, size, and color for titles, axis labels, and key. 3-D bars - cylinders or cuboids. Appearance of tick marks,

- Chart style -- e.g. continuous or categorical -- is attached to the dimensions and indexes, so switches appropriately when you pivot or change uncertainty views. You can save the range and other properties of an axis as the default for the underlying index variable, so it will apply to all graphs using that index.

- Graph Style Templates let you reuse a set of styles that you like.

- You can export a graph as a
- While viewing a graph result, you can select File->Export... and export the graph as a JPEG, etc.

For more, see Graph settings

### Tables

- You can include dropdown menus in cells of an Edit table, letting users select from a predefined set of options, by using the Choice() function.

- Select
**Find...**from**Object**menu or control-F to search for text in a table.

- Dozens of new mouse and keyboard shortcuts let you navigate and select regions from tables. They all are identical to Excel where relevant. For example, the mouse wheel lets you scroll. Drag the mouse from one cell to another to select the rectangular region between them.

- When you reopen a table or graph, Analytica remembers
*all*settings from the last time you looked at it, including pivoting (index chosen for horizontal and vertical dimensions), slicers (values to show for other dimensions).

- Copy from a table uses full precision. You can control the order of indexes in a multidimensional table by reordering its slicer indexes (shown above the table).

- Exported table data includes any external variable columns or coordinate index columns.

- With Analytica Enterprise, you can now scroll through Huge index dimensions with over 32,000 elements.

- The Subtable function lets you define a variable as part of another Edit table. Any change to an element of a Subtable is reflected in its parent table, and vice versa.

### Influence Diagrams

- Help for creating neat diagrams: New options in Diagram menu let you align nodes to top, left, bottom, or center vertically or horizontally; make nodes the same height, width, or both; space nodes evenly horizontally or vertically.
- URLs in a text node appear as hyperlinks in the diagram.
- Optional flag in node shows which objects have descriptions.
- When you've selected a Button object, CONTROL-e now opens its Script. As before, for a Variable or

Function, CONTROL-e opens its Definition.

- The mouse wheel scrolls a diagram vertically. If you hold the Control key, it scrolls horizontally.

### Non-US text and numbers

Recognizing that nearly half Analytica users are outside the US -- Analytica is finally getting a bit less US-centric:

- Date and currency formats: The Number format dialog now lets you select a much wider variety of formats, including non-US dates, currency symbols, and negative numbers. Date formats respond to the Windows region setting.

- You can now paste text containing accents, symbols, and characters from non-English languages (for ascii>127) into Object windows and diagram nodes.

- We know we still have some distance to go towards full internationalization, but this is a start.

## The Application

**Auto save:**Analytica automatically saves each model change to a backup file. So you can no longer lose changes after a software or hardware crash. Next time you start the model after an unplanned exit, it asks if you want to continue using the changes from the backup or revert to the previously saved version.

- Analytica now
**shares CPU nicely**with other applications. Earlier versions hogged 100% of CPU cycles when the Analytica was in focus -- i.e. its application window is on top.

- It can now read model files that use
**LF**(linefeed) as the end-of-line character, instead of CR (carriage return). This convention is standard for Unix and Linux, and sometimes happens to files that are stored or emailed from a Unix server.

- If your computer had
**multiple screens**to show a larger desktop, you can now edit Analytica diagrams on any screen or across multiple screens.

- Analytica is stops more gracefully when a calculation causes it to run
**out of memory**.

- Analytica 4.0 can handle up to
**32,000 objects**-- variables, modules, functions, etc. --- double that in previous releases.

## New and Enhanced Functions

- [[Date Functions|Date functions] provide much more flexibility for computing with dates, to go along with the much greater flexibility in displaying dates from the Number format dialog (from
**Result**menu).

- MdxQuery( ) supports the standard MDX language for querying and writing to multidimensional OLAP or hyercube databases, such as Microsoft SQL Server Analysis Services.

(Analytica Enterprise only).

### Probability distributions

- PDF( ) and CDF( ) Functions return the estimated probability density (or mass) function or cumulative distribution function as arrays, so the model can work with them. Previously, they were only available to view as a graph or table.

- Importance weighting is a way to get more information from few Monte Carlo (or Latin hypercube) samples. Instead of treating all samples as equally likely, you can set a weighting vector. For example, in a risk analysis with a low probability of extremely bad outcomes, you may want to increase the number of samples that lead to bad outcomes to get more detail in that region with correspondingly smaller weight to keep the distributions unbiased. You can also modify the weights to reflect different input distributions and rapidly see the effects on the resulting distributions without having to rerun the simulation. Every probability distribution and statistical function uses the importance weights. The default uses equal weights, as before, so you don't have to worry about importance sampling unless you want to use it.

- To create an array of independent probability distributions
**over**an index I, you can use Normal(0, 1, Over: I). This works for all probability distributions.

- Random( ): Generates random sample from selected distribution.
- Shuffle( ): Randomly shuffles a sample.

### System Functions

- RunConsoleProcess lets you run another application from Analytica. It can pass data via a parameter or a file. It can run the process in parallel or wait for result to be returned as a file.
- GetRegistryValue( )
- ShowPdfFile( ) shows an Adobe PDF file -- for example, to open documentation for a model.

- Argmin(X,I)

- The new position operator @J returns an integer from 1 to n correspondning to each element of index J. You can also use it in a subscript: A[@J = 2] is equivalent to Slice(A, J, 2).

- You can specify a Lognormal using optional parameters mean and stddev (standard deviation), instead of the default median and gsdev (geometric standard deviation).

- The subscript syntax now lets you to subscript an expression -- e.g., (A+B)[I=x].

- You can assign to a slice of a local variable L, e.g. L[I=x] := b, letting you implement some algorithms much more efficiently.

- Special Functions

- ArgMax, ArgMin, PositionInIndex, SubIndex, LinearInterp, StepInterp and CubicInterp have been moved to the Array library (formerly in Special).

- Function AnalyticaLicenseInfo can return the expiration date, purchaser ID, user ID of the license, whether it has Educational, Beta status, or supports the Optimizer.

- [[Trig_Functions] add inverse functions ArcCos, ArcSin, ArcTan, and hyperbolic functions CosH, SinH, and

TanH to the standard Sin, Cos, and Tan. All use degrees, not radians.

## Enhanced Functions

Many functions have been extended, in some cases accepting additional parameters, and in others, increased scope.

- Statistical Functions
- You can now compute statistics -- such as Mean, Variance, Frequency, Correlation, and many others -- over any index, not just Run (the Monte Carlo sample index).

- Array Functions

Allows selection of mid, lower, or upper rank (i.e., rank number in the event of a tie)

Optional fifth index parameter: Area(R,I , X1, X2, J)

Allows selection of the value column. Abstracting over that parameter allows "fact-tables" (as they are called

in the OLAP community) to be transformed.

- ArgMin, ArgMax: Can now perform the min/max over multiple indexes, and can return either index value or index position.

- Truncate(x,min,max) : Now accepts min and/or max thresholds parameters (both optional, but at least one required), and preserves sample ordering, and so rank correlation.

- Uniform( ): optional integer parameter, over parameter, and singleSampMethod parameter.
- Over parameter added to many of the distribution functions, used to specify dimensions over which independent samples should be returned.

## New Language Features

- "..." means the parameter may be repeated multiple times.
- NonNegative qualifier
- ContextSamp qualifier
- Optional indexes
- Default values for optional parameters
- A parameter declared as IndexType evaluates to its index values in a value context (relevant when a variable with a self-index is passed as an index parameter).

- Automatic, discrete, and continuous domain types. This is then picked up PDF computations to determine whether a PDF or ProbMass graph (or cum versions) are appropriate for numeric-valued samples.
- Index-valued domain. The domain can obtain its values from a different index. The evaluated index values become the index values for the variable.

Although this remains a bit of a hidden feature, it is possible to assign a different weight to each sample (e.g., weight indexed by Run), which is then utilized transparently by statistics functions and views. Two important uses of this are sampling from distribution other than the target distribution, and a poor-man's version of posterior conditioning. The system variable SampleWeight specifies the weighting.

- Support for new SQL Server 2005 data types (DbTable, etc)

- Function improvements

- Hierarchical beta, geometric and hypergeometric distributions are much faster.
- Range of parameter for Gamma, Binomial distributions extended, as well as for the GammaIInv function.
- MdTable. Can be used to transform a fact table (in which the first N columns specify coordinates, and the remaining M columns specify "measures"). Also, the conglomeration parameter has been generalized -- it is possible to conglomerate using a user-defined function.
- Uniform() with an optional
**integer:true**parameter generates uniformly distributed integers.

- AnalyticaEdition
- SampleWeight
- IsSampleEvalMode

- 0*NaN and 0*INF issue a warning and return NaN, consistent with IEEE standard 754. Earlier releases of Analytica returned 0

## Libraries

- New distributions in "Multivariate Distributions.ana"

- MultiUniform
- Uniform_Spherical

- Distribution variations

(Note: these distributions can also be used within the Random function for single variate generation)

- Smooth_fractile
- Warp_dist
- Erlang
- Pareto
- Rayleigh
- Lorenzian
- NegBinomial
- InverseGaussian
- Wald

- Functions in the new "Generalized Regression.ana" library

- Logistic_Regression
- Probit_Regression

(These require Analytica Optimizer to use)

## The Optimizer

- Analytica Optimizer 4.0 uses the new 7.0 release of Frontline Systems Solver, which offers significant improvements in performance and functionality.

- The new
**Grouped integer**variable type lets you define a set of N integer decision variables, where a solution must assign a different integer from 1 to N to each of the variables in the group.

- QpDefine now supports quadratic constraints.

- The new frontline comes with some licensing restrictions that were not present previously. These are detailed at Analytica Optimizer Licensing.

- If your optimization problems are really large, you can use yet more powerful add-on solver engines, including OptQuest, Knitro NLP, Mosek SOCP and NLP, and Xpress LP, QP and MIP (priced separately).

- Function SolverInfo provides information about any installed solver engine, including engine type, all parameters, search-control settings, and their allowed ranges.

- ObjNl and LhsNl parameters add the 'Q' option to specify quadratic dependence.

- Function LpFindIIS lets you relax variable bounds (not just constraints, as before). Two new parameters control this, and whether a subset of constraints is returned or a new LP.

- LpWrite, LpRead, and LpWriteIIS support three file formats: LP, MPS, and LPFML to help you document and diagnose solver formulation and behavior.

- Tracefile helps debug NLP optimizations.

- Hooks for array abstraction in NLPs: Enhancements to NlpDefine give more flexibility to structure a large model so NLP optimization array abstracts properly -- for example, for probabilistic or WhatIf analysis with NLP.

- Almost all parameters to NlpDefine are now optional, making it simpler to define an optimization problem with a scalar decision variable, only zero or one constraints, or to find feasible solutions only.

- To speed up NLP, you can give NlpDefine an explicit expression to compute the Hessian -- second derivatives of the objective and LHS.

Enable comment auto-refresher