SAS/OR 14.1, which became available on July 14, delivers a number of new and enhanced features in optimization and simulation. These changes are designed to make SAS/OR even easier to use and to enable you to model and solve larger, more complex problems more efficiently. If you're using SAS/OR now, I recommend upgrading to this new release as soon as you can. You'll be glad you did. If you don't currently use SAS/OR, I hope to pique your interest and encourage you to learn more about SAS/OR.

In optimization, SAS/OR 14.1 adds new functionality, improves performance, and adds diagnostics. Highlights include:

- Shorter solution times for several solvers.
- The COFOR loop (concurrent FOR loop) in PROC OPTMODEL can run in distributed mode (NOTE: Distributed mode requires SAS High-Performance Optimization).
- PROC OPTMODEL adds a profiler capability to track the amount of time the procedure spends generating the problem, in presolve, and in various stages of the solution process.
- PROC OPTNET provides for faster graph data input and enhances three of its algorithms.
- The quadratic programming (QP) and nonlinear programming (NLP) solvers add irreducible infeasible set (IIS) diagnostics.
- The decomposition (DECOMP) algorithm for linear programming (LP) and mixed integer linear programming (MILP) expands the range of constraint matrix structures that it can detect automatically.
- The CLP procedure expands its range of variable selection strategies.

SAS Simulation Studio 14.1, a component of SAS/OR 14.1 for Windows environments, adds features that improve the accuracy of your models and add controls on model execution. Highlights include:

- Controls on the order in which dynamically created input data input and output ports on blocks execute during the run of a model
- Centralized controls on ranking for blocks in a model, which determines the order of execution for events scheduled for the same simulation clock time at various blocks
- Expanded and improved controls on allocation of resource units among resource entities when there is a scheduled adjustment
- Automatic launching of the SAS server on your local PC

# Improvements in Optimization Solver Performance

The SAS/OR team is always working to shorten optimization time, because speed equals scalability, and because at SAS optimization is increasingly included as a key component (but still one of several components) in solutions that need to provide quick results. In SAS/OR 14.1, several of the optimization solvers improve their performance over that of SAS/OR 13.2, released 11 months earlier.

- The interior point algorithm in the linear programming (LP) solver is 30% faster.
- The branch-and-cut algorithm in the mixed integer linear programming (MILP) solver is 35% faster.
- When METHOD=AUTO (the default setting), the DECOMP algorithm is 130% faster in finding an optimal MILP solution and 240% faster in finding a solution with a 5% optimality gap.
- The active set algorithm in the nonlinear programming (NLP) solver is 4% faster for the entire test suite and 10% faster for the more difficult problems in the test suite.

# PROC OPTMODEL Improvements

PROC OPTMODEL, SAS/OR's chief procedure for building and solving optimization models, makes three changes:

- The COFOR statement (which specifies a concurrent FOR loop) now can distribute processing of solver invocations in the loop across multiple computational nodes, in addition to distributing among multiple computational threads on the same node. You request processing across multiple nodes with the PERFORMANCE statement. NOTE: Distributed mode requires SAS High-Performance Optimization.
- CLP solver invocation via the SOLVE WITH CLP statement is promoted to production status.
- The PROFILE statement is added. You can use the PROC OPTMODEL profiler to track and report the time spent processing declarations, the time spent executing statements, and the number of times statements are executed. The profiler can help you identify elements of problem generation, presolve, and solution that require large amounts of time, and can be invaluable to your error detection and performance improvement efforts.

# PROC OPTNET Improvements

PROC OPTNET, which provides 11 different graph theory, combinatorial optimization, and network analysis algorithms, adds several new features:

- Faster graph data input, enabling you to read graph data that contain only numeric node identifiers more quickly.
- Enhancements to three algorithms. The TSP (traveling salesman problem) algorithm can solve asymmetric problems, which are defined on directed graphs; the shortest path algorithm can accept negative link weights; and the default connected components algorithm for undirected graphs is the more efficient union-find algorithm.
- Support for parallel (threaded) graph data input. This is especially helpful in shortening the time that is needed to input large-scale graph data. You can use the PERFORMANCE statement and its NTHREADS= option to request multithreaded data input.
- Improved output, now formatted as ODS (Output Delivery System) tables. You can request that PROC OPTNET produce the Timing ODS table, which reports the amount of time that each step of the procedure uses. This can be just as useful as PROC OPTMODEL's profiler as an aid to debugging and performance improvement.

# Other Optimization-Related Improvements

- PROC CLP adds new conflict-directed variable selection strategies, adds a new dynamic variable section strategy, and promotes the PACK and LEXICO constraint classes to production status.
- The NLP solver and the quadratic programming (QP) solver each add the IIS= option, which directs the solver to identify an irreducible infeasible set among the linear constraints and decision variable bounds of an infeasible problem. Identification of irreducible infeasible sets provides valuable guidance in restoring infeasible problems to feasibility.
- The MILP solver now runs in parallel (threaded) mode by default for improved performance.
- The DECOMP algorithm adds the ability to identify a set-partitioning or set-covering structure in the constraint matrix. If such constraints are detected, they serve as linking constraints, and the remaining weakly connected components of the constraint matrix define blocks of constraints for use in the DECOMP algorithm.

# Discrete-Event Simulation Updates

SAS Simulation Studio 14.1, which provides a graphical environment for building and working with discrete-event simulation models, makes four major improvements:

- Three blocks add controls on the order in which dynamically created data input and output ports execute during the run of a model. Correct ordering of port execution can be critical to ensuring that your model functions properly. In previous releases, only the Formula block provided this feature, and the dynamic ports on other blocks executed in the order in which they were created. In SAS Simulation Studio 14.1, the Modifier, Extractor, and Gate blocks also enable you to alter the order of execution for their dynamic ports.
- Centralized ranking controls for model blocks enable you to determine the order of execution for events that are scheduled for the same simulation clock time. These controls are similar in nature to the controls for port execution order, but on a larger scale, enabling you to specify tie-breaking priority rules to determine which block’s events execute first.
- Controls in the Resource Scheduler block on the allocation of resource units among resource entities have been expanded and improved. Now you can select the policy that's used to increase or decrease the units of resource entities when there is a scheduled adjustment. You can choose among three allocation policies so that the resource units allocations in your models mimic, as closely as possible, the patterns of resource increases and decreases in the systems you are modeling.
- The SAS server on the local PC on which SAS Simulation Studio is installed is automatically launched on an as-needed basis. In previous releases, you needed to launch the local SAS server before reading a SAS data set, writing simulated data to a SAS data set, or running a SAS program. This enhancement ensures that the local SAS server is available whenever it is required. However, if you specify that any block in your model should use a remote SAS workspace server, you are still required to start the remote server by using the Remote SAS Workspace Server Login dialog box, which appears during model execution.