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 pool) * 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]*(Demand[prd,s]/DaysPerYear)*Assign[s, pool]
Spring 02 Vande Vate Make It Linear Trailer Fill Time * sum{prd in PRODUCTS, s in STORES} CubicFt[prd]*(Demand[prd,s]/DaysPerYear)*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 * Rate Trailer Fills Cubic Capacity of the Trailer Max Time to Fill Trailer* (sum{prd in PRODUCTS, s in STORES} CubicFt[prd]*(Demand[prd,s]/DaysPerYear)*Assign[s, pool]) Cubic Capacity of the Trailer
Spring 02 Vande Vate Our Simple 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]*(Demand[prd,s]/DaysPerYear)*Assign[s, pool] >= Cubic Capacity of the Trailer Max Time to Fill Trailer depends on the Pool: Service Requirement, e.g., 3 days Constant Order time, e.g., order processing, picking, etc. Line haul time from DC to Pool – varies by Pool Delivery time from Pool to Store
Spring 02 Vande Vate Which Pools? If the Pool is open… –Ensure we get there in reasonable time If the Pool is NOT open… –No Time constraint, but –You can’t assign stores to it
Spring 02 Vande Vate A Simple 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]*(Demand[prd,s]/DayPerYear)*Assign[s, pool] >= Cubic Capacity of the Trailer*Open[pool] Assignment Constraint for each store: sum {pool in POOLS} Assign[store, pool] = 1 Logical Constraint for each pool and store: Assign[store, pool] <= Open[pool] var Open{POOLS} binary;
Spring 02 Vande Vate Realities Silly to include every store-pool pair. Some pools are just too far away. Modeling the impacts on delivery costs is more complicated Operating fewer, larger pools offers economies of scale, e.g., automation