Example: Distribution

This example shows how a warehouse is satisfying and planning demand for multiple stores

About Example

Supply Chain solvers become more important as a network gets larger and more complex. In this example, a warehouse needs to satisfy demand from three dependent stores. Warehouses exists to break bulk... they allow a company to place larger orders to suppliers at a discounted price. Still, in order for the warehouse to be effective, and benefit the company with cost savings, it needs to be efficient at ordering the right quantity at the right time.

This is where a solver comes into play. The solver calculates the total flow needed, netted for inventory, to meet customer demand at the three stores. The solver output tells the warehouse exactly when it needs to ship, receive, and order.

Shipments

The "shipments" output file here shows the expected shipments necessary to meet demand. Note the "demand_key" column helps tie the shipment activity to the respective demand. This is especially helpful for shipments between supplier_1 and the warehouse since now a planner can quickly tie an upstream shipment in the network directly to the dependent demand at the store.

Value Add

How does this solver output benefit a company? The solver ensures the warehouse is ordering just enough supply at exactly the right time. The inventory quantities for store_1 and warehouse are netted out, so the warehouse only orders 10 units of the total 13 units of store demand. If each item costs $100, the company has saved at least $300 by not over purchasing and has kept their capital liquid for other uses.

Knowing the exact "arrival date" of each inbound shipment is critical too. This allows the warehouse to place orders to the supplier and consider how to aggregate inbound need into larger aggregate purchase orders. Aggregating flow into shipments allows a company to achieve economies of scale and pass cost savings onto the end customer.


demand

item location need_date demand_qty
item_1 store_1 5/30/2026 1
item_1 store_2 5/30/2026 2
item_1 store_3 5/30/2026 2
item_1 store_1 6/15/2026 4
item_1 store_2 6/15/2026 1
item_1 store_3 6/15/2026 3

item_location

item location genesis onhand_qty image
item_1 supplier_1 True 0 supplier.png
item_1 store_1 False 1 store_drawing.png
item_1 store_2 False 0 store_drawing.png
item_1 store_3 False 0 store_drawing.png
item_1 warehouse False 2 warehouse.png

lanes

item from_location to_location lead_time_days
item_1 warehouse store_1 10
item_1 supplier_1 warehouse 10
item_1 warehouse store_2 5
item_1 warehouse store_3 5

item_location_peggings

item location activity activity_date pegged_qty demand_key
item_1 supplier_1 0_item_genesis 2026-05-15 2 2
item_1 supplier_1 7_shipment_from 2026-05-15 2 2
item_1 warehouse 2_shipment_to 2026-05-25 2 2
item_1 warehouse 5_BOH_usage 2026-05-25 2 1
item_1 warehouse 7_shipment_from 2026-05-25 2 1
item_1 warehouse 7_shipment_from 2026-05-25 2 2
item_1 supplier_1 0_item_genesis 2026-05-26 4 3
item_1 supplier_1 7_shipment_from 2026-05-26 4 3
item_1 store_1 5_BOH_usage 2026-05-30 1 0
item_1 store_2 2_shipment_to 2026-05-30 2 1
item_1 store_3 2_shipment_to 2026-05-30 2 2
item_1 supplier_1 0_item_genesis 2026-05-31 1 4
item_1 supplier_1 0_item_genesis 2026-05-31 3 5
item_1 supplier_1 7_shipment_from 2026-05-31 1 4
item_1 supplier_1 7_shipment_from 2026-05-31 3 5
item_1 warehouse 2_shipment_to 2026-06-05 4 3
item_1 warehouse 7_shipment_from 2026-06-05 4 3
item_1 warehouse 2_shipment_to 2026-06-10 1 4
item_1 warehouse 2_shipment_to 2026-06-10 3 5
item_1 warehouse 7_shipment_from 2026-06-10 1 4
item_1 warehouse 7_shipment_from 2026-06-10 3 5
item_1 store_1 2_shipment_to 2026-06-15 4 3
item_1 store_2 2_shipment_to 2026-06-15 1 4
item_1 store_3 2_shipment_to 2026-06-15 3 5

shipments

