15.057 Spring 02 Vande Vate 1 1 Modeling Service When Transport is restricted to Load-Driven Pool Points in Retail Distribution John Vande Vate Spring.

Slides:



Advertisements
Similar presentations
Facility Location Decisions
Advertisements

WAREHOUSING MANAGEMENT
WAREHOUSING MANAGEMENT
Chapter 3 Network Planning.
Logistics Network Configuration
Spring 02 Vande Vate 1 1 Modeling Service When Transport is restricted to Load-Driven Pool Points in Retail Distribution John Vande Vate Spring.
Logistic Management Warehousing
Inventory Cost Captures time-value of holding product Captures time-value of holding product Perishability, theft, opportunity cost of cash, insurance,
Vehicle Routing & Scheduling: Part 1
Transportation in a Supply Chain
Logistics Cost Part II Professor Goodchild Spring 11.
Warehousing Decisions
Vehicle Routing & Scheduling
INVENTORY AND WAREHOUSING PL201 FUNDAMENTAL OF LOGISTICS MANAGEMENT
4/24/2012 Pu Gong Corentin Lazarus Denis Satria Ralf Schoenherr Fan Yu.
Network Models II Shortest Path Cross Docking Enhance Modeling Skills Modeling with AMPL Spring 03 Vande Vate.
1 1 Summary of First Section: Deterministic Analysis John H. Vande Vate Spring, 2007.
1 1 Transportation & Supply Chain Costs John H. Vande Vate Spring, 2001.
A PC-based Planning System Reports and Functionality AutoScheduler Copyright © 2002.
Arben Asllani University of Tennessee at Chattanooga Prescriptive Analytics CHAPTER 6 Business Analytics with Integer Programming Business Analytics with.
1 1 Revenue Management Dealing with Uncertainty John H. Vande Vate Spring 2006.
1 1 Managing Uncertainty with Inventory I John H. Vande Vate Spring, 2007.
A Case Study: BuyPC.com Developed by Jim Morton; UPS Professional Services David Simchi-Levi; MIT Michael Watson; LogicTools, Inc. See also BuyPC.pdf.
Spring 03 Vande Vate1 Practice Final: Linear? param T; param Demand{1..T}; var InitialLevel; var GrowthRate; var Estimate{1..T}; minimize TotalError:
1 1 Practice Final John H. Vande Vate Fall, 2002.
Inventory Management and Risk Pooling (1)
Performance Mean 65. Solutions to Exam 2 zWe have a single commodity in warehouses around the country and wish to ship it to our customers at minimum.
What Keeps Distributors Awake Plan Execute Transact What are the new items I should be planning for? What quantity should we buy? Are all the inbound shipments.
1 1 Location Problems John H. Vande Vate Spring 2006.
1 1 ISyE 6203 Modeling Multi-DC version of Pooling John H. Vande Vate Spring 2012.
1 1 Solutions to Exam #1 John H. Vande Vate Fall, 2002.
1 1 Exam I John H. Vande Vate Spring, Question 1 … centers to minimize its total transportation costs from its 2 plants to its 5 markets. We.
1 1 Modeling Flows John H. Vande Vate Spring, 2006.
Logistics Management LSM 730 Lecture 8 Dr. Khurrum S. Mughal.
1 1 Modeling Inventory (Deterministic View) John H. Vande Vate Spring 2007.
1 1 1-to-Many Distribution Vehicle Routing Part 2 John H. Vande Vate Spring, 2005.
Log Truck Scheduling Problem
Inventory and Models in Project 3 Load Driven Systems John H. Vande Vate Spring, 2001.
1 1 Review of Exam 1 John H. Vande Vate Fall 2009.
1 1 Review of Part I Preparation for Exam John H. Vande Vate Fall 2009.
1 1 Exam 1 John H. Vande Vate Spring, Process 80+ exams to grade Certainly errors, misunderstanding, … Happy to re-grade BUT –Only respond to.
1 1 Practice Final John H. Vande Vate Fall, 2005.
1 1 Wrap Up John H. Vande Vate Spring, Review of Topics Variability Basics –The big idea Forecasting –The 5 Laws of Forecasting –Actual/Forecast.
1 1 Milk Runs and Variability John H. Vande Vate Fall, 2002.
Transportation and Distribution Planning Matthew J. Liberatore John F. Connelly Chair in Management Professor, Decision and Information Techologies.
1 1 1-to-Many Distribution with Transshipments John H. Vande Vate Spring, 2001.
1 1 Vehicle Routing Part 2 John H. Vande Vate Fall, 2002.
1 1 Practice Exam #1 John H. Vande Vate Fall, 2002.
Structuring a DC Network Ken Homa. Manufacturing Plants Distribution Centers Intermediaries End Users Customers.
1 1 Modeling Inventory (Deterministic View) John H. Vande Vate Spring 2008.
1 1 Frequency: Inventory vs Transportation John H. Vande Vate Spring, 2007.
Homework 1- Gateway.
Modeling Flows and Information
Managing Uncertainty with Inventory I
John H. Vande Vate Spring, 2001
Many-to-Many Models Multicommodity Flows
Transportation Management
Location Case Study Shanghai GM Service Parts Part II
Sales Order Process.
Transportation & Supply Chain Costs: Answers to Questions
Location Problems John H. Vande Vate Fall,
John H. Vande Vate Spring 2005
GEOP 4355 Distribution Problems
Modeling Service When Transport is restricted to Load-Driven
Linear Programming Problem
Logistics Systems Analysis Mid-Term Review
Project #1 Optimization Model
Last year’s Final John Vande Vate Fall, 2009.
Modeling Flows and Information
John H. Vande Vate Spring, 2005
Presentation transcript:

