SAS/OR 13.2 adds new optimization features that are designed to provide direct access to a wider range of algorithms, improve current methods, and enhance output. Highlights include the following:

- Several solvers improve their performance.
- PROC OPTMODEL adds the experimental constraint logic programming (CLP) solver.
- The nonlinear programming (NLP) solver adds output of the covariance matrix for the decision variables (parameter estimates).
- The decomposition (DECOMP) algorithm adds new block detection features.
- For the linear programming (LP) interior point solver, the crossover algorithm is applied by default.
- The network solver is at production status.
- The parallel implementation of the mixed integer linear programming (MILP) solver is at production status.

SAS Simulation Studio 13.2, a component of SAS/OR 13.2 for Windows environments, improves performance and adds controls on numeric precision and saved data. Highlights include the following:

- A new optional parallel mode executes design points and replications simultaneously on multiple computational cores.
- The new Data Trimmer block provides a central facility to control data collection. You can clear (or reset) collected data for all selected data collection blocks at one or more specified times during the execution of the model.
- The Formula block adds a control on the precision of the numeric values that it produces.

Several SAS/OR optimization solvers have improved their performance significantly from SAS/OR 13.1 to SAS/OR 13.2. The MILP solver is, on average, 75% faster in SAS/OR 13.2. For problems that require more than 1 second to solve, the MILP solver is 85% faster, and for problems that require more than 10 seconds to solve, it is 95% faster.

For the NLP solver, on average the active-set algorithm is 25% faster and the interior point algorithm is 12% faster in SAS/OR 13.2. For the LP solver, the interior point algorithm is 11% faster.

PROC CLP for constraint logic programming has long been a valuable component of SAS/OR, providing methods for modeling and solving optimization problems and constraint satisfaction problems that often feature intricate logical constraints. In SAS/OR 13.2, these methods are also accessible from PROC OPTMODEL when you use the SOLVE WITH CLP statement. This accessibility enables you to include constraint programming as a component of a larger optimization process, in conjunction with other optimization modeling and solution methods.

You can use the CLP solver to find one solution, all solutions, or up to a specified number of solutions. In addition to linear constraints, the CLP solver supports the following constraint classes:

- All-different constraint: requires that among the specified set of variables, no two variables can take the same value. A single all-different constraint can replace a large number of binary not-equal-to constraints.
- Element constraint: creates a dependency between two variables, in which the value of the first variable indicates which value (from a specified list) the second variable takes. This dependency might correspond to a relationship, functional or otherwise, between the variables.
- Global cardinality constraint (GCC): specifies the minimum and maximum number of times each of a group of values can be assigned among a group of variables. One GCC statement can define several global cardinality constraints, each of which compactly expresses a relationship between a specific value and multiple decision variables. You can also use global cardinality constraints to define disjoint variable domains, by preventing a set of variables from taking specified values in the domain (setting both the minimum and the maximum count for each prevented value to 0).
- Lexicographic constraint: requires one array to be lexicographically less than (or less than or equal to) a second array of the same size. Lexicographic ordering, a generalization of alphabetical ordering to encompass numeric values, can be very useful in eliminating certain types of symmetry that can arise among solutions. Imposing a lexicographic ordering eliminates many of the mutually symmetric solutions, reducing the number of permissible solutions to the problem and in turn shortening the solution process.
- Pack constraint: defines a bin-packing constraint, in which items that have specified sizes must be placed in bins that have specified capacities. A number of real-world restrictions that are associated with resource allocation and consumption can be modeled using bin-packing constraints.
- Reify constraint: associates a binary control variable with a specified linear constraint. The control variable takes the value 1 if the constraint is satisfied and 0 otherwise. The importance of binary control variables in optimization modeling is well established.

Users of the legacy NLP procedure in SAS/OR include statisticians who use its nonlinear optimization capabilities to, for example, perform customized nonlinear regressions. In this context, PROC NLP’s output of a covariance matrix of the decision variables (or parameter estimates) is essential. Other PROC NLP users also rely on its covariance matrix output. In SAS/OR 13.2, the NLP solver, accessible from PROC OPTMODEL, adds covariance matrix output to better enable these statistical SAS/OR users to take advantage of the OPTMODEL procedure's more modern nonlinear optimization methods.

The NLP solver provides all six types of central-difference approximations of the covariance matrix that PROC NLP provides, with the same calculation adjustments for problems that have minimization or least squares objective functions. The options that control the calculation of the covariance matrix correspond to the options in PROC NLP, and, for the NLP solver, they appear as suboptions in the COVEST= option in the SOLVE statement, which requests that the NLP solver produce a covariance matrix. The COVOUT= suboption enables you to specify a parameter in PROC OPTMODEL that contains the covariance matrix. You can use this parameter in a CREATE DATA statement in PROC OPTMODEL to output the covariance matrix to a SAS data set.

