Enhancements in SAS/OR® 13.2 Software


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:

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:

Optimization Updates

Solver Performance Improvements

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 OPTMODEL: The CLP Solver (Experimental)

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:

Covariance Matrix Output for Nonlinear Optimization

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: Block Detection

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.

Changes in Status and Default Settings

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

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.