Spring 02 Vande Vate 1 1 Modeling Service When Transport is restricted to Load-Driven Pool Points in Retail Distribution John Vande Vate Spring 2007

Spring 02 Vande Vate 2 2 Retail Inventory Single “Product”, many SKUs Style Color Size Broad Offering attracts customers Depth in SKU avoids missed sales Stock enough in each SKU to cover replenishment time (OTD)

Spring 02 Vande Vate 3 3 Service Requirement Keep OTD short Reduce depth without losing sales Increase breadth to attract more customers and expand market OTD requirements differ by store –Manhattan, NY –Manhattan, KS

Spring 02 Vande Vate 4 4 What’s in OTD POS system records sale Transmitted to DC Orders batched for efficient picking Order picked Trailer filled (Load driven) Line Haul to Pool Point Delivery

Spring 02 Vande Vate 5 5 Pool Points Asian Port US Port Pool Store Asian Factory US DC

Spring 02 Vande Vate 6 6 Pools Influence Trailer Fill –The greater the volume to the pool the faster the trailer fills Line Haul –Is determined by the distance from the DC to the Pool Delivery –Messier

Spring 02 Vande Vate 7 7 The Trade-offs Too Few Pools –High Delivery Costs –More moving inventory –Less waiting inventory Too Many Pools –Low Delivery Costs –Less moving inventory –More waiting inventory

OTD Dissected POS system records sale Transmitted to DC Orders batched for efficient picking Order picked Trailer filled (Load driven) Line Haul Delivery Constant cost & time Cost & Time depend on Pool Assignment

Spring 02 Vande Vate 9 9 Line Haul Time & Cost Depend on –The Pool Assignment –Which DC’s serve the Pool NY DC to Chicago Pool LA DC to Chicago Pool

Spring 02 Vande Vate Trailer Fill Time Depends on –The Pool Assignments Which pool this store is assigned to What other stores are assigned to this pool Rate at which the Pool draws goods –How the Pool is served The Rate at which the Pool draws goods from each DC

Spring 02 Vande Vate Drilling Down on Service Simple Model –Cube only (trailers never reach weight limit) –One DC only (don’t split volumes to Pool) Many DC’s –Cube only Weight & Cube and Many DC’s Soft Constraints: –Infeasible is not an acceptable answer

