380 likes | 500 Views
1-to-Many Distribution with Transshipments. John H. Vande Vate Spring, 2001. Why Does Ford Transship?. WebVan. 9 stations serving Metro Atlanta Alpharetta Atlanta (Airport) Atlanta (Downtown) Marietta Norcross Roswell Suwanee (also DC) Tucker Woodstock.
E N D
1-to-Many Distribution with Transshipments John H. Vande Vate Spring, 2001 1
WebVan 9 stations serving Metro Atlanta • Alpharetta • Atlanta (Airport) • Atlanta (Downtown) • Marietta • Norcross • Roswell • Suwanee (also DC) • Tucker • Woodstock 3
Consolidation of shipments Reduces staging area at plants Speeds delivery Cuts pipeline inventory Ford New Vehicle Distribution 5
Freight Consolidation Vehicle Capabilities Transshipment for 8
Ford & WebVan Customers Single sourcing at Customers Terminals Single Route to Terminals The Depot 9
Transportation Costs Total = fixed + variable*volume Variable Total Cost Concave! 10 Volume Shipped
How Many Terminals? Where? Whom to serve? Minimize Inventory and Transportation Costs Questions 13
How large should influence areas be? “Analytic Approach” “Distant” Terminal 14
Where Should Terminals Go? • In the Center? Influence Area Why “Distant”? “Distant” Terminal 15
Distribution Cost/Item at a terminal location as a function of the size of the influence area The Economics I 16
Inbound Transportation Costs 17
Load Driven: Depart when vehicle is full Ford’s new vehicle distribution Schedule Driven: Depart to meet service reqs. WebVan Two Cases 18
Capacity of vehicle: Cap Somewhat different for Schedule-Driven Loads depend on frequency of schedule Customers per route depends on time Load-Driven 19
Customers = Terminals Density = 1/I Total transport cost/headway 2E(r)N/C + NkE(1/) Number N R/I R is the total area we serve Route headway t Volume to each customer ltI Customers per route C Cap/(ltI) 2E(r)Rlt/Cap + Rk/I Estimating The Cost 20
Total Transport Cost 2E(r)Rlt/Cap+ Rk/I Total Items Rlt Cost Per Item 2E(r)/Cap+ k/(ltI) Cost Per Item economies from less peddling 21
Customers are original customers in an Influence area I. Customer density: d Number of customers:Id Shipment size: v Vehicle capacity: cap Customers per route C = cap/v 2E(r)N/C + Nk1/d 2E(r’)Idv/cap + Ikd per terminal Outbound Transportation 23
2E(r’)Idv/cap + Ikd per terminal E(r’) depends on I probably proportional to I k’I 2k’I3/2dv/cap + Ikd R/I terminals 2k’RIdv/cap + Rkd over all routes 2k’Idv/(ltcap) + kd/(lt) per item Outbound Transportation Increasing outbound linehaul 24
“Fixed” Cost per terminal: f (per headway t) Independent of volume, e.g. “rent” Unit costs per terminal: u Depend on volume, e.g., unit handling cost Total Cost across all terminals fR/I + ultR Terminal Costs per item f/(ltI) + u Terminal Cost 26 Economies of scale for fixed investment
Total Avg. $/item Inbound 2E(r)/Cap+ k/(ltI) Outbound 2k’Idv/(ltcap) + kd/(lt) Terminal f/(ltI) + u Total Cost 28
Total Cost per Item I* 29
Replace E(r) with r How large should influence areas be by location Different customer densities, etc. Find I(r) or I(x,y) at several points Partition region into Influence areas with these properties Dependence on Location 30
Analytical Model suggests number of terminals and initial locations Location-Allocation model positions terminals assigns customers Routing Procedures Evaluate Results Crude Sensitivity Analysis Detailed Models 31
Project consists of Model and parameter declarations in .mod file Commands in .run file Location Allocation in AMPL 32
set Customers; param X{Customers}; param Y{Customers}; param NFacs; set Facs := 1..NFacs; param FacX{Facs}; param FacY{Facs}; param Distance{Customers, Facs}; param sqrtN; param MaxOuterIters; param MaxInnerIters; param MinX default 1e6; param MaxX default -1e6; param MinY default 1e6; param MaxY default -1e6; Parameters 33
var Assign{Customers, Facs} binary; minimize TotalDistance: sum{cust in Customers, fac in Facs} Distance[cust, fac]*Assign[cust,fac]; s.t. OneFacPerCustomer{cust in Customers}: sum{fac in Facs} Assign[cust, fac] = 1; Model 34
/* -------------------------------------- Intial Locations --------------------------------------*/ for {cust in Customers} {let MinX := min(MinX, X[cust]); let MaxX := max(MaxX, X[cust]); let MinY := min(MinY, Y[cust]); let MaxY := max(MaxY, Y[cust]); }; let sqrtN := max(1, round(sqrt(NFacs),0)); let {fac in Facs} FacX[fac] := MinX + ((fac mod sqrtN)+1)*(MaxX-MinX)/(sqrtN+1); let {fac in Facs} FacY[fac] := MinY + ((fac mod sqrtN)+1)*(MaxY-MinY)/(sqrtN+1); Commands 35
let {cust in Customers, fac in Facs} Distance[cust, fac] := sqrt((X[cust] - FacX[fac])*(X[cust] - FacX[fac]) + (Y[cust] - FacY[fac])*(Y[cust] - FacY[fac])); for {outeriter in 1..MaxOuterIters} { solve; /* Assign Customers */ for {inneriter in 1..MaxInnerIters} /* Locate Facilities */ {for {fac in Facs: sum{cust in Customers} Assign[cust,fac] > 0} {let FacX[fac] := (sum{cust in Customers: Assign[cust, fac] > .5} X[cust]/Distance[cust, fac] )/ (sum{cust in Customers: Assign[cust, fac] > .5} 1/Distance[cust, fac]); let FacY[fac] := (sum{cust in Customers: Assign[cust, fac] > .5} Y[cust]/Distance[cust, fac])/ (sum{cust in Customers: Assign[cust, fac] > .5} 1/Distance[cust, fac]); }; /* end for fac in Facs loop */ 36
/* --------------------------------------- Re-Calculate distances ---------------------------------------*/ let {cust in Customers, fac in Facs} Distance[cust, fac] := sqrt((X[cust] - FacX[fac])*(X[cust] - FacX[fac]) + (Y[cust] - FacY[fac])*(Y[cust] - FacY[fac])); /* --------------------------------------- Check stopping criteria for location loop: ---------------------------------------*/ }; /* end of the for inneriter loop */ /* --------------------------------------- Check stopping criteria for outer loop: ---------------------------------------*/ }; /* end of the for outeriter loop */ 37