Introduction


Introduction

This book contains all 29 examples from the classic book Model Building in Mathematical Programming by H. Paul Williams. For each example, the problem statement is first repeated verbatim from Williams (1999) for the first 24 chapters and from Williams (2013) for the remaining chapters.[1] Then the problem is solved using the OPTMODEL procedure in SAS/OR software.

The examples cover linear programming, mixed integer linear programming, and quadratic programming. In most cases, the problem is solved with a single call to one of the mathematical programming solvers available in PROC OPTMODEL. The purpose of this book is to supplement the SAS/OR User's Guide: Mathematical Programming with additional examples that demonstrate best practices.

Each chapter contains five sections, described as follows.

  • Problem Statement:Repeats verbatim the problem description, including any tables and figures, from Williams (1999) or Williams (2013).

  • Mathematical Programming Formulation:Describes the index sets, parameters, decision variables, objectives, and constraints for one formulation of the problem.

  • Input Data:Creates the input data sets and macro variables to be used by PROC OPTMODEL.

  • PROC OPTMODEL Statements and Output:Shows and discusses the PROC OPTMODEL statements that declare sets and parameters, read the input data, formulate the mathematical programming problem, solve the problem, and output the solution. Also shows the output that is created by PROC OPTMODEL and occasionally other SAS procedures.

  • Features Demonstrated:Lists the important PROC OPTMODEL features demonstrated in this example.

Although PROC OPTMODEL is case-insensitive, in the interest of clarity a few typographical conventions are observed regarding capitalization of names:

OPTMODEL Expression

Capitalization

Index set names

All uppercase

Index set member names

All lowercase

Parameter names

All lowercase

Variable names (including implicit variables)

First letter of each word

Objective names

First letter of each word

Constraint names

First letter

The examples shown here are small and not computationally challenging. Throughout, a separation between data and model is maintained so that you can solve larger or more difficult instances without modifying the PROC OPTMODEL statements. A user who learns the techniques demonstrated in these examples will be well-prepared to use PROC OPTMODEL to tackle similar modeling challenges that arise in real-world problems.



[1] Figures and tables are numbered differently so that they match the chapter organization of this book. To be consistent with the verbatim problem statement, all other sections use British spelling. However, for clarity, large numbers and decimals are punctuated in American style (for example, 10,000 instead of 10 000 and 0.5 instead of 0$\cdot $5), words are occasionally added or changed (with the changes shown inside square brackets), and punctuation is occasionally changed.