Spring 02 Vande Vate Toward a Simple Model Trailer Fill Time (for store) * Rate Trailer Fills = Cubic Capacity of the Trailer Rate Trailer Fills –Translate annual demand at stores assigned to the pool into cubic feet per day –Rate to pool is: sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool]

Spring 02 Vande Vate Make It Linear Trailer Fill Time * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool] = Cubic Capacity of the Trailer Trailer Fill Time * Assign What to do?

Spring 02 Vande Vate Can’t Know Trailer Fill Time Trailer Fill Time * Rate Trailer Fills = Cubic Capacity of the Trailer Max Time to Fill Trailer * Rate Trailer Fills ? Cubic Capacity of the Trailer  Why  Cubic Capacity of the Trailer? What does this accomplish?

What’s Wrong? Max Time to Fill Trailer to store * Rate Trailer Fills  Cubic Capacity of the Trailer Max Time to Fill Trailer* (sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool])  Cubic Capacity of the Trailer What if the Store is not assigned to the Pool?! Max Time to Fill Trailer * Rate Trailer Fills  Cubic Capacity of the Trailer*Assign[store,pool]

Spring 02 Vande Vate Our Simple Model var Assign{STORES, POOLS} binary; Service Constraint for each store and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool] >= Cubic Capacity of the Trailer*Assign[store, pool] Max Time to Fill Trailer depends on the Store and the Pool: Store Service Requirement, e.g., 3 days Constant Order time, e.g., order processing, picking, etc. Line haul time from DC to Pool Delivery time from Pool to Store

Spring 02 Vande Vate Getting Practical There are scores of Pools and THOUSANDS of Stores That means hundreds of thousands of service constraints! Can we just impose them at the Pools? If the Pools open… –Ensure we get there in reasonable time (same time from there to all stores) –May have to handle a few special stores separately

Spring 02 Vande Vate A Simpler Model var Assign{STORES, POOLS} binary; Service Constraint for each pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool] >= Cubic Capacity of the Trailer*Assign[store, pool] var Open{POOLS} binary; Assign[store, pool] Open[pool] Max Time to Fill Trailer depends on the Store and the Pool: Store Service Requirement, e.g., 3 days Constant Order time, e.g., order processing, picking, etc. Line haul time from DC to Pool Delivery time from Pool to Store (depends on pool)

Spring 02 Vande Vate One DC Cube Only Model var Assign{STORES, POOLS} binary; Service Constraint for each pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool] >= Cubic Capacity of the Trailer*Assign[store, pool] var Open{POOLS} binary; Max Time to Fill Trailer depends on the Pool: Store Service Requirement, e.g., 3 days Constant Order time, e.g., order processing, picking, etc. Line haul time from DC to Pool Delivery time from Pool to Store (depends on pool)

Spring 02 Vande Vate More than One DC Service Constraint for each pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Demand[prd,s]*Assign[s, pool] >= Cubic Capacity of the Trailer*Open[pool] What’s wrong with this?

Spring 02 Vande Vate The Problem If the pool is served by several DC’s, trailers fill more slowly The “rate” from each DC is less than the total rate of demand at the pool.

Spring 02 Vande Vate How to Get the Rates How fast does the trailer for pool fill at dc? Not the rate of demand at the pool The rate of shipments from the dc to the pool Translate shipments Ship[*, dc, pool]

Spring 02 Vande Vate What’s Wrong Now Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*Open[pool]

Spring 02 Vande Vate The Problem Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*Open[pool] Does the DC serve the Pool? These constraints insist the service is good from EVERY dc to EVERY open pool.

Spring 02 Vande Vate Fixing the Problem var UseEdge{DCS, POOLS} binary; Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer* UseEdge [dc, pool] Define UseEdge for each prd, dc and pool: Ship[prd, dc, pool] <= sum{s in STORES (that can be assigned to the pool)} Demand[prd,s]* UseEdge[dc, pool]

