ShipSmartTM: The Model and the Computer Science Jonathan Sheffi University of Maryland College Park April 17, 2000 Outline The EOQ Model Reliability and Safety Stock Internal Structure of ShipSmart ShipSmart™ Example Object-Oriented Programming Lot Size Inventory Tradeoff: Production Batch vs. Inventory similar to Tradeoff: Shipment Size vs. Inventory • Production setup costs vs. Inventory carrying costs • Transportation costs vs. Inventory carrying costs Economic Order Quantity Model A simple business: • Order fixed quantity of goods at fixed intervals • Sell at constant rate In Stock Time Inventory costs = quantity x time A Single Receiving Cycle Stock (# of items) Time (days) A Single Receiving Cycle Stock (# of items) 1 2 3 4 5 6 7 8 9 10 11 12 13 Time (days) A Single Receiving Cycle Stock (# of items) X 1 2 3 4 5 6 7 8 9 10 11 12 13 Time (days) A Single Receiving Cycle Stock (# of items) X 1 2 3 4 5 6 7 8 9 10 11 12 13 Time (days) A Single Receiving Cycle Stock (# of items) X Y 1 2 3 4 5 6 7 8 9 10 11 12 13 Time (days) Smaller (and more frequent) shipments imply lower inventory carrying costs Tradeoffs: Smaller shipments • low inventory costs • high transportation costs Large shipments • high inventory costs • low transportation costs In addition: Inventory cost-in transit Inventory Costs Inventory Carrying Costs/Unit In-Transit Inventory Shipment Size Transportation Costs 14 LTL Rate 12 10 8 Formula rate curve 6 4 Actual rate curve 2 0 0 2 4 6 Shipment Size 8 10 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 8 6 4 2 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 8 6 4 Transportation costs 2 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Cycle inventory costs 8 6 4 Transportation costs 2 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Cycle inventory costs 8 6 4 Transportation costs 2 In-Transit Inventory 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Cycle inventory costs 8 6 Total inventory costs 4 Transportation costs 2 In-Transit Inventory 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Total logistics costs Cycle inventory costs 8 6 Total inventory costs 4 Transportation costs 2 In-Transit Inventory 0 Shipment Size 0 1 2 3 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Total logistics costs Cycle inventory costs 8 6 Total inventory costs 4 Transportation costs 2 In-Transit Inventory 0 Opt. size 0 1 2 3 Shipment Size 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Basic Tradeoffs 16 COSTS 14 ($/item) 12 10 Total logistics costs Cycle inventory costs 8 cost Least 6 Total inventory costs 4 Transportation costs 2 In-Transit Inventory 0 Opt. size 0 1 2 3 Shipment Size 4 Logistics Cost Components as a Function of Shipment Size (items/shipment) 5 6 Elements of Total Logistics Costs Transportation Costs Cycle Inventory Costs In Transit Inventory Costs Safety Stock Costs Other Costs Total Logistics Cost Analytical Expressions Optimal Shipment Size Total Logistics Costs = = 2 * (Transportation costs) (Demand rate) (Cycle Inventory Costs) 2 * (Cycle Inventory Costs) (Transportation Costs) (Demand Rate) In-transit Inventory Costs Safety Stock Costs Other Costs Transit Times Transit delivery times vary in random fashion. Each mode and carrier is characterized by a distribution of delivery times. Effect of Shipment Delay Inventory Time Regular on-time delivery Effect of Shipment Delay Inventory Time Delay One delivery delayed Effect of Shipment Delay Inventory Time Delay Delivery pattern with a single delay Effect of Shipment Delay Inventory Time Delay Erratic delivery pattern Effect of Safety Stock Inventory Time Safety stock level Effect of Safety Stock Inventory Time Avoiding stock-out Transit Time Density Function Probability Transit Time Transit Time Density Function Probability Transit Time Average Time Transit Time Density Function Probability Transit Time Average Time 95 Percentile Transit Time Density Function Probability Safety Time Transit Time Average Time 95 Percentile Transit Time Density Function Probability Safety Time Transit Time Average Time 95 Percentile Safety Stock for 95% Fill Rate = (Safety Time) x (Sales Rate) The Internal Structure Calculations are performed for each option separately In case there is one segment: – Optimal shipment size is calculated using the EOQ formula – Takes into account minimum frequency and storage capacity – Calculates all other output values The Internal Structure For multiple segments: – Rank vehicle capacities – Find how many vehicles are needed for each segment – Loop over the second largest, third largest, etc. – Use optimal solution to calculate all output values (including the segment solutions) ShipSmart Example Tactics for the Rail Operator Reduce shipment price Tighten delivery time Tighten reliability Compete for lower valued commodities Compete for commodities which ship in high volume Procedural vs. OOP Procedural programming: – Organize system around procedures that operate on data (do-something <data> <arg> ...) (do-another-thing <data>) Object-oriented programming: – Organize system around objects that receive messages (<object> 'do-something <arg>) (<object> 'do-another-thing) – An object encapsulates data and operations Advantages of OOP • Simplicity: software objects model real world objects, so the complexity is reduced and the program structure is very clear • Modularity: each object forms a separate entity whose internal workings are decoupled from other parts of the system • Modifiability: it is easy to make minor changes in the data representation or the procedures in an OO program. Changes in the behavior of an object do not affect any other part of a program, since the only public interface that the external world has to an object is through messages • Extensibility: adding new features or responding to changing operating environments can be solved by introducing a few new objects and modifying some existing ones • Maintainability: objects can be maintained separately, making locating and fixing problems easier • Reusability: objects can be reused in different programs Elements of OOP Class: – specifies the common behavior of entities Instance: – A particular object or entity of a given class Space War Class Diagram SHIP position: velocity: num-torps: TORPEDO position: velocity: target: proximity-fuse: TORPEDO? POSITION VELOCITY MOVE DISPLAY CLOCK-TICK POSITION VELOCITY MOVE SHIP? ATTACK DISPLAY CLOCK-TICK EXPLODE PLANET position: POSITION PLANET? DISPLAY CLOCK-TICK Space War Class Diagram SHIP position: velocity: num-torps: TORPEDO position: velocity: target: proximity-fuse: TORPEDO? POSITION VELOCITY MOVE DISPLAY CLOCK-TICK POSITION VELOCITY MOVE SHIP? ATTACK DISPLAY CLOCK-TICK EXPLODE PLANET position: POSITION PLANET? DISPLAY CLOCK-TICK • Ships and torpedoes have some behavior that is the same – is there are way to capture this commonality? Space war game with Inheritance MOBILE-THING position: velocity: MOBILE-THING? POSITION VELOCITY MOVE MOBILE-THING is-a is-a TORPEDO target: proximity-fuse: TORPEDO? DISPLAY CLOCK-TICK SHIP class is a specialization or subclass of the MOBILE-THING class – SHIP is-a MOBILE-THING – SHIP inherits the state and behavior of MOBILE-THING class is a super-class of the SHIP and TORPEDO classes SHIP has-a target PLANET num-torps: position: SHIP? ATTACK DISPLAY CLOCK-TICK EXPLODE POSITION PLANET? DISPLAY CLOCK-TICK Any Questions? Jon Sheffi jsheffi@mit.edu ? ? ?? ? ?