SAS/OR 9.22 continues the improvements that were delivered in SAS/OR 9.2. Several new and enhanced features expand the scale and scope of problems that SAS/OR software can address. These enhancements also make it easier for you to use the SAS/OR capabilities. The following are highlights of this new release.

The CLP procedure is a finite-domain constraint programming solver for solving constraint satisfaction problems with linear, logical, global, and scheduling constraints. The CLP procedure is production in SAS/OR 9.22 with the exception of the scheduling-related constraints.

The CLP procedure now supports the GCC and ELEMENT statements for defining global cardinality constraints and element constraints, respectively. The GCC statement enables you to bound the number of times that a specific value is assigned to a set of variables. The ELEMENT statement enables you to define dependencies, not necessarily functional, between variables and to define noncontiguous domains.

The USECONDATAVARS= option enables you to implicitly define numeric variables in the CONDATA= data set. The TIMETYPE= option enables you to set the units (real-time or CPU-time) of the MAXTIME= parameter. The _ORCLP_ macro variable has been enhanced to provide more information about procedure status and solution status.

There are also several changes and enhancements to the scheduling capabilities in the CLP procedure. Support for multiple-capacity resources has been added in the RESOURCE statement and the Activity data set. The REQUIRES statement syntax for specifying multiple resource requirements has changed. The format of the Activity data set has changed to a more compact form with a fixed number of variables. A new Resource data set, specified with the RESDATA= option, enables you to define resources, resource pools, and resource attributes in compact form. The format of the Schedule data set has been enhanced to separate time- and schedule-related observations. Two new schedule-related output data sets, SCHEDTIME= and SCHEDRES=, have been added; they contain time assignment and resource assignment information, respectively.

The GANTT procedure now supports the TIMEAXISFORMAT= option in the CHART statement. This new option provides the capability to customize the format of the time axis on the Gantt chart for up to three rows. Each row can be formulated using a predefined SAS format or a user-defined format.

A new experimental feature in the SAS macro

The OPTMODEL procedure now supports named problems to enable easy manipulation of multiple subproblems. The PROBLEM declaration declares a named problem, and the USE PROBLEM statement makes it active. Objectives can now be declared as arrays, so they can provide separate objectives for arrays of named problems.

Implicit variables, created using the IMPVAR declaration, allow optimization expressions to be referred to by name in a model. Implicit variables can be evaluated more efficiently than by repeating the same complex expression in multiple places.

Problem components can be accessed with aliases such as _VAR_ and _CON_, which aggregate respectively all of the variables and constraints in a problem. This allows convenient processing of all of the problem components of a given kind for printing, model expansion, and other purposes. The new suffixes .NAME and .LABEL can be used to track the identity of problem components.

Function and subroutine calls can use the "OF array-name[*]" syntax to pass an OPTMODEL array to a called routine for uses such as sorting.

The NUMBER, STRING, and SET declarations allow initial values for arrays to be supplied using an INIT clause with a list of initialization values.

The SOLVE statement supports the RELAXINT keyword to solve a problem while temporarily relaxing the integrality restriction on variables.

Analytic derivatives are now generated for most SAS library functions. The OPTMODEL procedure can use threading on systems with multiple processors to speed up evaluation of nonlinear Hessian models.

The IPNLP and NLPU solvers now support new techniques for large-scale optimization. The nonlinear solver IPNLP has been equipped with two new techniques. The first technique, TECH=IPKRYLOV, is appropriate for large-scale nonlinear optimization problems that can contain many thousands of variables or constraints or both. It uses exact second derivatives to calculate the search directions. Its convergence is achieved by using a trust-region framework that guides the algorithm towards the solution of the optimization problem. The second technique, TECH=IPQN, uses a quasi-Newton method and line-search framework to solve the optimization problem. As such it needs to calculate only the first derivatives of the objective and constraints. This method is more appropriate for problems in which the second derivatives of the objective and constraints either are not available or are expensive to compute.

The unconstrained solver NLPU has been equipped with a new technique called TECH=CGTR. This technique uses the conjugate gradient method to solve large-scale unconstrained and bound-constrained optimization problems.

The OPTMILP procedure solves mixed-integer linear programming problems with a linear-programming-based branch-and-bound algorithm that has been improved for SAS/OR 9.22. The algorithmic improvements result from incorporating new techniques in the presolver and cutting planes, better application of primal heuristics, an improved branch-and-bound strategy, and an improved strategy for handling feasibility problems. Improvements to the presolver include variable and constraint reductions based on logical implications among binary variables and generalized variable substitutions. Two new cutting plane routines (mixed 0-1 lifted inequalities and zero-half cuts) have been added, and improvements have been made to clique, Gomory mixed integer, and mixed integer rounding (MIR) cutting plane routines.

The resulting improvements in efficiency enable you to use PROC OPTMILP to solve larger and more complex optimization problems in a shorter time than with previous SAS/OR releases.

SAS Simulation Studio is a discrete event simulation application for modeling the operation of call centers, supply chains, emergency rooms, and other real-world systems that have significant random elements (timing and length of events, requirements, and so on). Its graphical user interface provides a full set of tools and components for building, executing, and analyzing the data that are generated by discrete event simulation models. SAS Simulation Studio provides extensive modeling and analysis tools suitable for both novice and advanced simulation users.

SAS Simulation Studio integrates fully with JMP^{®} software to provide experimental design capabilities for
evaluating and analyzing your simulation models. Any of the JMP and SAS statistical analysis tools can be
used, either to analyze results after the simulation model is run or to perform embedded analyses that occur
while the simulation model is running.

SAS Simulation Studio 1.5 is included with SAS/OR software.
For more information see
Introducing SAS^{®} Simulation Studio 1.5 and
SAS^{®} Simulation Studio 1.5: User's Guide.