What's New in SAS/OR 9.2 |
SAS/OR 9.2 continues the improvements delivered starting with SAS/OR 9.1.3 release 3.1 and release 3.2. Several new and enhanced features expand the scale and scope of problems that SAS/OR can address. These enhancements also make it easier for you to use the capabilities of SAS/OR. Brief descriptions of these new features are presented in the following sections. For more information, see the SAS/OR documentation, available in the following volumes:
Online help can also be found under the corresponding classification.
The NETFLOW procedure for network flow optimization contains a new feature that enables you to specify and solve generalized network problems. In generalized networks, the amount of flow that enters an arc might not equal the amount of flow that leaves the arc, signifying a loss or a gain as flow traverses the arc. A new PROC NETFLOW option, GENNET, indicates that the network is generalized. Generalized networks have a broad range of practical applications, including the following:
Another new option, EXCESS=, enables you to use PROC NETFLOW to solve an even wider variety of network flow optimization problems for both standard and generalized networks. As a result, PROC NETFLOW is equipped to deal with many frequently encountered challenges to successful network flow optimization, such as the following:
In SAS/OR 9.2, the MPSOUT= option directs the NETFLOW procedure to save input problem data in an MPS-format SAS data set. Invoking the MPSOUT= option causes the NETFLOW procedure to output the data and halt without attempting optimization. The MPS-format SAS data set corresponds closely to the MPS-format text file (commonly used in the optimization community). Problems that are specified in this format can be solved by using the OPTLP procedure.
In SAS/OR 9.2, the MPSOUT= option directs the INTPOINT procedure to save input problem data in an MPS-format SAS data set. Invoking the MPSOUT= option causes the INTPOINT procedure to output the data and halt without attempting optimization. The MPS-format SAS data set corresponds closely to the MPS-format text file (commonly used in the optimization community). Problems that are specified in this format can be solved by using the OPTLP procedure.
In SAS/OR 9.2, the MPSOUT= option directs the LP procedure to save input problem data in an MPS-format SAS data set. Invoking the MPSOUT= option causes the LP procedure to output the data and halt without attempting optimization. The MPS-format SAS data set corresponds closely to the MPS-format text file (commonly used in the optimization community). Problems that are specified in this format can be solved by using the OPTLP or OPTMILP procedure.
The OPTLP procedure enables you to choose from three linear programming solvers: primal simplex, dual simplex, and interior point (experimental). The simplex solvers implement a two-phase simplex method, and the interior point solver implements a primal-dual predictor-corrector algorithm.
The TIMETYPE= option enables you to specify the type of time (real time or CPU time) that can be limited via the MAXTIME= option and reported via the _OROPTLP_ macro variable.
PROC OPTLP accepts linear programming problems that are submitted in an MPS-format SAS data set. The MPS-format SAS data set corresponds closely to the MPS-format text file (commonly used in the optimization community). Problem data in formats that are used by the LP, INTPOINT, and NETFLOW procedures can be converted into MPS-format SAS data sets by using the new MPSOUT= option in each of these procedures.
New in SAS/OR 9.2, the experimental IIS= option enables you to identify, for an infeasible problem, constraints and variable bounds that form an irreducible infeasible set (IIS). Identifying an IIS can be very helpful in diagnosing and remedying infeasibility in a linear program. Information about the IIS is contained in the PRIMALOUT= and DUALOUT= data sets.
Also new in SAS/OR 9.2, the value "2" for the PRINTLEVEL= option directs the OPTLP procedure to produce an ODS table called "ProblemStatistics" in addition to the "ProblemSummary" and "SolutionSummary" ODS tables that are produced for PRINTLEVEL=1.
The OPTMILP procedure solves mixed-integer linear programming problems with an LP-based branch-and-bound algorithm that has been completely rewritten for this release. The algorithm also implements advanced techniques including presolvers, cutting planes, and primal heuristics. The resulting improvements in efficiency enable you to use PROC OPTMILP to solve larger and more complex optimization problems than you could solve with previous releases of SAS/OR.
PROC OPTMILP accepts mixed-integer linear programming problems that are submitted in an MPS-format SAS data set.
New in SAS/OR 9.2, the value "2" for the PRINTLEVEL= option directs the OPTMILP procedure to produce an ODS table called "ProblemStatistics" in addition to the "ProblemSummary" and "SolutionSummary" ODS tables that are produced for PRINTLEVEL=1.
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, since 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.
The OPTMODEL procedure comprises the powerful OPTMODEL modeling
language and state-of-the-art solvers for several classes of
mathematical programming problems.
Seven solvers are available to OPTMODEL as listed in Table 1:
Table 1.1: List of OPTMODEL SolversProblem | 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 (experimental) | IPNLP |
New in SAS/OR 9.2, the experimental IIS= option for the LP solver enables you to identify, for an infeasible linear program, constraints and variable bounds that form an irreducible infeasible set (IIS). Identifying an IIS can be very helpful in diagnosing and remedying infeasibility in a linear program.
The OPTQP procedure solves quadratic programming problems with a new infeasible primal-dual predictor-corrector interior point algorithm. Performance is excellent for both sparse and dense quadratic programming problems, and PROC OPTQP excels at solving large problems efficiently.
PROC OPTQP accepts quadratic programming problems that are submitted in a QPS-format SAS data set. The QPS-format SAS data set corresponds closely to the format of the QPS text file (a widely accepted extension of the MPS format).
The set of earned value management macros complements the current SAS/OR procedures for project and resource scheduling (PROC CPM and PROC PM) by providing diagnostic information about the execution of scheduled projects. Earned value management (EVM) is growing in prominence and acceptance in the project management community due to its ability to turn information about partially completed projects into valid, early projections of overall project performance. EVM measures current project execution against the project execution plan on a cost and schedule basis.
SAS/OR provides two sets of EVM macros: a set of four analytical macros to compute EVM metrics, and a set of six macros to create graphical reports based on these metrics. A wide variety of EVM metrics and performance projections, for both task-by-task and project-wide evaluations, are supported.
The SAS macros %MDBTOPM and %MP2KTOPM have been used in previous releases of SAS/OR to convert files saved by Microsoft Project 98 and Microsoft Project 2000 (and later), respectively, into SAS data sets that can be used as input for project scheduling with SAS/OR. Now these two macros are combined in the SAS macro %MSPTOSAS, which converts Microsoft Project 98 (and later) data. This macro generates the necessary SAS data sets, determines the values of the relevant options, and invokes PROC PM in SAS/OR 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 project and resource scheduling capabilities of SAS/OR.
In SAS/OR 9.2, the experimental %SASTOMSP macro converts data sets used by the CPM and PM procedures into an MDB file that is readable by Microsoft Project. The macro converts information that is common to both PROC CPM / PROC PM and Microsoft Project, including 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 GA procedure solves optimization problems through the use of genetic algorithms. The procedure uses functions and call routines to set parameters such as crossover operators and mutation probabilities for genetic algorithm optimization. In SAS/OR 9.2, the routines that are used to specify procedure-supplied mutation and crossover operators (SetMut and SetCross), objective functions (SetObj), and selection options (SetSel) have been revised to a more flexible and readable form. The operator type is now specified as a parameter in these routines instead of being incorporated into the name of a separate call routine. Parameters for each operator type are now specified as property name-value pairs.
Note: Several call routines that were available in SAS/OR 9.1.3 have been replaced by new call routines and are not available in SAS/OR 9.2. Table 2 lists the routines and their replacements.
New Routine | Routines Replaced |
Cross call | CrossSimple call, Cross2Point call, CrossUniform call, |
CrossArithmetic call, CrossHeuristic call, CrossOrder call, | |
CrossPMatch call, CrossCycle call | |
Mutate call | MutDelta call, MutUniform call, MutSwap call, MutInvert call |
SetCross call | SetCrossSimple call, SetCross2Point call, SetCrossUniform call, |
SetCrossArithmetic call, SetCrossHeuristic call, | |
SetCrossOrder call, SetCrossPMatch call, SetCrossCycle call | |
SetMut call | SetMutRoutine call, SetMutDelta call, SetMutUniform call, |
SetMutSwap call, SetMutInvert call | |
SetObj call | SetObjTSP call |
SetSel call | SetSelTournament call, SetSelDuel call |
In addition, the following new routines are provided:
The Boolean encoding has been modified so that 0/1 values can be read from and written to solution segments directly, instead of requiring the PackBits and UnpackBits routines. In addition, each Boolean value is represented by one variable in a LASTGEN= or FIRSTGEN= data set, similar to the other encodings.
If the FIRSTGEN= data set has a field named "OBJECTIVE," then in the Initialize call, the value of that field (if nonmissing) is used as the initial objective value for the solution represented by that observation.
The default crossover and mutation probabilities have been changed to 0.
New options have been implemented for the Initialize call and the ReEvaluate call.
New in SAS/OR 9.2, the option LIBRARY= specifies an external library of routines. The NOVALIDATE= and NOVALIDATEWARNING= options control the level of feasibility checks performed by the GA procedure.
The CLP procedure features improved algorithms for the "alldifferent" constraint as well as several extensions to the edgefinder algorithm for resource-constrained scheduling. The EDGEFINDER option can now determine whether an activity must be the first (last) to be scheduled from among a set of activities, while the NF= and NL= options specify the level of propagation for the "not first" and "not last" extensions. A new activity selection strategy RJRAND and a corresponding activity assignment strategy MAXTW have been added; these strategies tend to favor right-justified schedules. The MAXTIME= option enables you to specify a time limit on the CPU time for controlling execution times.