Contents
About
Acknowledgments
Credits
Documentation
Software
Support Groups
Acknowledgments
What’s New in SAS/OR 9.22
Overview
Highlights of Enhancements in SAS/OR 9.22
Highlights of Enhancements in SAS/OR 9.2
SAS/OR Documentation
The GANTT Procedure
Microsoft Project Conversion Macros
The CLP Procedure
The OPTMODEL Procedure
The OPTMILP Procedure
SAS Simulation Studio
Using This Book
Purpose
Organization
Typographical Conventions
Conventions for Examples
Accessing the SAS/OR Sample Library
Online Documentation
Additional Documentation for SAS/OR Software
Introduction to Optimization
Overview
Linear Programming Problems
PROC OPTLP
PROC OPTMODEL
PROC LP
PROC INTPOINT
Network Problems
PROC NETFLOW
PROC INTPOINT
Mixed Integer Linear Problems
PROC OPTMILP
PROC OPTMODEL
PROC LP
Quadratic Programming Problems
PROC OPTQP
PROC OPTMODEL
Nonlinear Problems
PROC OPTMODEL
PROC NLP
Model Building
PROC OPTLP
PROC NETFLOW
PROC OPTMODEL
Matrix Generation
Exploiting Model Structure
Report Writing
The DATA Step
Other Reporting Procedures
References
The INTPOINT Procedure
Overview: INTPOINT Procedure
Mathematical Description of NPSC
Mathematical Description of LP
The Interior Point Algorithm
Network Models
Introduction
Getting Started: NPSC Problems
Getting Started: LP Problems
Typical PROC INTPOINT Run
Syntax: INTPOINT Procedure
Functional Summary
Dictionary of Options
PROC INTPOINT Statement
CAPACITY Statement
COEF Statement
COLUMN Statement
COST Statement
DEMAND Statement
HEADNODE Statement
ID Statement
LO Statement
NAME Statement
NODE Statement
QUIT Statement
RHS Statement
ROW Statement
RUN Statement
SUPDEM Statement
SUPPLY Statement
TAILNODE Statement
TYPE Statement
VAR Statement
Details: INTPOINT Procedure
Input Data Sets
Output Data Sets
Converting Any PROC INTPOINT Format to an MPS-Format SAS Data Set
Case Sensitivity
Loop Arcs
Multiple Arcs
Flow and Value Bounds
Tightening Bounds and Side Constraints
Reasons for Infeasibility
Missing S Supply and Missing D Demand Values
Balancing Total Supply and Total Demand
How to Make the Data Read of PROC INTPOINT More Efficient
Stopping Criteria
Examples: INTPOINT Procedure
Production, Inventory, Distribution Problem
Altering Arc Data
Adding Side Constraints
Using Constraints and More Alteration to Arc Data
Nonarc Variables in the Side Constraints
Solving an LP Problem with Data in MPS Format
Converting to an MPS-Format SAS Data Set
References
The LP Procedure
Overview: LP Procedure
Getting Started: LP Procedure
An Introductory Example
An Integer Programming Example
An MPS Format to Sparse Format Conversion Example
Syntax: LP Procedure
Functional Summary
Dictionary of Options
PROC LP Statement
COEF Statement
COL Statement
ID Statement
IPIVOT Statement
PIVOT Statement
PRINT Statement
QUIT Statement
RANGE Statement
RESET Statement
RHS Statement
RHSSEN Statement
ROW Statement
RUN Statement
SHOW Statement
TYPE Statement
VAR Statement
Details: LP Procedure
Missing Values
Dense Data Input Format
Sparse Data Input Format
Converting Any PROC LP Format to an MPS-Format SAS Data Set
Converting Standard MPS Format to Sparse Format
The Reduced Costs, Dual Activities, and Current Tableau
Macro Variable ORLP
Pricing
Scaling
Preprocessing
Integer Programming
Sensitivity Analysis
Range Analysis
Parametric Programming
Interactive Facilities
Memory Management
Output Data Sets
Input Data Sets
Displayed Output
ODS Table and Variable Names
Memory Limit
Examples: LP Procedure
An Oil Blending Problem
A Sparse View of the Oil Blending Problem
Sensitivity Analysis: Changes in Objective Coefficients
Additional Sensitivity Analysis
Price Parametric Programming for the Oil Blending Problem
Special Ordered Sets and the Oil Blending Problem
Goal-Programming a Product Mix Problem
A Simple Integer Program
An Infeasible Problem
Restarting an Integer Program
Alternative Search of the Branch-and-Bound Tree
An Assignment Problem
A Scheduling Problem
A Multicommodity Transshipment Problem with Fixed Charges
Converting to an MPS-Format SAS Data Set
References
The NLP Procedure
Overview: NLP Procedure
Getting Started: NLP Procedure
Introductory Examples
Syntax: NLP Procedure
Functional Summary
Dictionary of Options
PROC NLP Statement
ARRAY Statement
BOUNDS Statement
BY Statement
CRPJAC Statement
DECVAR Statement
GRADIENT Statement
HESSIAN Statement
INCLUDE Statement
JACNLC Statement
JACOBIAN Statement
LABEL Statement
LINCON Statement
MATRIX Statement
MIN, MAX, and LSQ Statements
MINQUAD and MAXQUAD Statements
NLINCON Statement
PROFILE Statement
Program Statements
Details: NLP Procedure
Criteria for Optimality
Optimization Algorithms
Finite-Difference Approximations of Derivatives
Hessian and CRP Jacobian Scaling
Testing the Gradient Specification
Termination Criteria
Active Set Methods
Feasible Starting Point
Line-Search Methods
Restricting the Step Length
Computational Problems
Covariance Matrix
Input and Output Data Sets
Displayed Output
Missing Values
Computational Resources
Memory Limit
Examples: NLP Procedure
Using the DATA= Option
Using the INQUAD= Option
Using the INEST=Option
Restarting an Optimization
Approximate Standard Errors
Maximum Likelihood Weibull Estimation
Simple Pooling Problem
Chemical Equilibrium
Minimize Total Delay in a Network
References
The NETFLOW Procedure
Overview: NETFLOW Procedure
Introduction
Network Models
Side Constraints
Advantages of Network Models over LP Models
Mathematical Description of NPSC
Flow Conservation Constraints
Nonarc Variables
Warm Starts
Getting Started: NETFLOW Procedure
Introductory Example
Syntax: NETFLOW Procedure
Functional Summary
Dictionary of Options
Interactivity
PROC NETFLOW Statement
CAPACITY Statement
COEF Statement
COLUMN Statement
CONOPT Statement
COST Statement
DEMAND Statement
HEADNODE Statement
ID Statement
LO Statement
MULT Statement
NAME Statement
NODE Statement
PIVOT Statement
PRINT Statement
QUIT Statement
RESET Statement
RHS Statement
ROW Statement
RUN Statement
SAVE Statement
SHOW Statement
SUPDEM Statement
SUPPLY Statement
TAILNODE Statement
TYPE Statement
VAR Statement
Details: NETFLOW Procedure
Input Data Sets
Output Data Sets
Converting Any PROC NETFLOW Format to an MPS-Format SAS Data Set
Case Sensitivity
Loop Arcs
Multiple Arcs
Pricing Strategies
Dual Variables, Reduced Costs, and Status
The Working Basis Matrix
Flow and Value Bounds
Tightening Bounds and Side Constraints
Reasons for Infeasibility
Missing S Supply and Missing D Demand Values
Balancing Total Supply and Total Demand
Warm Starts
How to Make the Data Read of PROC NETFLOW More Efficient
Macro Variable ORNETFL
Memory Limit
The Interior Point Algorithm: NETFLOW Procedure
Introduction
Network Models: Interior Point Algorithm
Linear Programming Models: Interior Point Algorithm
Generalized Networks: NETFLOW Procedure
What Is a Generalized Network?
How to Specify Data for Arc Multipliers
Using the New EXCESS= Option in Pure Networks: NETFLOW Procedure
Handling Excess Supply or Demand
Handling Missing Supply and Demand Simultaneously
Maximum Flow Problems
Handling Supply and Demand Ranges
Using the New EXCESS= Option in Generalized Networks: NETFLOW Procedure
Total Supply and Total Demand: How Generalized Networks Differ from Pure Networks
The EXCESS=SUPPLY Option
The EXCESS=DEMAND Option
Examples: NETFLOW Procedure
Shortest Path Problem
Minimum Cost Flow Problem
Using a Warm Start
Production, Inventory, Distribution Problem
Using an Unconstrained Solution Warm Start
Adding Side Constraints, Using a Warm Start
Using a Constrained Solution Warm Start
Nonarc Variables in the Side Constraints
Pure Networks: Using the EXCESS= Option
Maximum Flow Problem
Generalized Networks: Using the EXCESS= Option
Generalized Networks: Maximum Flow Problem
Machine Loading Problem
Generalized Networks: Distribution Problem
Converting to an MPS-Format SAS Data Set
References
The OPTMODEL Procedure
Overview: OPTMODEL Procedure
Getting Started: OPTMODEL Procedure
An Unconstrained Optimization Example
The Rosenbrock Problem
A Transportation Problem
OPTMODEL Modeling Language: Basic Concepts
Named Parameters
Indexing
Types
Names
Parameters
Expressions
Identifier Expressions
Function Expressions
Index Sets
Syntax: OPTMODEL Procedure
Functional Summary
PROC OPTMODEL Statement
Declaration Statements
Programming Statements
Macro Variable OROPTMODEL
OPTMODEL Expression Extensions
AND Aggregation Expression
CARD Function
CROSS Expression
DIFF Expression
IF-THEN/ELSE Expression
IN Expression
Index Set Expression
INTER Expression
INTER Aggregation Expression
MAX Aggregation Expression
MIN Aggregation Expression
OR Aggregation Expression
PROD Aggregation Expression
Range Expression
Set Constructor Expression
Set Literal Expression
SETOF Aggregation Expression
SLICE Expression
SUM Aggregation Expression
SYMDIFF Expression
Tuple Expression
UNION Expression
UNION Aggregation Expression
WITHIN Expression
Details: OPTMODEL Procedure
Conditions of Optimality
Data Set Input/Output
Control Flow
Formatted Output
ODS Table and Variable Names
Constraints
Suffixes
Integer Variable Suffixes
Dual Values
Reduced Costs
Presolver
Model Update
Multiple Subproblems
Problem Symbols
OPTMODEL Options
Automatic Differentiation
Conversions
More on Index Sets
Memory Limit
Threaded Processing
Examples: OPTMODEL Procedure
Matrix Square Root
Reading from and Creating a Data Set
Model Construction
Set Manipulation
Multiple Subproblems
Rewriting NLP Models for PROC OPTMODEL
References
The Interior Point NLP Solver
Overview: IPNLP Solver
Getting Started: IPNLP Solver
Syntax: IPNLP Solver
Functional Summary
IPNLP Solver Options
Details: IPNLP Solver
Basic Definitions and Notation
Overview of Constrained Optimization
Overview of Interior Point Methods
Solver Termination Criterion
Solver Termination Messages
Macro Variable OROPTMODEL
Examples: IPNLP Solver
Solving Highly Nonlinear Optimization Problems
Solving Unconstrained Optimization Problems
Solving NLP Problems with Range Constraints
Solving Large-Scale NLP Problems
References
The Linear Programming Solver
Overview: LP Solver
Getting Started: LP Solver
Syntax: LP Solver
Functional Summary
LP Solver Options
Details: LP Solver
Presolve
Pricing Strategies for the Primal Simplex Solver
The Interior Point Algorithm: Overview
Macro Variable OROPTMODEL
Iteration Log for the Simplex Solvers
Iteration Log for the Interior Point Solver
Problem Statistics
Data Magnitude and Variable Bounds
Variable and Constraint Status
Irreducible Infeasible Set
Examples: LP Solver
Diet Problem
Reoptimizing the Diet Problem Using BASIS=WARMSTART
Two-Person Zero-Sum Game
Finding an Irreducible Infeasible Set
References
The Mixed Integer Linear Programming Solver
Overview: MILP Solver
Getting Started: MILP Solver
Syntax: MILP Solver
Functional Summary
MILP Solver Options
Details: MILP Solver
The Branch-and-Bound Algorithm
Controlling the Branch-and-Bound Algorithm
Presolve and Probing
Cutting Planes
Primal Heuristics
Node Log
Problem Statistics
Data Magnitude and Variable Bounds
Macro Variable OROPTMODEL
Examples: MILP Solver
Scheduling
Multicommodity Transshipment Problem with Fixed Charges
Facility Location
Traveling Salesman Problem
References
The NLPCNonlinear Optimization Solver
Overview: NLPCNonlinear Optimization Solver
Optimization Techniques and Types of Problems Solved
Getting Started: NLPCNonlinear Optimization Solver
Introductory Examples
Syntax: NLPCNonlinear Optimization Solver
Functional Summary
NLPCSolver Options
Details: NLPCNonlinear Optimization Solver
Optimization Algorithms
Conditions of Optimality
Optimality Control
Infeasibility
Feasible Starting Point
Line-Search Method
Computational Problems
Iteration Log
Macro Variable OROPTMODEL
Examples: NLPCNonlinear Optimization Solver
Least Squares Problem
Maximum Likelihood Weibull Model
Simple Pooling Problem
References
The Unconstrained Nonlinear Programming Solver
Overview: NLPU Solver
Getting Started: NLPU Solver
Introductory Examples
Syntax: NLPU Solver
Functional Summary
NLPU Solver Options
Details: NLPU Solver
Conditions of Optimality
Line-Search Algorithm
Trust-Region Algorithm
Broyden-Fletcher-Goldfarb-Shanno (BFGS) Algorithm
Macro Variable OROPTMODEL
Examples: NLPU Solver
Solving a Highly Nonlinear Problem
Solving the Accumulated Rosenbrock Function
Solving a Bound-Constrained Optimization Problem
References
The Quadratic Programming Solver
Overview: QP Solver
Getting Started: QP Solver
Syntax: QP Solver
Functional Summary
QP Solver Options
Details: QP Solver
Interior Point Algorithm: Overview
Iteration Log
Problem Statistics
Macro Variable OROPTMODEL
Examples: QP Solver
Linear Least Squares Problem
Portfolio Optimization
Portfolio Selection with Transactions
References
The Sequential Quadratic Programming Solver
Overview: SQP Solver
Getting Started: SQP Solver
Syntax: SQP Solver
Functional Summary
SQP Solver Options
Details: SQP Solver
Conditions of Optimality
Solution Techniques
Solver Termination Messages
Macro Variable OROPTMODEL
Examples: SQP Solver
Solving a Highly Nonlinear Problem
Using the HESCHECK Option
Choosing a Good Starting Point
Using the PENALTY= Option
Unconstrained NLP Optimization
Solving Large-Scale NLP Problems
References
The MPS-Format SAS Data Set
Overview: MPS-Format SAS Data Set
Observations
Order of Sections
Sections Format: MPS-Format SAS Data Set
NAME Section
ROWS Section
COLUMNS Section
RHS Section (Optional)
RANGES Section (Optional)
BOUNDS Section (Optional)
BRANCH Section (Optional)
QSECTION Section
ENDATA Section
Details: MPS-Format SAS Data Set
Converting an MPS/QPS-Format File: %MPS2SASD
Length of Variables
Examples: MPS-Format SAS Data Set
MPS-Format Data Set for a Product Mix Problem
Fixed-MPS-Format File
Free-MPS-Format File
Using the %MPS2SASD Macro
References
The OPTLP Procedure
Overview: OPTLP Procedure
Getting Started: OPTLP Procedure
Syntax: OPTLP Procedure
Functional Summary
PROC OPTLP Statement
PROC OPTLP Macro Variable
Details: OPTLP Procedure
Data Input and Output
Presolve
Pricing Strategies for the Simplex Solvers
Warm Start for the Simplex Solvers
The Interior Point Algorithm: Overview
Iteration Log for the Simplex Solvers
Iteration Log for the Interior Point Solver
ODS Tables
Irreducible Infeasible Set
Memory Limit
Examples: OPTLP Procedure
Oil Refinery Problem
Using the Interior Point Solver
The Diet Problem
Reoptimizing after Modifying the Objective Function
Reoptimizing after Modifying the Right-Hand Side
Reoptimizing after Adding a New Constraint
Finding an Irreducible Infeasible Set
References
The OPTMILP Procedure
Overview: OPTMILP Procedure
Getting Started: OPTMILP Procedure
Syntax: OPTMILP Procedure
Functional Summary
PROC OPTMILP Statement
Macro Variable OROPTMILP
Details: OPTMILP Procedure
Data Input and Output
Warm Start
The Branch-and-Bound Algorithm
Controlling the Branch-and-Bound Algorithm
Presolve and Probing
Cutting Planes
Primal Heuristics
Node Log
ODS Tables
Memory Limit
Examples: OPTMILP Procedure
Simple Integer Linear Program
MIPLIB Benchmark Instance
Facility Location
References
The OPTQP Procedure
Overview: OPTQP Procedure
Getting Started: OPTQP Procedure
Syntax: OPTQP Procedure
Functional Summary
PROC OPTQP Statement
PROC OPTQP Macro Variable
Details: OPTQP Procedure
Output Data Sets
Interior Point Algorithm: Overview
Iteration Log for the OPTQP Procedure
ODS Tables
Memory Limit
Examples: OPTQP Procedure
Linear Least Squares Problem
Portfolio Optimization
Portfolio Selection with Transactions
References
Product
Release
SAS/OR
9.22
Type
Usage and Reference
Copyright Date
May 2010
Last Updated
18May2010