level from_location to_location item ship_date arrival_date shipment_qty demand_key
1 warehouse store_2 item_1 2026-05-25 2026-05-30 2 1
1 warehouse store_3 item_1 2026-05-25 2026-05-30 2 2
1 warehouse store_1 item_1 2026-06-05 2026-06-15 4 3
1 warehouse store_2 item_1 2026-06-10 2026-06-15 1 4
1 warehouse store_3 item_1 2026-06-10 2026-06-15 3 5
2 supplier_1 warehouse item_1 2026-05-15 2026-05-25 2 2
2 supplier_1 warehouse item_1 2026-05-26 2026-06-05 4 3
2 supplier_1 warehouse item_1 2026-05-31 2026-06-10 1 4
2 supplier_1 warehouse item_1 2026-05-31 2026-06-10 3 5

Loading Supply Chain Network from Files
Required BOM files missing... will solve without BOMs
Running obo Solver
***Starting to plan for demand key 0***
At store_1: Searching inventory for 1 of item_1
At store_1: Inventory meets all 1 need for item_1
***Found 100.00% supply for demand key 0***
***Starting to plan for demand key 1***
At store_2: Searching inventory for 2 of item_1
At store_2: No inventory for item_1
At store_2: Searching BodEdge item_1-warehouse to item_1-store_2
--At warehouse: Searching inventory for 2 of item_1
--At warehouse: Inventory meets all 2 need for item_1
At store_2: Found all supply. Done searching edges of item_1-store_2
***Found 100.00% supply for demand key 1***
***Starting to plan for demand key 2***
At store_3: Searching inventory for 2 of item_1
At store_3: No inventory for item_1
At store_3: Searching BodEdge item_1-warehouse to item_1-store_3
--At warehouse: Searching inventory for 2 of item_1
--At warehouse: No inventory for item_1
--At warehouse: Searching BodEdge item_1-supplier_1 to item_1-warehouse
----At supplier_1: Genesis Node for item_1. All 2 need satisfied
--At warehouse: Found all supply. Done searching edges of item_1-warehouse
At store_3: Found all supply. Done searching edges of item_1-store_3
***Found 100.00% supply for demand key 2***
***Starting to plan for demand key 3***
At store_1: Searching inventory for 4 of item_1
At store_1: No inventory for item_1
At store_1: Searching BodEdge item_1-warehouse to item_1-store_1
--At warehouse: Searching inventory for 4 of item_1
--At warehouse: No inventory for item_1
--At warehouse: Searching BodEdge item_1-supplier_1 to item_1-warehouse
----At supplier_1: Genesis Node for item_1. All 4 need satisfied
--At warehouse: Found all supply. Done searching edges of item_1-warehouse
At store_1: Found all supply. Done searching edges of item_1-store_1
***Found 100.00% supply for demand key 3***
***Starting to plan for demand key 4***
At store_2: Searching inventory for 1 of item_1
At store_2: No inventory for item_1
At store_2: Searching BodEdge item_1-warehouse to item_1-store_2
--At warehouse: Searching inventory for 1 of item_1
--At warehouse: No inventory for item_1
--At warehouse: Searching BodEdge item_1-supplier_1 to item_1-warehouse
----At supplier_1: Genesis Node for item_1. All 1 need satisfied
--At warehouse: Found all supply. Done searching edges of item_1-warehouse
At store_2: Found all supply. Done searching edges of item_1-store_2
***Found 100.00% supply for demand key 4***
***Starting to plan for demand key 5***
At store_3: Searching inventory for 3 of item_1
At store_3: No inventory for item_1
At store_3: Searching BodEdge item_1-warehouse to item_1-store_3
--At warehouse: Searching inventory for 3 of item_1
--At warehouse: No inventory for item_1
--At warehouse: Searching BodEdge item_1-supplier_1 to item_1-warehouse
----At supplier_1: Genesis Node for item_1. All 3 need satisfied
--At warehouse: Found all supply. Done searching edges of item_1-warehouse
At store_3: Found all supply. Done searching edges of item_1-store_3
***Found 100.00% supply for demand key 5***
Solver complete. Writing output

Created by Bill Ulrich
See the About page for more details