Transportation
Download
Report
Transcript Transportation
New Stage
Course Phases
Description of Systems and Issues
Prescriptive tools and modeling
International Aspects
Prescriptive Tools & Models
Network Flows
Principally Transportation
Limited direct applications
Good start on modeling
Integer answers for free
Added realism
Weight and cube -- conveyance capacity
Frequency and Schedule Driven systems
Inventory and Load Driven systems
Trailer fill and customer service
Location models
Routing
No Text
There is no text for this portion of the
course
Be sure to ask questions in class
Work on your case! The issues in the case
parallel those covered in class
Keep up. Attend help sessions with Manu.
The Case is excellent preparation for the
exam.
Transportation/Network Models
Single Commodity
Route Selection (Shortest Path)
Basic Network Design (Spanning Tree)
Basic Transportation (Transportation Model)
Cross Docking (Transshipment Models)
Multiple Commodities
Route Selection
Getting From A to B
Underlying Network
Roads
Airports
Telecommunication links
Costs of using each link
Find the cheapest (shortest) path
Example
B
A
90
138 66
C
348
84
Directed Edges
I
84
132
120
90
F
156
D
E
60
132
48
G
126
H
126
48
J
150
Shortest Path Model
An introduction to AMPL and review of
modeling
Sets
Define entities and index data
The Nodes of the Graph
set NODES;
The Edges of the Graph
set EDGES within NODES cross NODES;
Shortest Path Model
Parameters
Hold data
The Cost on each Edge
param Cost{EDGES};
The Origin and Destination
param Origin symbolic;
param Destination symbolic;
Shortest Path Model
The Variables
The decisions the model should make
Which edges to use
var UseEdge{EDGES} >= 0;
/* The number of times we use each
edge */
Shortest Path Model
The Objective
How we distinguish which solution is better
minimize PathCost:
sum{(f,t) in EDGES}
Cost[f,t]*UseEdge[f,t];
Shortest Path Model
Constraints
Eliminate what is not feasible
Flow Conservation at each node
s.t. ConserveFlow{node in NODES}:
sum{(f, node) in EDGES}
UseEdge[f,node]
- sum{(node, t) in EDGES}
UseEdge[node, t]
= (if node = Origin
then -1
else if node = Destination
Rules of the Game
To be a linear program
variables can only be of the form
var UseEdge{EDGES} >= lower bound, <= upper
bound;
Other possibilities (for later)
var UseEdge{EDGES} binary (meaning 0 or 1)
var UseEdge{EDGES} integer >= 0;
Called Integer Programming
More Rules of the Game
The Objective must be of the form:
minimize ObjectiveName:
sum{(f,t) in EDGES} Cost[f,t]*UseEdge[f,t];
maximize ObjectiveName:
sum{(f,t) in EDGES} Cost[f,t]*UseEdge[f,t];
What’s relevant:
minimize or maximize
sum of known constant * variable
What’s not allowed
variable*variable , |variable - constant|, variable2...
More Rules of the Game
The Constraints must be of the form:
s.t ConstraintName:
sum{(f,t) in EDGES} Cost[f,t]*UseEdge[f,t]
<= Constant
s.t. ConstraintName:
sum{(f,t) in EDGES} Cost[f,t]*UseEdge[f,t]
>= Constant
s.t. ConstraintName:
sum{(f,t) in EDGES} Cost[f,t]*UseEdge[f,t]
= Constant
More Rules of the Game
What’s relevant:
Left-hand-side:
sum of known constant * variable
Right-hand-side
known constant
Sense of constraint
>=, <=, =
What’s not allowed
variable*variable , |variable - constant|, variable2...
Network Flow Problems
Special Case of Linear Programs
If the data are integral, the solutions will
be integral
Not generally true of Linear Programs,
just of Network Flow Problems
To Be a Network Flow Problem
Constraints must be of the form
sum{(f, node) in EDGES}
UseEdge[f,node]
- sum{(node, t) in EDGES}
UseEdge[node, t]
= or <= or >= constant
And Each variable can appear in at most
two constraints, once as a flow in, e.g., as
part of the sum
sum{(f, node) in EDGES}
UseEdge[f,node]
The Data
The Nodes
A named region called Nodes in the
spreadsheet
d:\personal\3101\ShortPathData.xls
table NodesTable IN "ODBC"
"d:\personal\3101\ShortPathData.xls"
"SQL=SELECT Nodes FROM Nodes":
NODES <- [Nodes];
read table NodesTable;
Nodes
A
B
C
D
E
F
G
H
I
J
More Data
The Edges and Costs
Named region called Costs
FromNode ToNode
A
B
A
C
A
D
B
C
B
E
C
D
C
F
D
G
E
F
E
I
F
G
F
H
G
H
G
J
H
I
H
J
I
J
table CostsTable IN "ODBC"
"d:\personal\3101\ShortPathData.xls"
"Costs":
EDGES <- [FromNode, ToNode], Cost;
read table CostsTable;
Cost
90
138
348
66
84
156
90
48
120
84
132
60
48
150
132
126
126
More Data
The Origin and Destination
A Named Region called OriginDest
Origin
"ODBC"A
table OriginDestTable IN
"d:\personal\3101\ShortPathData.xls"
"SQL=SELECT Origin, Destination FROM
OriginDest":
[], Origin, Destination;
read table OriginDestTable;
Destination
J
Getting Answers Out
table ExportSol OUT "ODBC"
"DSN=ShortPathSol"
"Solution":
{(f,t) in EDGES: UseEdge[f,t] > 0} ->
[f~FromNode,t~ToNode],
UseEdge[f,t]~UseEdge,
UseEdge[f,t]*Cost[f,t]~TotalCost;
write table ExportSol;
Running the Model
From a DOS prompt in ..\ilog
Launch AMPL by typing ampl
At the AMPL: prompt type
model d:\….\shortpath.mod;
include d:\…\shortpath.run;
What’s in the .RUN file
/* ------------------------------------------------------------------Read the data
-------------------------------------------------------------------*/
read table NodesTable;
read table CostsTable;
read table OriginDestTable;
/* ------------------------------------------------------------------Solve the problem
You may need a command like
option solver cplex;
-------------------------------------------------------------------*/
solve;
The rest of the .RUN File
/* ------------------------------------------------------------------Write the solution out: May encounter write access error
-------------------------------------------------------------------*/
table UseEdgeOutTable OUT "ODBC"
"d:\personal\3101\ShortPathData.xls":
{(f,t) in EDGES} -> [FromNode, ToNode], UseEdge[f, t]~UseEdge,
UseEdge[f,t]*Cost[f,t]~TotalCost;
write table UseEdgeOutTable;
Applicability
Single Origin
Single Destination
No requirement to visit intermediate
nodes
No “negative cycles”
Answer will always be either
a simple path
infeasible
unbounded
Tree of Shortest Paths
Find shortest paths from Origin to each
node
Send n-1 units from origin
Get 1 unit to each destination
Shortest Path Problem
Just change the Conservation Constraints...
s.t. ConserveFlow{thenode in NODES}:
sum{(f, thenode) in EDGES} UseEdge[f, the
sum{(thenode, t) in EDGES} UseEdge[thenod
= (if thenode = Origin
then -(card(NODES)-1)
else 1);
Use Some Care
The Answer is how many paths the edge
is in. Not whether or not it is in a path.
Minimum Spanning Tree
Find the cheapest total cost of edges
required to tie all the nodes together
B
A
90
138 66
C
348
84
I
84
132
120
90
F
156
D
E
60
132
48
G
126
H
126
48
J
150
Greedy Algorithm
Consider links from cheapest to most
expensive
Add a link if it does not create a cycle with
already chosen links
Reject the link if it creates a cycle.
What’s the difference
Shortest Path Problem
Rider’s version
Consider the number of riders who will use it
Spanning Tree Problem
Builder’s version
Consider only the cost of construction
NOT A NETWORK FLOW PROBLEM
Transportation Problem
Sources with limited supply
Destinations with requirements
Cost proportional to volume
Multiple sourcing allowed
PROTRAC
Engine Distribution
Netherlands
500
Amsterdam
*
500
* Tilburg
800500
500
Antwer *
700
p
700
*
Belgium Liege
200
200
The Hague
*
800
*
900
900
Miles
0
50
Nancy
100
Germany
400
*
Leipzig
400
Transportation Costs
From Origin
Amsterdam
Antwerp
The Hague
Leipzig
120
61
102.5
To Destination
Nancy
Liege
130
41
40
100
90
122
Tilburg
62
110
42
Unit transportation costs from harbors to plants
Minimize
the transportation costs involved in moving
the engines from the harbors to the plants
A Transportation Model
The Sets
The set of Ports
set PORTS;
The set of Plants
set PLANTS;
The set of Edges is assumed to be
all port-plant pairs. If it is not, we
should define the set of edges.
A Transportation Model
The Parameters
Supply at the Ports
param Supply{PORTS};
Demand at the Plants
param Demand{PLANTS};
Cost per unit to ship
param Cost{PORTS,PLANTS};
Transportation Model
The Variables
How much to ship from each port to each
plant
var Ship{PORTS, PLANTS} >= 0;
The Objective
Minimize the total cost of shipping
minimize TotalCost:
sum {port in PORTS, plant in
PLANTS}
Cost[port, plant]*Ship[port,
Transportation Model
The Constraints
Do not exceed supply at any port
s.t. RespectSupply {port in PORTS}:
sum{plant in PLANTS} Ship[port,
plant]
<= Supply[port];
Meet Demand at each plant
s.t. MeetDemand {plant in PLANTS}:
sum{port in PORTS} Ship[port,
plant]
Observations
If Supply and Demand are integral then
the answer Ship will be integral as well.
Single Commodity -- doesn’t matter where
it came from.
Proportional Costs.
Crossdocking
3 plants
2 distribution centers
2 customers
Minimize shipping costs
Direct from plant to customer
Via DC
A Transshipment Model
The Sets
The Plants
set PLANTS;
The Distribution Centers
set DCS;
The Customers
set CUSTS;
Transshipment Model
The Set of Edges
We assume all Plant-DC, Plant-Customer,
DC-Customer edges are possible.
Convenient to define a set of Edges
set EDGES := (PLANTS cross DCS)
union
(PLANTS cross CUSTS)
union
(DCS cross CUSTS);
A Transshipment Model
The Parameters
The Supply at each plant
param Supply{PLANTS};
The Demand at each Customer
param Demand{CUSTS};
The Cost on each edge.
param Cost{EDGES};
See the convenience of defining EDGES?
A Transshipment Model
The Variables
The volume shipped on each edge
var Ship{EDGES} >= 0;
The Constraints
Combine ideas of Shortest paths (flow
conservation) with Transportation (meet
supply and demand)
A Transshipment Model
For each Plant
s.t. RespectSupply {plant in
PLANTS}:
sum{(plant, t) in EDGES}
Ship[plant,t]
<= Supply[plant];
For each Customer
s.t. MeetDemand {cust in CUSTS}:
sum{(f, cust) in EDGES} Ship[f,
A Transshipment Model
For each DC: Conserve flow
s.t. ConserveFlow {dc in DCS}:
sum{(f, dc) in EDGES}
Ship[f,dc]
= sum{(dc, t) in EDGES}
Ship[dc,t];
Flow into the DC = Flow out of the DC
Good News
Lots of applications
Simple Model
Optimal Solutions Quickly
Integral Data, Integral Answers
Bad News
What’s Missing?
Single Homogenous Product
Linear Costs
No conversions or losses
...
Homogenous Product
Linear Costs
No Fixed Charges
No Volume Discounts
No Economies of Scale