The DECOMP algorithm, introduced in SAS/OR 12.1, enables you to exploit two types of special structure in a linear or mixed integer linear optimization problem. Block-angular structure occurs when the overall problem can be broken into a set of disjoint subproblems that contain mutually exclusive decision variables and constraints, along with a comparatively small set of spanning constraints that involve all or most of the decision variables in the problem (spanning across the subproblems). Block-diagonal structure occurs when the problem can be broken down completely into disjoint subproblems, with no spanning constraints. After the blocks of constraints that correspond to the subproblems have been identified, the DECOMP algorithm automatically coordinates the solution process for the subproblems and for the overall problem, often greatly reducing solution time.

SAS/OR 13.2 adds to the methods available for the critical task of identifying blocks in the constraint matrix and makes it easier to identify these blocks automatically. The METHOD= option in the DECOMP statement specifies how blocks are identified. In SAS/OR 13.2, the METHOD=AUTO option, whose algorithm formerly permitted the automatic identification only of block-diagonal structure, invokes a new algorithm that can also identify block-angular structure. This enables you to use METHOD=AUTO to identify a much broader range of problem structures suitable for decomposition. You can still invoke the algorithm that formerly corresponded to METHOD=AUTO by specifying METHOD=CONCOMP.

The crossover algorithm for the interior point LP solver was added in SAS/OR 9.3 and promoted to production status in SAS/OR 13.1. This algorithm converts a solution that is found by the interior point solver to an optimal basic solution, which is easier to interpret and implement. In SAS/OR 13.2, the crossover algorithm is used by default with the interior point LP solver.

The network solver, introduced in SAS/OR 12.1, provides direct access from PROC OPTMODEL to a set of 11 network diagnostic and optimization algorithms. This feature enables you to embed network analysis and optimization into larger solution processes; it is at production status in SAS/OR 13.2.

The parallel implementation of the MILP solver was introduced in SAS/OR 13.1. It enables optimization to be performed largely in parallel on multiple computational cores on a single machine, and it can significantly reduce solution time. On average, the parallel implementation on four cores is twice as fast as the serial implementation on a single core. This feature is at production status in SAS/OR 13.2.

SAS Simulation Studio 13.2 provides a graphical environment for building and working with discrete-event simulation models. Its most prominent
new feature is the optional parallel mode for executing a simulation model. In parallel mode, replications that correspond to selected design
points are executed in parallel on multiple computational cores on a single machine. You select parallel mode by choosing the
**Parallel Mode** option from the **Run** menu or by clicking the **Parallel Mode** icon on the toolbar.
You can specify the maximum number of cores to use in parallel mode in the SAS Simulation Studio Configuration dialog box.

In parallel mode, the **Start**, **Augment**, **Pause**, and **Reset** options on the
toolbar and on the **Run** menu operate just as they do otherwise.
However, certain run-time features are disabled: the simulation clock and replication counter, animation, interactive graphics, and
trace messages. These capabilities are usually used for debugging purposes, and the parallel mode is intended to reduce execution time
for a completed, debugged model. Log messages are still produced; they now indicate the relevant design point and replication. A progress
bar displays the percentage of replications (across all selected design points) that have completed execution. Currently executing design
points are highlighted in red in the Experiment window.

SAS Simulation Studio 13.2 also adds the Data Trimmer block, which helps you centrally manage the saving of simulated data. You can use the Data Trimmer block to notify any data collection block in the same simulation model (including those located in compound blocks or submodels) to clear its accumulated data at a specified point during the model run. Multiple blocks can be selected in the Data Trimmer block dialog box and notified simultaneously. An input port on the Data Trimmer block receives a Boolean signal; a true Boolean value causes the Data Trimmer block to notify all its selected blocks to clear their collected data. For example, you can use the Data Trimmer block to trim data that accumulate during a nonstationary start-up period for the model, so that the simulated data that you save correspond to stationary operation of the system being modeled. The accumulated data can be in the form of individual data values or statistics that are calculated from simulated data.

Finally, in SAS Simulation Studio 13.2, the Formula block adds a control on the precision of its output numeric values. This is useful if the
values that a Formula block produces need to be, for example, integers or two-digit decimals, because of how the values are interpreted and
used elsewhere in the model. The integer value that you enter in the **Result Precision** field in the Formula block properties
dialog box specifies the decimal precision of the numeric values that are produced. A value of 0 for the **Result Precision**
field rounds the numeric results to the nearest integer value, whereas a positive value rounds to the specified number of digits to the left
of the decimal point, and a negative value rounds to the specified number of digits to the right of the decimal point.