Spring 02 Vande Vate Several DCs Cube Only var UseEdge{DCS, POOLS} binary; Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer* UseEdge [dc, pool] Define UseEdge for each prd, dc and pool: Ship[prd, dc, pool] <= sum{s in STORES (that can be assigned to the pool)} Demand[prd,s]* UseEdge[dc, pool]

Spring 02 Vande Vate Weight & Cube var UseEdge{DCS, POOLS} binary; Cube Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*UseEdge[dc, pool] Weight Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} Weight[prd]/DaysPerYear*Ship[prd, dc, pool] >= Weight Limit of the Trailer*UseEdge[dc, pool]

Spring 02 Vande Vate What’s Wrong Now? var UseEdge{DCS, POOLS} binary; Cube Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*UseEdge[dc, pool] Weight Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} Weight[prd]/DaysPerYear*Ship[prd, dc, pool] >= Weight Limit of the Trailer*UseEdge[dc, pool]

Spring 02 Vande Vate Weight AND Cube Trailer departs when –Weight Limit is reached OR –Cubic Capacity is reached Don’t have to fill BOTH

Spring 02 Vande Vate How to Fix It? The Cubic Capacity Constraint Applies If –We use the edge from the dc to the pool: UseEdge[dc, pool] = 1 AND –We Cube Out that trailer first: New Variable CubeOut[dc,pool] = 1 How to capture this? (UseEdge[dc,pool] + CubeOut[dc,pool] -1)

Spring 02 Vande Vate How to Fix It? The Weight Limit Constraint Applies If –We use the edge from the dc to the pool: UseEdge[dc, pool] = 1 AND –We DO NOT Cube Out that trailer first: CubeOut[dc,pool] = 0 How to capture this? (UseEdge[dc,pool] - CubeOut[dc,pool])

A Full Model var UseEdge{DCS, POOLS} binary; var CubeOut{DCS, POOLS} binary; Cube Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*(UseEdge[dc, pool]+ CubeOut[dc,pool]-1) Weight Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} Weight[prd]/DaysPerYear*Ship[prd, dc, pool] >= Weight Limit of the Trailer*(UseEdge[dc, pool]- CubeOut[dc,pool])

Cube or Weight How do we know which constraint should apply? ….. >= Cubic Capacity of the Trailer*(UseEdge[dc, pool]+ CubeOut[dc,pool]-1) or …. >= Weight Limit of the Trailer*(UseEdge[dc, pool]- CubeOut[dc,pool])

Spring 02 Vande Vate What if it’s not feasible Infeasible is not a very helpful answer Want an answer that is “as close as possible” Sequential Optimization: –Minimize Service Failures –Minimize Cost subject to Best Achievable Service

Spring 02 Vande Vate Service Failures Can’t express them in terms of time Express them in terms of Capacity How much of the trailer is left unfilled at the end of the available time?

Unfilled Capacity Max Time to Fill Trailer * Rate Trailer Fills  Cubic Capacity of the Trailer*Binary Switch Scale this: Max Time to Fill Trailer * Rate Trailer Fills Cubic Capacity of Trailer  Binary Switch (0 or 1) - Service Failure (fraction of trailer unfilled)

Spring 02 Vande Vate Sequential Optimization First Objective: –Minimize the sum of the Service Failures –Could weight Service Failures Second Objective: –Minimize Cost –s.t. Service Failures <= Best Possible

The Whole Story var UseEdge{DCS, POOLS} binary; var CubeOut{DCS, POOLS} binary; var ServFail{POOLS} >= 0; Cube Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]/DaysPerYear*Ship[prd, dc, pool] >= Cubic Capacity of the Trailer*(UseEdge[dc, pool]+ CubeOut[dc,pool]-1) - Cubic Capacity of the Trailer*ServFail[pool]; Weight Service Constraint for each dc and pool: Max Time to Fill Trailer * sum{prd in PRODUCTS, s in STORES} Weight[prd]/DaysPerYear*Ship[prd, dc, pool] >= Weight Limit of the Trailer*(UseEdge[dc, pool]- CubeOut[dc,pool]) - Weight Limit of the Trailer*ServFail[pool]