Contents
About
Acknowledgments
Credits
Documentation
Software
Support Groups
Acknowledgments
What’s New in SAS/OR 14.1
Overview
Mathematical Optimization Updates
Solver Performance Improvements
PROC OPTMODEL Improvements
Other Optimization and Related Improvements
Discrete-Event Simulation Updates
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
The OPTLP Procedure
The OPTMODEL Procedure
Mixed Integer Linear Problems
The OPTMILP Procedure
The OPTMODEL Procedure
Quadratic Programming Problems
The OPTQP Procedure
The OPTMODEL Procedure
Nonlinear Problems
The OPTMODEL Procedure
Model Building with PROC OPTMODEL
References
Shared Concepts and Topics
Multithreaded Parallel Computing
Syntax
PERFORMANCE Statement
ODS Tables
Memory Limit
Numerical Difficulties
References
The OPTMODEL Procedure
Overview: OPTMODEL Procedure
Getting Started: OPTMODEL Procedure
An Unconstrained Optimization Example
The Rosenbrock Problem
A Transportation Problem
Syntax: OPTMODEL Procedure
Functional Summary
PROC OPTMODEL Statement
Declaration Statements
Programming Statements
Details: OPTMODEL Procedure
Named Parameters
Indexing
Types
Names
Parameters
Expressions
Identifier Expressions
Function Expressions
Index Sets
OPTMODEL Expression Extensions
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
Multiple Solutions
Problem Symbols
OPTMODEL Options
Automatic Differentiation
Conversions
FCMP Routines
More on Index Sets
Threaded and Distributed Processing
Macro Variable _OROPTMODEL_
Rewriting PROC NLP Models for PROC OPTMODEL
Examples: OPTMODEL Procedure
Matrix Square Root
Reading From and Creating a Data Set
Model Construction
Set Manipulation
Multiple Subproblems
Traveling Salesman Problem
Sparse Modeling
Chemical Equilibrium
References
The Constraint Programming Solver
Overview: CLP Solver
Getting Started: CLP Solver
Send More Money
Eight Queens
Syntax: CLP Solver
Functional Summary
SOLVE WITH CLP Statement
General Options
Predicates
Common Syntax Components
ALLDIFF Predicate
ELEMENT Predicate
GCC Predicate
LEXICO Predicate
PACK Predicate
REIFY Predicate
Details: CLP Solver
Types of CSPs
Techniques for Solving CSPs
Differences between PROC OPTMODEL and PROC CLP
Macro Variable _OROPTMODEL_
Examples: CLP Solver
Logic-Based Puzzles
Alphabet Blocks Problem
Work-Shift Scheduling Problem
A Nonlinear Optimization Problem
Car Painting Problem
Scene Allocation Problem
Car Sequencing Problem
Balanced Incomplete Block Design
Progressive Party Problem
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 and Dual Simplex Algorithms
The Network Simplex Algorithm
The Interior Point Algorithm
Iteration Log for the Primal and Dual Simplex Algorithms
Iteration Log for the Network Simplex Algorithm
Iteration Log for the Interior Point Algorithm
Iteration Log for the Crossover Algorithm
Concurrent LP
Parallel Processing
Problem Statistics
Variable and Constraint Status
Irreducible Infeasible Set
Macro Variable _OROPTMODEL_
Examples: LP Solver
Diet Problem
Reoptimizing the Diet Problem Using BASIS=WARMSTART
Two-Person Zero-Sum Game
Finding an Irreducible Infeasible Set
Using the Network Simplex Algorithm
Migration to OPTMODEL: Generalized Networks
Migration to OPTMODEL: Maximum Flow
Migration to OPTMODEL: Production, Inventory, Distribution
Migration to OPTMODEL: Shortest Path
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
Branch-and-Bound Algorithm
Controlling the Branch-and-Bound Algorithm
Presolve and Probing
Cutting Planes
Primal Heuristics
Parallel Processing
Node Log
Problem Statistics
Macro Variable _OROPTMODEL_
Examples: MILP Solver
Scheduling
Multicommodity Transshipment Problem with Fixed Charges
Facility Location
Traveling Salesman Problem
References
The Network Solver
Overview: Network Solver
Getting Started: Network Solver
Syntax: Network Solver
Functional Summary
SOLVE WITH NETWORK Statement
General Options
Input and Output Options
Algorithm Options
Details: Network Solver
Input Data for the Network Solver
Solving over Subsets of Nodes and Links (Filters)
Numeric Limitations
Biconnected Components and Articulation Points
Clique
Connected Components
Cycle
Linear Assignment (Matching)
Minimum-Cost Network Flow
Minimum Cut
Minimum Spanning Tree
Shortest Path
Transitive Closure
Traveling Salesman Problem
Macro Variable _OROPTMODEL_
Examples: Network Solver
Articulation Points in a Terrorist Network
Cycle Detection for Kidney Donor Exchange
Linear Assignment Problem for Minimizing Swim Times
Linear Assignment Problem, Sparse Format versus Dense Format
Minimum Spanning Tree for Computer Network Topology
Transitive Closure for Identification of Circular Dependencies in a Bug Tracking System
Traveling Salesman Tour through US Capital Cities
References
The Nonlinear Programming Solver
Overview: NLP Solver
Getting Started: NLP Solver
A Simple Problem
A Larger Optimization Problem
An Optimization Problem with Many Local Minima
A Least Squares Estimation Problem for a Regression Model
Syntax: NLP Solver
Functional Summary
NLP Solver Options
Details: NLP Solver
Basic Definitions and Notation
Constrained Optimization
Interior Point Algorithm
Active-Set Method
Multistart
Covariance Matrix
Iteration Log for the Local Solver
Iteration Log for Multistart
Solver Termination Criterion
Solver Termination Messages
Macro Variable _OROPTMODEL_
Examples: NLP Solver
Solving Highly Nonlinear Optimization Problems
Solving Unconstrained and Bound-Constrained Optimization Problems
Solving NLP Problems with Range Constraints
Solving Large-Scale NLP Problems
Solving NLP Problems That Have Several Local Minima
Maximum Likelihood Weibull Estimation
Finding an Irreducible Infeasible Set
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
Parallel Processing
Iteration Log
Problem Statistics
Irreducible Infeasible Set
Macro Variable _OROPTMODEL_
Examples: QP Solver
Linear Least Squares Problem
Portfolio Optimization
Portfolio Selection with Transactions
References
The OPTLP Procedure
Overview: OPTLP Procedure
Getting Started: OPTLP Procedure
Syntax: OPTLP Procedure
Functional Summary
PROC OPTLP Statement
Decomposition Algorithm Statements
PERFORMANCE Statement
Details: OPTLP Procedure
Data Input and Output
Presolve
Pricing Strategies for the Primal and Dual Simplex Algorithms
Warm Start for the Primal and Dual Simplex Algorithms
The Network Simplex Algorithm
The Interior Point Algorithm
Iteration Log for the Primal and Dual Simplex Algorithms
Iteration Log for the Network Simplex Algorithm
Iteration Log for the Interior Point Algorithm
Iteration Log for the Crossover Algorithm
Concurrent LP
Parallel Processing
ODS Tables
Irreducible Infeasible Set
Macro Variable _OROPTLP_
Examples: OPTLP Procedure
Oil Refinery Problem
Using the Interior Point Algorithm
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
Using the Network Simplex Algorithm
References
The OPTMILP Procedure
Overview: OPTMILP Procedure
Getting Started: OPTMILP Procedure
Syntax: OPTMILP Procedure
Functional Summary
PROC OPTMILP Statement
Decomposition Algorithm Statements
PERFORMANCE Statement
TUNER Statement
Details: OPTMILP Procedure
Data Input and Output
Warm Start
Branch-and-Bound Algorithm
Controlling the Branch-and-Bound Algorithm
Presolve and Probing
Cutting Planes
Primal Heuristics
Parallel Processing
Node Log
ODS Tables
Macro Variable _OROPTMILP_
Examples: OPTMILP Procedure
Simple Integer Linear Program
MIPLIB Benchmark Instance
Facility Location
Scheduling
References
The OPTQP Procedure
Overview: OPTQP Procedure
Getting Started: OPTQP Procedure
Syntax: OPTQP Procedure
Functional Summary
PROC OPTQP Statement
PERFORMANCE Statement
Details: OPTQP Procedure
Output Data Sets
Interior Point Algorithm: Overview
Parallel Processing
Iteration Log for the OPTQP Procedure
ODS Tables
Irreducible Infeasible Set
Macro Variable _OROPTQP_
Examples: OPTQP Procedure
Linear Least Squares Problem
Portfolio Optimization
Portfolio Selection with Transactions
References
The Decomposition Algorithm
Overview: Decomposition Algorithm
Getting Started: Decomposition Algorithm
Solving a MILP with DECOMP and PROC OPTMODEL
Solving a MILP with DECOMP and PROC OPTMILP
Syntax: Decomposition Algorithm
Decomposition Algorithm Options in the PROC OPTLP Statement or the SOLVE WITH LP Statement in PROC OPTMODEL
Decomposition Algorithm Options in the PROC OPTMILP Statement or the SOLVE WITH MILP Statement in PROC OPTMODEL
DECOMP Statement
DECOMP_MASTER Statement
DECOMP_MASTER_IP Statement
DECOMP_SUBPROB Statement
Details: Decomposition Algorithm
Data Input
Decomposition Algorithm
Parallel Processing
Special Case: Identical Blocks and Ryan-Foster Branching
Log for the Decomposition Algorithm
Examples: Decomposition Algorithm
Multicommodity Flow Problem and METHOD=NETWORK
Generalized Assignment Problem
Block-Diagonal Structure and METHOD=CONCOMP in Single-Machine Mode
Block-Diagonal Structure and METHOD=CONCOMP in Distributed Mode
Block-Angular Structure and METHOD=AUTO
Bin Packing Problem
Resource Allocation Problem
Vehicle Routing Problem
ATM Cash Management in Single-Machine Mode
ATM Cash Management in Distributed Mode
Kidney Donor Exchange and METHOD=SET
References
The OPTMILP Option Tuner
Overview: The OPTMILP Option Tuner
Getting Started: The OPTMILP Option Tuner
Syntax: The OPTMILP Option Tuner
Functional Summary
PERFORMANCE Statement
TUNER Statement
Details: The OPTMILP Option Tuner
Data Input and Output
Default Set of Tuning Options
Full Set of Tuning Options
Tuner Log
ODS Tables
Examples: The OPTMILP Option Tuner
Tuning the Default Set of Options for a Single Problem
Tuning a Defined Set of Options for Multiple Problems
Tuning a Defined Set of Options for Multiple Problems in Distributed Mode
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 (Optional)
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
Product
Release
SAS/OR
14.1
Type
Usage and Reference
Copyright Date
July 2015
Last Updated
14Jul2015