Contents
About
Acknowledgments
Credits
Documentation
Software
Support Groups
Acknowledgments
What's New in SAS/OR 9.2
Using This Book
Purpose
Organization
Typographical Conventions
Conventions for Examples
Accessing the SAS/OR Sample Library
Online Help System and Updates
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
Macro Variable _ORINTPO
Memory Limit
Examples: INTPOINT Procedure
Example 2.1: Production, Inventory, Distribution Problem
Example 2.2: Altering Arc Data
Example 2.3: Adding Side Constraints
Example 2.4: Using Constraints and More Alteration to Arc Data
Example 2.5: Nonarc Variables in the Side Constraints
Example 2.6: Solving an LP Problem with Data in MPS Format
Example 2.7: 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
Example 3.1: An Oil Blending Problem
Example 3.2: A Sparse View of the Oil Blending Problem
Example 3.3: Sensitivity Analysis: Changes in Objective Coefficients
Example 3.4: Additional Sensitivity Analysis
Example 3.5: Price Parametric Programming for the Oil Blending Problem
Example 3.6: Special Ordered Sets and the Oil Blending Problem
Example 3.7: Goal-Programming a Product Mix Problem
Example 3.8: A Simple Integer Program
Example 3.9: An Infeasible Problem
Example 3.10: Restarting an Integer Program
Example 3.11: Alternative Search of the Branch-and-Bound Tree
Example 3.12: An Assignment Problem
Example 3.13: A Scheduling Problem
Example 3.14: A Multicommodity Transshipment Problem with Fixed Charges
Example 3.15: 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
Example 4.1: Using the DATA= Option
Example 4.2: Using the INQUAD= Option
Example 4.3: Using the INEST=Option
Example 4.4: Restarting an Optimization
Example 4.5: Approximate Standard Errors
Example 4.6: Maximum Likelihood Weibull Estimation
Example 4.7: Simple Pooling Problem
Example 4.8: Chemical Equilibrium
Example 4.9: 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
Example 5.1: Shortest Path Problem
Example 5.2: Minimum Cost Flow Problem
Example 5.3: Using a Warm Start
Example 5.4: Production, Inventory, Distribution Problem
Example 5.5: Using an Unconstrained Solution Warm Start
Example 5.6: Adding Side Constraints, Using a Warm Start
Example 5.7: Using a Constrained Solution Warm Start
Example 5.8: Nonarc Variables in the Side Constraints
Example 5.9: Pure Networks: Using the EXCESS= Option
Example 5.10: Maximum Flow Problem
Example 5.11: Generalized Networks: Using the EXCESS= Option
Example 5.12: Generalized Networks: Maximum Flow Problem
Example 5.13: Machine Loading Problem
Example 5.14: Generalized Networks: Distribution Problem
Example 5.15: 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
CONSTRAINT Declaration
MAX and MIN Objective Declarations
NUMBER, STRING, and SET Parameter Declarations
VAR Declaration
Programming Statements
Assignment Statement
CALL Statement
CLOSEFILE Statement
CONTINUE Statement
CREATE DATA Statement
DO Statement
DO Statement, Iterative
DO UNTIL Statement
DO WHILE Statement
DROP Statement
EXPAND Statement
FILE Statement
FIX Statement
FOR Statement
IF Statement
LEAVE Statement
Null Statement
PRINT Statement
PUT Statement
READ DATA Statement
RESET OPTIONS Statement
RESTORE Statement
SAVE MPS Statement
SAVE QPS Statement
SOLVE Statement
STOP Statement
UNFIX Statement
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
OPTMODEL Options
Automatic Differentiation
Conversions
More on Index Sets
Memory Limit
Examples: OPTMODEL Procedure
Example 6.1: Matrix Square Root
Example 6.2: Reading from and Creating a Data Set
Example 6.3: Model Construction
Example 6.4: Set Manipulation
Rewriting NLP Models for PROC OPTMODEL
References
The Interior Point Nonlinear Programming Solver -- Experimental
Overview
Getting Started
Syntax
Functional Summary
IPNLP Solver Options
Details
Basic Definitions and Notation
Overview of Constrained Optimization
Overview of Interior Point Methods
Solver Termination Criterion
Solver Termination Messages
Macro Variable _OROPTMODEL_
Examples
Example 7.1: Solving Highly Nonlinear Optimization Problems
Example 7.2: Solving Unconstrained Optimization Problems
Example 7.3: Solving NLP Problems with Range Constraints
References
The Linear Programming Solver
Overview
Getting Started
Syntax
Functional Summary
LP Solver Options
Details
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
Example 8.1: Diet Problem
Example 8.2: Reoptimizing the Diet Problem Using BASIS=WARMSTART
Example 8.3: Two-Person Zero-Sum Game
Example 8.4: Finding an Irreducible Infeasible Set
References
The Mixed Integer Linear Programming Solver
Overview
Getting Started
Syntax
Functional Summary
MILP Solver Options
Details
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
Example 9.1: Scheduling
Example 9.2: Multicommodity Transshipment Problem with Fixed Charges
Example 9.3: Facility Location
Example 9.4: Traveling Salesman Problem
References
The NLPC Nonlinear Optimization Solver
Overview
Optimization Techniques and Types of Problems Solved
Getting Started
Introductory Examples
Syntax
Functional Summary
NLPC Solver Options
Details
Optimization Algorithms
Conditions of Optimality
Optimality Control
Infeasibility
Feasible Starting Point
Line-Search Method
Computational Problems
Iteration Log
Macro Variable _OROPTMODEL_
Examples
Example 10.1: Least-Squares Problem
Example 10.2: Maximum Likelihood Weibull Model
Example 10.3: Simple Pooling Problem
References
The Unconstrained Nonlinear Programming Solver
Overview
Getting Started
Syntax
Functional Summary
NLPU Solver Options
Details
Conditions of Optimality
Line-Search Algorithm
Broyden-Fletcher-Goldfarb-Shanno (BFGS) Algorithm
Macro Variable _OROPTMODEL_
Examples
Example 11.1: Solving a Highly Nonlinear Problem
Example 11.2: Solving the Accumulated Rosenbrock Function
References
The Quadratic Programming Solver -- Experimental
Overview
Getting Started
Syntax
Functional Summary
QP Solver Options
Details
Interior Point Algorithm: Overview
Iteration Log
Problem Statistics
Macro Variable _OROPTMODEL_
Examples
Example 12.1: Linear Least-Squares Problem
Example 12.2: Portfolio Optimization
Example 12.3: Portfolio Selection with Transactions
References
The Sequential Quadratic Programming Solver
Overview
Getting Started
Syntax
Functional Summary
SQP Solver Options
Details
Conditions of Optimality
Solution Techniques
Solver Termination Messages
Macro Variable _OROPTMODEL_
Examples
Example 13.1: Solving a Highly Nonlinear Problem
Example 13.2: Using the HESCHECK Option
Example 13.3: Choosing a Good Starting Point
Example 13.4: Using the PENALTY= Option
Example 13.5: Unconstrained NLP Optimization
Example 13.6: Solving Large-Scale NLP Problems
References
The MPS-Format SAS Data Set
Overview
Observations
Order of Sections
Sections Format
NAME Section
ROWS Section
COLUMNS Section
RHS Section (Optional)
RANGES Section (Optional)
BOUNDS Section (Optional)
BRANCH Section (Optional)
QSECTION Section
ENDATA Section
Details
Converting an MPS/QPS-Format File: %MPS2SASD
Length of Variables
Examples
Example 14.1: MPS-Format Data Set for a Product Mix Problem
Example 14.2: Fixed-MPS-Format File
Example 14.3: Free-MPS-Format File
Example 14.4: 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
Example 15.1: Oil Refinery Problem
Example 15.2: Using the Interior Point Solver
Example 15.3: The Diet Problem
Example 15.4: Reoptimizing after Modifying the Objective Function
Example 15.5: Reoptimizing after Modifying the Right-Hand Side
Example 15.6: Reoptimizing after Adding a New Constraint
Example 15.7: 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
Example 16.1: Simple Integer Linear Program
Example 16.2: MIPLIB Benchmark Instance
Example 16.3: 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
Example 17.1: Linear Least-Squares Problem
Example 17.2: Portfolio Optimization
Example 17.3: Portfolio Selection with Transactions
References
Product
Release
SAS/OR
9.2
Type
Usage and Reference
Copyright Date
March 2008
Last Updated
16Jan2009