Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Consolidation John H. Vande Vate Spring, 2007 1 1 Agenda • Combining LTL into TL shipments – Motivation – Models – Issues • Multi-Stop TL shipments – Column Generation Approach 2 2 Motivations • Speed – LTL shipments are consolidated, routed to intermediate terminals, sorted, … – TL shipments can be faster • Cost – Remember concave cost structure – Typically TL is less expensive per unit 3 3 Context • Manufacturer/Distributor shipping to regular customers • Default Option: LTL shipment to each customer • Consolidation: – TL several order to LTL terminal near customers – LTL from terminal to customers – Typically not dynamic: • Where is the customer? • How large is the order? 4 4 Interrelated Questions • Where do we consolidate (what terminals)? • Which customers (orders) do we serve through each terminal? 5 5 Assumptions • Single Plant or origin for supplies – We are not allocating customers to production plants. That’s already been done • We know our customers – Not always the case – Can use geographic regions in place of actual customer locations • We have adjusted last year’s orders to reflect next year’s projections 6 6 A Model • Identify a candidate set of consolidation points (terminals) – More choices allows exploring more options – More choices slows computation – On the order of 30 say • Key Decisions – Open: Do we use a candidate consol pt or not? • One for each candidate consol pt – Assign: Does a consol pt serve a customer or not? • One for each candidate consol pt and (reasonably close) customer – ServeDirect: Do we serve the customer directly via LTL or not? • One for each – Trucks: Annual (say) number of TL shipments to a candidate consol pt. • One for each candidate consol pt. 7 7 Objective: Transportation Cost • LTL shipments direct to customers – – – – Easy to rate these, we’ve been shipping this way Recommend using rating engine to rate them anyways Compute discount rate: DR = (Rated Cost -Actual Cost)/Rated Cost Cost to serve * Serve Direct • Truck load shipments to consolidation points – Might use $/mile and get distances from PC Miler or CzarLite – Might distinguish by region of country – Cost per truck * Trucks to Consol Pt. • LTL shipments from consol pts to customers – These are painful to get – Use rating engine to rate historical shipments apply discount rate DR – Cost to Serve from Consol pt * Assign to Consol pt 8 8 Elaborations • • • • Consider inventory costs Handling charges at consol pts Amortized capital charge or rent for consol pts Time to customer • … 9 9 Transport Requirements • TL shipments cost depends on capacity • How many trucks • Homogeneous commodity – Either weight or cube or floor space drives capacity – Translate each customers annual demand into a demand for this unit of capacity, e.g., weight • Heterogeneous commodities – Treat like homogeneous commodity based on basket of products or – Translate each customers annual demand into weight and cube (or floor space) 10 10 Constraints • Every Customer is Served e.g.,Weight of Demand– For each customer: customer’s consol pts Assign = 1 varies. ServeDirect + Sum over • Trucks required to eachorders consol pt Trucks – For each consol pt (and type of capacity, e.g., won’t be full weight, cube, floor space) Trucks*Load Factor Sum over customers Assign*Requirement/Capacity e.g.,Weight limit of Truck 11 11 Frequency • Time matters • Minimum level of service to consol pt – E.g., once per week or thrice per week… – Amounts to a fixed (operating cost) for opening a consol pt. • ServiceLevelConstraint: e.g.,156 = 52*3 – For each consol pt Trucks Minimum Service level*Open 12 12 Logic • Can’t assign a customer to a consol pt unless it is open – For each customer and consol pt (within reason) Assign ≤ Open 13 13 Peculiarities • Typical of integer optimization – Does strange things to ensure we get the most out of the fixed operating cost associated with opening a consol pt. – See assignments bypassing consol pts – Adding a nearby customer may force us to use another truck, but adding a smaller one farther away may not 14 14 Odd Assignments • Reasonable to use recommended consol pts? • Reasonable to use recommended assignments? Plant in FL!?* 15 15 Translation to Implementation • • • Suggests the value of dynamic assignments that change from week to week Reasonable to drop integrality of Assign One Project: Implement and evaluate the impact of dynamic assignments 16 16 Next Step: Multi-Stop Routes • Can we improve performance by sharing the fixed operating cost across several consol pts • Advantage: Allows smaller consol pts • Disadvantage: Lower “efficiency” in TL shipments – Do you really want to run trucks half empty half way across the country? – Stop charges: e.g., $50 per stop 17 17 Typical Multi-Stop Rt Clustered destinations 18 18 Model: Key Decisions • ServeDirect: Do we serve customer via direct LTL shipments • Open: Do we open a candidate consol pt. – One for each candidate consol pt. • Assign: Do we assign customer to consol pt. – One for each customer and (reasonable) consol pt. • Trucks: Annual trucks running to consol pt – One for each candidate consol pot • RouteTrucks: Annual trucks running on multi-stop route – One for each candidate multi-stop route • RouteVolume: Annual volume at each consol pt that is picked up by each multi-stop route – One for each candidate route and stop on the route 19 19 Assumptions • Volume to a consol pt can be split among direct trucks and (potentially several) multistop routes • The operating fixed cost imposed by the frequency requirement can be shared among these, i.e., there’s a lower bound on the number of times we “stop” at the consol pt each year. 20 20 Objective • Transportation Costs – TL to Consol Pts – Multi-stop TL to Consol Pts LTL to Consol Pts – LTL Direct to Customer • Multi-Stop TL costs include – Mileage charge – Stop charges 21 21 Constraints • Every Customer is Served – For each customer: ServeDirect + Sum over consol pts Assign = 1 • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor Sum over customers Assign*Requirement/Capacity • Service Level Constraint – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks Minimum Service level*Open • Logic: – For each customer and consol pt (within reason) Assign ≤ Open • Multi-Stop Trucks – For each multi-stop route MultiStopTrucks*Load Factor Sum over stops on the route Route Volume 22 22 Problems • How do we know all the (interesting) routes? • How many are there? • If we have ~ 50 consol pts and limit routes to say 4 stops, we get 5.5 million potential routes! 23 23 Good News! • We can find good routes as we solve the problem • Use technique called Column Generation • Big Idea: – Use Shadow Price information from current solution to identify attractive routes – When no new routes are attractive, we’ve found all the interesting ones (well sort of) 24 24 Column Generation • Turns out this is a bit more complicated • Illustrate the basic concept first • Apply to our Multi-Stop problem 25 25 Column Generation • Illustrate with a “pure” Multi-Commodity Flows problem • Multi-Commodity Network Flows – Network flows with several products (commodities) – Joint capacity constraints • Total volume of all commodities moving on a link 26 26 2 “commodities” Example MCNF Problem 2 to 4 has lots of capacity Costs From\To 1 2 3 4 5 1 0 9 4 8 60 2 0 0 9 70 3 3 0 6 0 4 1 4 7 7 2 0 7 5 3 6 Product 1 10 0 0 0 -10 Product 2 0 20 0 -20 0 Capacities From\To But it is expensive Prod 1 from 71 to 5 5 0 Prod 1 from 2 to 4 1 2 3 4 5 1 0 1 2 1 10 2 1 0 1 20 1 3 1 1 0 2 1 4 2 2 1 0 1 5 1 1 1 2 0 27 27 Understand Problem? • Capacity Constraints: – Capacity on 1-3 is 1 – Either 1 unit of Product 1 or 1 unit of Product 2, not both – Can send 0.5 units of Product 1 & 0.5 units of Product 2. • How to solve this if there are no capacity constraints? 28 28 A “Flows on Paths” Model • Variables: – For Product 1: Each path from node 1 to node 5 – For Product 2: Each path from node 2 to node 4 2 3 1 4 5 29 29 Constraints • Product 1 Demand: – Total Flow of Product 1 on paths from 1 to 5 is 10 • Product 2 Demand: – Total Flow of Product 2 on paths from 2 to 4 is 20 • And? 30 30 Capacity Constraints • One for each edge in the network (in this case 20) • Example: Capacity on 2-3 is 1: Total Flow of Product 1 on paths that use edge from 2 to 3 + Total Flow of Product 2 on paths that use edge from 2 to 3 ≤ 1 31 31 Column Generation Approach The art & • Start with a small initial set of paths science – E.g., just the single-edge path from 1 to 5 for Product 1 and from 2 to 4 for Product 2 • Solve the Flows on Paths Model with these paths • Use the Dual Prices or Shadow Prices from this solution to determine if any new paths will improve the solution. • If there are no better paths, you’re done. Otherwise add the paths to the formulation and repeat. 32 32 The Dual Prices • One for each constraint • Tell us the change in the objective per unit increase in the right-hand-side of the constraint (it’s a rate, i.e., $/unit) • Examples: – Product 1 Demand Constraint: The dual price tells us how much more it would cost if we insisted on sending 10 + units of Product 1 from 1 to 5 – Capacity Constraint on Edge 2-3: The dual prices tells us how much more (less) it would cost if we increase the capacity on this edge by – What does intuition suggest about the signs? 33 33 Try It 34 34 Finding Attractive Paths • Use the Dual Prices from this solution to determine if any new paths will improve the solution. • If the Reduced Cost of a path is negative, it is attractive, i.e., adding it (can) improve the solution. • Reduced Cost of a Path? 35 35 Reduced Cost • Sending flow on a new path has two impacts: – We have to pay to send the flow – We reduce flows on the current paths • Computing the cost of sending the flow is easy: Cost of the path * Units sent – Cost of the path is? • Computing the cost of the corresponding changes in the flows on the current paths turns out to be “easy” too. 36 36 Use the Shadow Prices • Sending flow of Product 1 on the path from 1 to 3 and then 3 to 5 has 4 effects: – It incurs the cost to send flow on this path – It reduces the requirements for sending flow of Product 1 from node 1 to node 5 on the current paths: What’s the value of this? – It reduces the capacity on the edge 1-3 available to the current paths: What’s the value of this? – It reduces the capacity on the edge 3-5 available to the current paths: What’s the value of this? • Reduced Cost of Path 1-3-5: Cost of using edge 1-3 + Cost of using edge 3-5 Minus Shadow Price for demand of Product 1 Minus Shadow Price for capacity on edge 1-3 Minus Shadow Price for capacity on edge 3-5 37 37 Is Path 1-3-5 Attractive? • Is Reduced Cost of Path 1-3-5 < 0? Theedge net3-5 cost Cost of using edge 1-3 + Cost of using Minus Shadow Price for demand of Product the 1 value (including The netMinus Shadow Price for capacity on edge 1-3 of the consumed value Minus Shadow Price for capacity on edge 3-5 capacities) to send < 0? • Reduced Cost of Path: a unit of flow Sum over the edges of Cost of edge – Shadow Price for capacity on edge < Shadow Price for Demand 38 38 Finding Attractive Paths • Reduced Cost of Path: Sum over the edges of Cost of edge – Shadow Price for capacity on edge < Shadow Price for Demand • If we fix the commodity, the right-hand-side is a constant • Find a shortest path for this commodity using the modified costs for the edges • If the length of this path is – less than the Shadow Price for Demand, we have a candidate – Greater than the Shadow Price for Demand, there is no candidate path for this commodity 39 39 Try It • Shadow Price for Demand for Product 1 is 60 (Explain) • No edge is at capacity so all shadow prices for capacities are 0 • Find a shortest path from 1 to 5, if it is less than 60, it is better than sending flows direct. 40 40 Shortest Path • For Product 1 – 1-3-5 has cost 5 < 60 so it’s reduced cost is -55. It is attractive, add it. • For Product 2 – 2-1-4 has cost 8 < 70 so it’s reduced cost is -62. It is attractive, add it. 41 41 Repeat • The Master Problem now has 4 paths – For Product 1: • 1-5 with cost 60 and capacity 10 • 1-3-5 with cost 5 and capacity ? 1 – For Product 2: • 2-4 with cost 70 and capacity 20 • 2-1-4 with cost 8 and capacity ? 1 42 42 Solve the Master • Uses the new paths to capacity Since these edges are at capacity, • Objective value drops to 1883 using them in a new path would• Edge 3-5 at capacity. force us to give up some of the gains – Shadow Price – 55 – Modified cost for 3-5 is 1 – (-55) = 56 • Edge 2-1 at capacity – Shadow Price – 62 – Modified cost for 2-1 is 0 – (-62) = 62 43 43 Competing for capacity Next Iteration • A Most attractive path for Product 1 – 1-2-5 with cost 12 • A Most attractive path for Product 2 – 2-5-4 with cost 10 • Master Problem objective drops to 1823 • Shadow Price for capacity on 2-5 is -60 44 44 Etc. • After 4 iterations, the Objective value in the Master Problem has fallen to 1721 • The Shadow Prices for demand are still – Product 1: 60 – Product 2: 70 • The lengths of the Shortest Paths using modified costs are – Product 1: 60 – Product 2: 70 • We have an optimal answer. 45 45 Questions? • Everyone understand the basics of column generation • Comment: Computationally this is only different from basic LP in so far as we used the Shortest Path Problem to find an attractive path rather than simply work through a list of variables, “pricing them out” one by one. 46 46 Back to Multi-Stop Routes • Let’s apply Column Generation to solve our Multi-Stop Consolidation Problem • Recall – Shipping to customers from a single plant – Consolidating LTL shipments through consolidation points – Serving the consolidation points via TL and/or Multi-Stop TL – Modeled as though we knew all the Multi-Stop Routes • Use Column Generation to produce the Routes 47 47 Objective • Transportation Costs – TL to Consol Pts – Multi-stop TL to Consol Pts LTL to Consol Pts – LTL Direct to Customer • Multi-Stop TL costs include – Mileage charge – Stop charges 48 48 Two aspects Constraints of a route: Every Customer is Served Trucks• & – For each customer: ServeDirect + Sum over consol pts Assign = 1 Volume • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 • Service Level Constraint – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 • Logic: – For each customer and consol pt (within reason) Open - Assign 0 • Multi-Stop Trucks – For each multi-stop route MultiStopTrucks*Load Factor - Sum over stops on the route Route Volume 0 49 49 Two Issues • Issue #1: What columns do we generate? – MultiStop Trucks? – Route Volume? – Both? • … 50 50 Issue #2 • Trucks required to each consol pt We won’t • write this till – For each consol pt (and type of capacity, e.g., weight, cube, floor we have generated the space) Sum over routes that stop at theroute! consol pt But Route won’t Volume +we Trucks*Load Factor need the Shadow - Sum over customers Assign*Requirement/Capacity 0 Price Service Level Constraint on this to generate the – For each consol pt. route? Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 • Multi-Stop Trucks – For each multi-stop route MultiStopTrucks*Load Factor - Sum over stops on the route Route 51 Volume 0 51 A Resolution • Two Cases: – Case 1: MultiStopTrucks*Load Factor - Sum over stops on the route Route Volume > 0 – Case 2: MultiStopTrucks*Load Factor - Sum over stops on the route Route Volume = 0 What’s the shadow price for this constraint in this case? 0! 52 52 Case 1: Issue #2 • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 If it’s not “tight” – For each consol pt. dropping it Trucks + Sum over routes that stop at the consol pt MultiStopTrucks has no effect. • Service Level Constraint - Minimum Service level*Open 0 • Multi-Stop Trucks – For each multi-stop route MultiStopTrucks*Load Factor - Sum over stops on the route Route 53 Volume 0 53 We want both the Route Volumes & the MultiStopTrucks to price out Case 1: Relevant Constraints • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 • Service Level Constraint – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 54 54 Is a RouteVolume Attractive? • What are the effects (direct indirect) No. We pay forand trucks of increasing a RouteVolume variable? and LTL. We will handle write the cost of the • For clarity we should that as multi-stop route when RouteVolume[route, consol]: the volume we ensure Multi-Stop for the consolidation point thatoutis Trucks prices delivered on this route. • Is there a direct cost for the RouteVolume[route, consol] variable? 55 55 Pricing Out RouteVolume[route, consol] • So there is no direct cost • Just indirect costs, (like consuming capacity on an edge or satisfying demand in the multi-commodity flow problem) • What Shadow Prices do we need to look at? 56 56 RouteVolume[route, consol] Which Shadow Prices? • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 Just the one the trucks • for Service Levelrequired Constraint at the–consol point For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 57 57 The Shadow Price • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 What happens to cost if we increase this? 58 58 0 minus the Shadow Price for RouteVolume[route, consol] trucksReduced required at consol point Cost AsShadow long as service isn’t the at • The Price for trucks required consol is the cost of satisfying driverpoint there! another truck load of demand there – 0 if the service constraint is the driver – Something positive otherwise • What’s the reduced cost of RouteVolume[route, consol]? • When is RouteVolume[route, consol] attractive? 59 59 Is MultiStop Trucks Attractive? • What are the effects (direct and indirect) of increasing a MultiStop Trucks variable? • For clarity we should write that as MultiStop Trucks[route] • Is there a direct cost for the MultiStop Trucks[route] variable? Yes. The cost of a truck on that route 60 60 Pricing Out MultiStop Trucks[route] • So the direct cost is Route Cost • What indirect costs? • What Shadow Prices do we need to look at? 61 61 MultiStop Trucks[route] Which Shadow Prices? • Trucksservice required each consol pt The route provides toto each For each consol pt (and type of capacity, e.g., weight, consol –point it visits! cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 • Service Level Constraint – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 62 62 The Shadow Price • Service Level Constraint – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 What happens to cost if we increase this? 63 63 Reduced Cost of MultiStop Trucks[route] • Direct Cost – Indirect Costs < 0 • Route Cost – Sum of Shadow Prices for Service on the route < 0 • Route Cost < Sum of Shadow Prices for Service on the route • The value of the services exceeds the cost of the route! 64 64 Is the Route Attractive? • For each consol pt on the route RouteVolume[route, consol] prices out • 0 < Shadow Price for trucks at consol pt (i.e., service isn’t the driver, the trucks are full) • Does MultiStop Trucks[route] price out? • Route Cost < Sum over stops on the route of Frequency Shadow Prices 65 65 A Resolution • Two Cases: – Case 1: MultiStopTrucks*Load Factor - Sum over stops on the route Route Volume > 0 – Case 2: MultiStopTrucks*Load Factor - Sum over stops on the route Route Volume = 0 66 66 Case 2 • MultiStopTrucks = (Sum over stops on the route Route Volume)/ Load Factor • Eliminate MultiStopTrucks • Insist each Route Volume be attractive (price out) – Otherwise, we would shortcut the route and not stop at that Consol pt. 67 67 Case 2 • Trucks required to each consol pt – For each consol pt (and type of capacity, e.g., weight, cube, floor space) Sum over routes that stop at the consol pt Route Volume + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0route Sum over stops on the • Service Level Constraint Route Volume /Load Factor – For each consol pt. Trucks + Sum over routes that stop at the consol pt MultiStopTrucks - Minimum Service level*Open 0 • Multi-Stop Trucks – For each multi-stop route MultiStopTrucks*Load Factor - Sum over stops on the route Route 68 Volume 0 68 Route Volume is specific to the Constraints RouteRelevant AND the Consol Pt • Trucks required to each consol pt But – For each consol pt (and type of capacity, e.g., weight, this iscube, thefloor sum over all the space) Sum over stop at the consol pt Route Volume stops onroutes the that route + Trucks*Load Factor - Sum over customers Assign*Requirement/Capacity 0 • Service Level Constraint – determine For each consol So, to if pt. Trucks +volume one Route Sum over routes that stop at the consol pt (Sum over is attractive… stops on the route Route Volume /Load Factor) - Minimum Service level*Open 0 69 69 Route Volume Attractive • We must consider – What we pay for the Route Volume (later) This is – It’s influence on the Trucks required at the where we Consol Pt (Shadow Price of the Trucks replaced required to carry the weight at the consol Multi-Stop pt) Trucks with the sum – It’s influence on the Frequency constraint for every consol pt on the route (Shadow Prices of these constraints/Load Factor) 70 70 What we pay for Route Volume • In the objective, we also replaced Cost per Multi-Stop Truck * Multi-Stop Trucks With Cost per Multi-Stop Truck * (Sum over stops on the route Route Volume /Load Factor) • So, each Route Volume bears the full cost of the Multi-Stop Route/Load Factor 71 71 Route Volume Attractive Three Factors: 1. What we pay for the Route Volume? Cost per Multi-Stop Truck/Load Factor 2. It’s influence on the Trucks required at the Consol Pt? Shadow Price of the Trucks required to carry the weight at the consol pt 3. It’s influence on the Frequency constraint for every consol pt on the route Sum over all the stops on the route of the Shadow Prices of the Frequency constraint/Load Factor 72 72 Route Volume Attractive Is The only thing Route Cost/Load Factor - Weight Price at Consol Pt that changes from consol pt to - Sum of Frequency Prices/Load Factor < 0? consol pt Is Route Cost - Load Factor*Weight Price at Consol Pt - Sum of Frequency Prices < 0? 73 73 Is the Route Attractive? Is Route Cost - Load Factor*Weight Price at Consol Pt - Sum of Frequency Prices <0 For every Consol Pt on the route? Get Getthese this from from sensitivity info 74 74 How to generate routes? • Have to decide which consol pts are on the route • Decision Variables – Is Consol pt first on a multi-stop route? – Does consol pt A follow consol pt B on a multi-stop route? 75 75 Constraints • Limit number of stops (practical) – At least 2 (so it’s multi-stop) – At most 4 (say) Bounds on the total number of legs • Find 1 Route – One leg out of the origin • Can’t go from consol pt B to consol pt C unless some leg takes you to B Number of legs out of B ≤ Number of legs into B 76 76 Price Constraints • For each consol pt on the route Route Cost < Load Factor * Weight Shadow Price for consol pt + Sum of Frequency Shadow Prices on route • But we don’t know what’s on the route! • Define OnRoute = sum of legs into consol pt (0 or 1) • Disjunctive Constraint 77 77 Price Constraints • For each consol pt on the route Route Cost < Load Factor * Weight Shadow Price for consol pt + Sum of Frequency Shadow Prices on route + M*(1-OnRoute) • Define OnRoute = sum of legs into consol pt (0 or 1) 78 78 Try It 79 79 New Problem • Sub-Tours: 1 6 5 80 80 Resolutions • Practical: – Each subsequent stop must be farther from the plant. • Subtour Elimination (Less Practical) – For each three consol pts, we can choose at most two legs – For each two consol pts, we can choose at most one leg – Generally, for each N consol pts, we can choose at most N-1 legs (but we limited routes to 4 legs) • Dynamic Programming type algorithm or iterative heuristic (software) 81 81 Try It 82 82 Summary • Solve the Master LP (relax integrality) without routes • Get Shadow Prices • Generate Routes (Case 1 & Case 2) • If there are attractive routes, add them and solve the Master LP again • If there are no attractive routes, solve to an Integer Optimum 83 83 Issues • Our procedure for generating multi-stop routes does not consider the integer decisions about what consol pts to use. • Heuristic resolution: At the end, repeat the column generation procedure with the consol pt decisions fixed. 84 84 Next Time • Change in Emphasis: • This time – Service level was fixed – Reduce transport cost • Next time – Transport cost “fixed” – Load Driven – Increase service 85 85