What's New

What’s New in SAS/OR 9.22


Overview

SAS/OR 9.22 continues the improvements that were delivered starting with 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. Brief descriptions of these new features are presented in the following sections.

Highlights of Enhancements in SAS/OR 9.22

Highlights of the changes include the following:

More information about the changes and enhancements is provided in this chapter. Details can be found in the documentation for the individual procedures in the relevant volumes of the SAS/OR 9.22 User’s Guide.

Highlights of Enhancements in SAS/OR 9.2

Some users are moving directly from SAS/OR 9.1.3 to SAS/OR 9.22. The following are some of the major enhancements that were introduced in SAS/OR 9.2:

For more information, see What's New in SAS/OR 9.2.

SAS/OR Documentation

SAS/OR software is documented in the following volumes:

Online help can also be found under the corresponding classification.


The GANTT Procedure

The GANTT procedure produces a Gantt chart, which is a graphical tool for representing schedule-related information. PROC GANTT provides support for displaying multiple schedules, precedence relationships, calendar information, milestones, reference lines, labeling, and so on. New in SAS/OR 9.22 is the TIMEAXISFORMAT= option in the CHART statement which 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.


Microsoft Project Conversion Macros

The SAS macro %MSPTOSAS converts Microsoft Project 98 (and later) data into SAS data sets that can be used as input for project scheduling with SAS/OR software. This macro generates the necessary SAS data sets, determines the values of the relevant options, and invokes the SAS/OR PM procedure with the converted project data. The %MSPTOSAS macro enables you to use Microsoft Project for the input of project data and still take advantage of the excellent SAS/OR project and resource scheduling capabilities. New in SAS/OR 9.22 is the capability to import and convert Microsoft Project data that has been saved in XML format. This feature is experimental.

The experimental %SASTOMSP macro converts data sets that are used by the CPM and PM procedures into a Microsoft Access Database (MDB) file that is readable by Microsoft Project. The macro converts information that is common to PROC CPM, PROC PM, and Microsoft Project; this information includes hierarchical relationships, precedence relationships, time constraints, resource availabilities, resource requirements, project calendars, resource calendars, task calendars, holiday information, and work-shift information. In addition, the early and late schedules, the actual start and finish times, the resource-constrained schedule, and the baseline schedule are also extracted and stored as start-finish variables.

Execution of the %MSPTOSAS and %SASTOMSP macros requires SAS/ACCESS® software.


The CLP Procedure

The CLP procedure is a finite-domain constraint programming solver for solving constraint satisfaction problems (CSPs) 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.

New in SAS/OR 9.22 are the GCC and ELEMENT statements for defining global cardinality constraints (GCC) and element constraints, respectively. The GCC statement enables you to bound the number of times that a specific value gets 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 SAS/OR 9.22. 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 OPTMODEL Procedure

The OPTMODEL procedure provides a modeling environment that is tailored to building, solving, and maintaining optimization models. This makes the process of translating the symbolic formulation of an optimization model into PROC OPTMODEL virtually transparent, because the modeling language mimics the symbolic algebra of the formulation as closely as possible. PROC OPTMODEL also streamlines and simplifies the critical process of populating optimization models with data from SAS data sets. All of this transparency produces models that are more easily inspected for completeness and correctness, more easily corrected, and more easily modified, whether through structural changes or through the substitution of new data for old data.

The OPTMODEL procedure consists of the powerful OPTMODEL modeling language and access to state-of-the-art solvers for several classes of mathematical programming problems.

Seven solvers are available to OPTMODEL, as listed in Table 1.1.

Table 1.1 List of OPTMODEL Solvers

Problem

Solver

Linear programming

LP

Mixed integer programming

MILP

Quadratic programming (Experimental)

QP

Nonlinear programming, unconstrained

NLPU

General nonlinear programming

NLPC

General nonlinear programming

SQP

General nonlinear programming

IPNLP

In SAS/OR 9.22, the OPTMODEL procedure adds several new features. First, PROC OPTMODEL 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 via 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 respectively aggregate 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.

Starting with SAS/OR 9.22, the IPNLP and NLPU solvers 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 where 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

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.