Title: Chapter 3: Linear Programming Problems: Additional Topics
19
Chapter 3 Linear Programming Problems
Additional Topics
3.1 Basic Control Flow and Operators in the OPTMODEL Procedure
3.2 Model Updates in the OPTMODEL Procedure
3.3 Sensitivity Analysis and Parametric Programming (Self-Study)
3.4 Network Flow Models
29
Chapter 3 Linear Programming Problems
Additional Topics
3.1 Basic Control Flow and Operators in the OPTMODEL Procedure
3.2 Model Updates in the OPTMODEL Procedure
3.3 Sensitivity Analysis and Parametric Programming (Self-Study)
3.4 Network Flow Models
3Objectives
- Program simple routines using PROC OPTMODEL as an
algebraic modeling language.
4PROC OPTMODEL Programming Statements
- Control flow statements in PROC OPTMODEL should
be familiar to users of the SAS DATA step
assignment () CONTINUE DO (blocks) DO
(iterative) DO UNTIL DO WHILE FOR IF THEN IF
THEN ELSE LEAVE null () STOP
5PROC OPTMODEL Programming Statements
- FOR iterates over the
members of an index set.
assignment () CONTINUE DO (blocks) DO
(iterative) DO UNTIL DO WHILE FOR IF THEN IF
THEN ELSE LEAVE null () STOP
num DistOrigins,Destinations num
LongCities, LatCities for i in Origins
for j in Destinations / calculate
Disti,j /
Task Calculate the distances between all origin
and destination locations.
6PROC OPTMODEL Programming Statements
- FOR iterates over the
members of an index set.
assignment () CONTINUE DO (blocks) DO
(iterative) DO UNTIL DO WHILE FOR IF THEN IF
THEN ELSE LEAVE null () STOP
num DistOrigins,Destinations num
LongCities, LatCities for i in Origins
for j in Destinations / calculate
Disti,j /
(There is a distance formula if Long and Lat are
measured in radians.)
7PROC OPTMODEL Programming Statements
- FOR iterates over the
members of an index set.
assignment () CONTINUE DO (blocks) DO
(iterative) DO UNTIL DO WHILE FOR IF THEN IF
THEN ELSE LEAVE null () STOP
num DistOrigins,Destinations num
LongCities, LatCities for i in Origins
do x1 Longi y1 Lati for j in
Destinations if (ij) then Disti,j0
else do x2 Longj y2 Latj
Disti,j arcos(sin(y1)sin(y2)
cos(y1)cos(y2)cos(x2-x1))3956 end
end
8PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
9PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
lt1,1gt lt3,1gt lt4,1gt lt5,1gt
lt1,2gt lt3,2gt lt6,2gt
lt2,3gt lt4,3gt
lt1,4gt lt2,4gt lt4,4gt lt5,4gt lt6,4gt
lt2,5gt lt3,5gt lt6,5gt
lt1,6gt lt3,6gt lt4,6gt
2 3 6
SLICE(lt ,5gt,SET)2,3,6
10PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
lt2,1gt lt3,1gt lt6,1gt
lt2,2gt lt3,2gt lt6,2gt
lt2,4gt lt3,4gt lt6,4gt
lt2,5gt lt3,5gt lt6,5gt
2 3 6
2,3,6 CROSS 1,2,4,5
11PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes
12PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes Nodes unionlti,jgt in Arcs
i,j
13PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths ????
Task Find all nodes connected by paths.
14PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
15PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
16PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
17PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
18PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
19PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
20PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
21PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
22PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
23PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
B
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Network of Nodes and Arcs and Paths
of Arcs
C
A
D
E
set Arcs /ltA Bgt ltB Cgt ltC Dgt ltD Egt ltA Dgt/
set ltstrgt Nodes set ltstr,strgt Paths Nodes
unionlti,jgt in Arcs i,j Paths Arcs
for n in Nodes Paths Paths union (
slice(lt,ngt,Paths) cross slice(ltn,gt,Paths)
)
24Computing Reachable Nodes Using PROC OPTMODEL
reachable.sas
- This demonstration illustrates some of the set
operations available in PROC OPTMODEL to find the
find all the nodes that are reachable by paths in
a simple network of nodes and arcs.
25PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
Productioni
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
Demandi
num T 5, Demand1..T var
Production1..T, Inventory1..T-1 con
Inventory_Balancei in 1..T Productioni
Demandi ????
Task Formulate balance constraints.
26PROC OPTMODEL Set and Logical Operators
- PROC OPTMODEL defines new types of expressions
for the manipulation of sets, such as
aggregation operators.
AND CARD CROSS DIFF IF THEN ELSE INNOT
IN INTER MAXMIN OR PRODSUM SLICE SYMDIFF UNION W
ITHIN
num T 5, Demand1..T var
Production1..T, Inventory1..T-1 con
Inventory_Balancei in 1..T Productioni
Demandi if (i1) then
Inventory1 else if (iT) then
InventoryT-1 else Inventoryi
Inventoryi-1
27Exercises 12
- These exercises reinforce the concepts discussed
previously.
289
Chapter 3 Linear Programming Problems
Additional Topics
3.1 Basic Control Flow and Operators in the OPTMODEL Procedure
3.2 Model Updates in the OPTMODEL Procedure
3.3 Sensitivity Analysis and Parametric Programming (Self-Study)
3.4 Network Flow Models
29Objectives
- Understand how the presolver simplifies linear
programming problems. - Be able to modify a linear programming problem
(changing bounds or objective/constraint
coefficients, fixing variables, adding variables
or constraints) within the OPTMODEL procedure.
30Automatic Updates The Presolver
- Before solving a mathematical programming
problem, the OPTMODEL presolver does the
following - processes linear constraints to tighten bounds on
variables - converts simple bound constraints to bounds on
variables - eliminates constraints that are implied by
variable bounds - eliminates variables whose values are fixed
31OPTMODEL Presolver Example
- Suppose that these are the constraints of the
problem
2xy 6 2x7y 14 xy 5 x 0, y
0
32OPTMODEL Presolver Example
- Suppose that these are the constraints of the
problem
2xy 6 x (6-y)/2 3 2x7y 14 y
(14-2x)/7 2 xy 5 x 0, y 0
33OPTMODEL Presolver Example
- Suppose that these are the constraints of the
problem - (The constraint xy 5 is implied by the bounds.)
2xy 6 x (6-y)/2 3 2x7y 14 y
(14-2x)/7 2 xy 5 x 0, y 0
2xy 6 2x7y 14 0 x 3, 0 y
2
34The OPTLP Presolver
- The LP solver has its own preprocessor, which can
further reduce the size of the problem
35OPTMODEL/OPTLP Presolver Options
PROC OPTMODEL PRESOLVER option
SOLVE WITH LP / PRESOLVER option
Option Description
AUTOMATIC Default setting (between moderate and aggressive)
NONE Disable presolver
BASIC Remove empty constraints, substitute fixed variables
MODERATE A higher level of preprocessing
AGGRESSIVE Highest level of preprocessing
36The PROC OPTMODEL and OPTLP Presolvers
product_mix.sas
- This demonstration illustrates the effect of the
PROC OPTMODEL and OPTLP presolvers on the organic
potting soils product mix problem.
37Adding New Variables
- Recall Tables require 3 hours of labor, 1 pound
of metal, and 2 ft3 wood. Tables sell for 55.
The dual prices show that making tables is a
profitable activity - but how many should be produced?
set ltstrgt Products, Resources num
CostResources, AvailabilityResources num
Selling_PriceProducts num RequirementsResour
ces,Products Products Products union
/tables/
38Model Updates Adding New Variables
- Recall Tables require 3 hours of labor, 1 pound
of metal, and 2 ft3 wood. Tables sell for 55.
The dual prices show that making tables is a
profitable activity - but how many should be produced?
set ltstrgt Products, Resources num
CostResources, AvailabilityResources num
Selling_PriceProducts num RequirementsResour
ces,Products Products Products union
/tables/ Selling_Price'tables'55
Requirements'labor','tables'3
Requirements'metal','tables'1
Requirements'wood','tables'2
39Reading Data for New Variables
- SAS Data Set Work.New_Products
Product Selling_Price labor metal wood
1 tables 55 3 1 2
set ltstrgt Products, Resources num
CostResources, AvailabilityResources num
Selling_PriceProducts num RequirementsResour
ces,Products Products Products union
/tables/ read data New_Products into
Product Selling_Price r in Resources
ltRequirementsr,Productcol(r)gt
40Adding a New Variable to an LP in PROC OPTMODEL
furniture_tables.sas
- This demonstration illustrates a simple way to
add a new variable to a linear programming
problem in PROC OPTMODEL.
41Changing Variable/Constraint Bounds
- In the McDonalds diet problem, suppose you want
to add the restriction that at most two of each
item can be included in the diet. - Upper and lower bounds for variables and
constraints can be modified and/or read from SAS
data sets. - Objective and constraint coefficients can also be
modified, unless their values are assigned in a
declaration statement.
for j in Food xj.ub 2
42Fixing/Unfixing Variables
- What is the minimum cost diet with a Big Mac?
- The syntax is
fix x'Big Mac' 1
FIX identifier-list ( expression )
43Fixing/Unfixing Variables
- What is the minimum cost diet with a Big Mac?
- The syntax is
- The effect can be reversed
fix x'Big Mac' 1
FIX identifier-list ( expression )
UNFIX identifier-list ( expression )
44Dropping/Restoring Constraints
- How much will the cost of the optimal diet
decrease if there is no limit on sodium? - The effect can be reversed with similar syntax
drop Diet'Sodium'
DROPRESTORE identifier-expression
45Dropping/Restoring Constraints
- How much will the cost of the optimal diet
decrease if there is no limit on sodium? - The effect can be reversed with similar syntax
- What will these statements do?
drop Diet'Sodium'
DROPRESTORE identifier-expression
drop Diet restore Diet'Cal'
Diet'Protein'
46Adding Constraints
- Some ad hoc constraints would make the McDonalds
diet problem more realistic - Limit sauces by the number/size of McNuggets
ordered (2 for 6 pieces 3 for 9 pieces 6 for 20
pieces). - Limit salad dressings and toppings by the number
of salads ordered. - Require one drink per meal.
- At most 30 of the calories should be from fat
(RDA requirement).
47Re-optimizing in PROC OPTMODEL
- For many of these updates, it is more efficient
to re-optimize, starting from the previous
optimal solution
2D LP
48Re-optimizing in PROC OPTMODEL
- For many of these updates, it is more efficient
to re-optimize, starting from the previous
optimal solution
Re-optimizing (Primal Simplex)
3D LP
2D LP
49The BASISWARMSTART Option
- To re-optimize, the presolvers should be disabled
and the primal or dual simplex solver called - When the optimal solution is feasible for the new
problem (adding variables, changing objective)
use the primal simplex otherwise (changing
bounds, adding constraints), use the dual
simplex.
PROC OPTMODEL PRESOLVERNONE SOLVE
WITH LP / BASIS WARMSTART PRESOLVERNONE
SOLVERPSDS
50Bogus OPTMODEL Program Structure
- What is wrong with this OPTMODEL program
structure?
proc optmodel presolvernone / declare
sets and parameters / / declare variables
/ / declare constraints / for j
in index-set do / declare objective
/ solve with lp / basiswarmstart
presolvernone / print
solution / end quit
51Corrected OPTMODEL Program Structure
proc optmodel presolvernone / declare
sets and parameters / / declare variables
/ / declare constraints / /
declare objective / for j in index-set
do parameter j solve with lp
/ basiswarmstart
presolvernone / print solution /
end quit
52Re-Optimizing the McDonalds Diet Problem
in PROC OPTMODEL mcdonalds_reopt.sas
- This demonstration illustrates how PROC OPTMODEL
can be used to re-optimize after making various
updates to the McDonalds diet problem.
53Exercises 3-4
- These exercises reinforce the concepts discussed
previously.