SAS/OR^{®}
SAS/OR 14.1 adds a number of new optimization capabilities that shorten optimization time, increase diagnostic capabilities, and make the software easier to use. Highlights include the following:
 Several solvers improve their performance.
 The concurrent FOR loop (the COFOR loop) in PROC OPTMODEL can run in distributed mode. Note: Distributed mode requires SAS HighPerformance Optimization.
 PROC OPTMODEL adds a profiler that tracks the amount of time spent in problem generation, presolve, and various stages of the solution process.
 PROC OPTNET enables parallel computing, provides faster graph data input, and adds enhancements to three of its algorithms.
 The quadratic and nonlinear solvers add irreducible infeasible set (IIS) diagnostics.
 The decomposition algorithm expands the range of constraint matrix structures that it can detect automatically.
 The CLP procedure adds more 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 give you additional controls on model execution. Highlights include the following:
 controls on the order in which dynamically created data input and output ports on blocks execute during the run of a model
 centralized controls on the ranking of blocks in a model, which determines the order of execution for events that are scheduled for the same simulation clock time
 expanded and improved controls on the allocation of resource units among resource entities when there is a scheduled adjustment
 automatic launching of the SAS server on your local PC
Mathematical Optimization Updates
Solver Performance Improvements
Several optimization solvers have improved their performance over that of SAS/OR 13.2 as follows:
 The interior point linear programming (LP) solver is 30% faster.
 The branchandcut mixed integer linear programming (MILP) solver is 35% faster.
 When METHOD=AUTO (the default setting), the decomposition (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
The OPTMODEL procedure makes three major changes:
 The COFOR statement (which specifies a concurrent FOR loop) can distribute processing of solver invocations in the loop across multiple computational nodes, not simply among multiple computational threads on the same node. You request processing across multiple nodes by specifying a value greater than 1 in the NODES= option in the PERFORMANCE statement. Note: Distributed mode requires SAS HighPerformance Optimization.
 CLP solver invocation via the SOLVE WITH CLP statement is promoted to production status.
 The PROFILE statement is added. This statement invokes and configures 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; it can be a useful aid in error detection and performance improvement. The PROFILE statement includes two optional arguments, mode and options. The mode argument enables or disables the profiler, and can also request that accumulated profiler data be printed. The options argument controls how PROC OPTMODEL collects, retains, and displays profiler information.
Other Optimization and Related Improvements
PROC CLP adds the new conflictdirected variable selection strategies, VARSELECT=WDEG and VARSELECT=DOMWDEG; adds a new dynamic variable section strategy, VARSELECT=DOMDDEG; and promotes the PACK and LEXICO constraint classes to production status.
PROC OPTNET enables faster graph data input. The STANDARDIZED_LABELS option in the PROC OPTNET statement enables you to read graph data that contain only numeric node identifiers more quickly. More generally, PROC OPTNET supports parallel computing, including parallel graph data input. This is especially helpful in shortening the time that is needed to input largescale graph data. You can use the PERFORMANCE statement and its NTHREADS= option to request multithreaded computing.
PROC OPTNET adds enhancements to three of the algorithms that it uses. 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 unionfind algorithm.
PROC OPTNET produces ODS tables as output. You can use the DETAILS option in the PERFORMANCE statement to request that PROC OPTNET produce the Timing ODS table, which reports the amount of time that each step of the procedure uses.
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 for a problem that is found to be infeasible. 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 for the LP and MILP solvers adds the SET value for the METHOD= option. This value directs the DECOMP algorithm to find a setpartitioning or setcovering structure in the constraint matrix. If such constraints are detected, they serve as the linking constraints, and the remaining weakly connected components of the constraint matrix define blocks of constraints for use in the DECOMP algorithm.
DiscreteEvent Simulation Updates
SAS Simulation Studio 14.1, which provides a graphical environment for building and working with discreteevent simulation models, makes four major improvements:
 Three blocks have added new controls on the order in which dynamically created data input or output ports (or both) 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 include buttons, labeled Move Up and Move Down, that enable you to increase or decrease, respectively, the priority of any dynamic port in the order of execution.
 Centralized controls on the ranking of blocks in a model 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. The modelwide Block Ranking dialog box enables you to specify tiebreaking priority rules to determine which block’s events execute first. You open this dialog box by rightclicking the name of a model and selecting Block Ranking. The Block Ranking dialog box displays in a hierarchical checkbox tree all blocks that have an adjustable rank in the selected model. A horizontal bar represents the current rank for each such block. Selecting the check box for a block enables you to drag its bar to adjust its rank. A longer horizontal bar corresponds to a higher rank. All ranks correspond to specific numeric values (and can also be specified numerically), but the rank values are evaluated only relatively for practical purposes. For example, if the rank of block A is higher than the rank of block B, the precise values involved are irrelevant; if block A and block B have events scheduled for the same simulation clock time, then the block A event will execute first.
 Controls on the allocation of resource units among resource entities have been expanded and improved.
The Resource Scheduler block dialog box adds the Adjust Units By field,
enabling you to choose the policy that is used to increase or decrease the units of resource entities when
there is a scheduled adjustment. You can choose from among the following allocation policies:

FairIntegerBased: Any adjustments to the units of a resource entity are made on an integer basis, and any fractional resource units are ignored. If resource units increase or decrease, then those units are distributed integrally and as evenly as possible among all potential resource entities. This is the new default allocation policy.

IntegerBased: For a scheduled decrease in resource units, the units of the first targeted resource entity are integrally decreased as much as possible. If necessary, other resource entities are targeted if the first entity does not have enough units to cover the scheduled decrease. For an increase in resource units, this policy is the same as the FairIntegerBased policy.

FractionBased: For a scheduled increase in resource units, the additional units are distributed evenly among all targeted resource entities, potentially resulting in fractional units for some resource entities. For a scheduled decrease in resource units, the behavior is the same as for the IntegerBased policy, except that fractional units are also included. This was the default allocation policy in releases prior to SAS Simulation Studio 14.1.

 In previous releases of SAS Simulation Studio, you were required to manually launch the local SAS server (on the PC where SAS Simulation Studio is installed), which you can use to read a SAS data set, write simulated data to a SAS data set, or run a SAS program. Now SAS Simulation Studio automatically launches a local SAS server whenever it is needed. Optionally, you can configure the local SAS server by specifying a port number in the Configuration dialog box. This option requires you to provide your credentials before using the server, either at the start of your session or when prompted. This is identical to the new credentialing procedure that you follow when using the Remote SAS Workspace Server. In all cases, the local or remote SAS server also operates if you are running a model in batch mode.
Download a pdf version of this document
Procedures
 The BOM Procedure
Performs bill of material processing.
PDF  HTML  The CLP Procedure
A finitedomain constraint programming solver for constraint satisfaction problems (CSPs) with linear, logical, global, and scheduling constraints.
PDF  HTML  The CPM Procedure
Used for planning, controlling, and monitoring a project.
PDF  HTML  The DTREE Procedure
An interactive procedure for decision analysis, it interprets a decision problem represented in SAS data sets, finds the optimal decisions, and plots on a line printer or a graphics device the decision tree showing the optimal decisions.
PDF  HTML  The GA Procedure
Enables implementation of the basic genetic algorithm by default, and to employ other advanced techniques to handle constraints, accelerate convergence, and perform multiobjective optimizations.
PDF  HTML  The GANTT Procedure
Produces a Gantt chart, which is a graphical scheduling tool for the planning and control of a project.
PDF  HTML  The NETDRAW Procedure
Draws a network diagram of the activities in a project.
PDF  HTML  The OPTLP Procedure
Provides three methods of solving linear programs (LPs).
PDF  HTML  The OPTLSO Procedure
Performs parallel hybrid global or local search optimization to solve problems that have "black box" objective functions, continuous or discrete decision variables, and linear or nonlinear constraints.
PDF  HTML  The OPTMILP Procedure
The OPTMILP procedure is a solver for general mixed integer linear programs (MILPs).
PDF  HTML  The OPTMODEL Procedure
Comprises the powerful OPTMODEL modeling language and stateoftheart solvers for several classes of mathematical programming problems.
PDF  HTML  The OPTNET Procedure
Used to analyze relationships between entities.
PDF  HTML  The OPTQP Procedure
Solves quadratic programs—problems with quadratic objective function and a collection of linear constraints, including lower and/or upper bounds on the decision variables.
PDF  HTML  The PM Procedure
An interactive procedure that can be used for planning, controlling, and monitoring a project.
PDF  HTML
Solvers
 The Constraint Programming (CLP) Solver
A solver for constraint satisfaction problems with discrete variables and linear, logical, and global constraints. Specification of an objective function is optional.
PDF  HTML  The Decomposition Algorithm
Provides an alternative method for solving linear or mixed integer linear optimization problems, exploiting special structure in the constraint matrix and solving subproblems in parallel.
PDF  HTML  The Linear Programming (LP) Solver
Provides a framework for specifying and solving linear programs (LPs).
PDF  HTML  The Mixed Integer Linear Programming (MILP) Solver
Provides a framework for specifying and solving mixed integer linear programs (MILPs).
PDF  HTML  The Network Solver
Provides access to a set of graph theory and network optimization and analysis algorithms.
PDF  HTML  The Nonlinear Programming (NLP) Solver
The sparse nonlinear programming (NLP) solver is a component of the OPTMODEL procedure that can solve optimization problems containing both nonlinear equality and inequality constraints.
PDF  HTML  The Quadratic Programming (QP) Solver
Provides a framework for specifying and solving quadratic programs.
PDF  HTML
Legacy Procedures and Solvers
 The INTPOINT Procedure
Solves the Network Program with Side Constraints (NPSC) problem and the more general Linear Programming (LP) problem.
PDF  HTML  The LP Procedure
Solves linear programs, integer programs, and mixedinteger programs. It also performs parametric programming and range analysis, and it reports on solution sensitivity to changes in the righthandside constants and price coefficients.
PDF  HTML  The NETFLOW Procedure
Accepts the network specification in a format that is particularly suited to networks.
PDF  HTML  The NLP Procedure
Offers a set of optimization techniques for minimizing or maximizing a continuous nonlinear function f(x) of n decision variables, x = (x_{1}.....x_{n})^{T} with lower and upper bound, linear and nonlinear, equality and inequality constraints.
PDF  HTML  The NLPC Nonlinear Optimization (NLPC) Solver
Solves unconstrained nonlinear optimization problems and problems with a nonlinear objective function subject to bound, linear, or nonlinear constraints. It provides several optimization techniques that effectively handle these classes of problems. HTML  The Unconstrained Nonlinear Programming (NLPU) Solver
Used for solving general unconstrained nonlinear programming (NLP) problems. HTML  The Sequential Quadratic Programming (SQP) Solver
The sequential quadratic programming (SQP) solver is a component of the OPTMODEL procedure, and it can be used for solving general nonlinear programming (NLP) problems. HTML
Topics
SAS/OR Documentation Examples
For examples in the documentation, go to SAS/OR software documentation examples.SAS/OR Software Examples
The following SAS/OR software examples are not included in the SAS/OR documentation and are available only on the Web.
Videos
Air date: January 25, 2016 
Air date: February 11, 2015 
Air date: November 20, 2014 
Air date: December 10, 2013 
Air date: July 10, 2013 
Air date:July 10, 2013 
Air date:July 10, 2013 
Air date:July 10, 2013 
2016 Papers
 Using the OPTMODEL Procedure in SAS/OR to Find the k Best Solutions
Pratt, Rob; SAS Institute, Inc. 2016This paper uses various techniques for finding the k best solutions to the linear assignment problem in order to illustrate several features recently added to the OPTMODEL procedure in SAS/OR software.
 Using SAS Simulation Studio to Test and Validate SAS/OR Optimization Models
Hughes, Ed; Lada, Emily; Lopes, Leo; Pólik, Imre ; SAS Institute, Inc. 2016This paper begins with a look at both optimization modeling and discreteevent simulation modeling, and explores how they can most effectively work together to create additional analytic value. It then considers two examples of a combined optimization and simulation approach and discusses the resulting benefits.
SAS/OR software integrates essential optimization, scheduling, simulation, and related modeling and solution capabilities in an adaptable environment. Its powerful set of management science solutions provide companies the knowledge they need to identify and optimize business processes and management challenges. SAS/OR software is designed for people with operations research/management science or similar training who are seeking to build and solve decision guidance models that use one or more of the following operations research techniques:
 mathematical programming
 discrete event simulation
 project and resource scheduling
 local search optimization
 decision analysis
 billofmaterial (BOM) processing
These capabilities are supported and complemented by SAS software's strengths in data access and integration, analytics, and business intelligence. SAS/OR software tools also form the heart of optimization solutions such as SAS Marketing Optimization and SAS Revenue Optimization Suite. Some of the many applications that lend themselves to the use of SAS/OR tools include the following:
 project planning
 management information systems
 resource allocation and management
 financial planning
 production planning and inventory control
 supply chain management and optimization
 transportation and distribution planning
 material resource planning
 job shop scheduling
To see some uses of SAS/OR software in applications that address business planning problems, try out the supply chain optimization demos.