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 or more complex. In this example, a warehouse needs to plan demand from three dependent stores. Warehouses exists to break bulk... they allow a company to place larger orders to a supplier at lower costs. The solver here calculates the total flow needed, netted for inventory, to meet customer demand at the store. This helps the warehouse understand expected shipment dates as well as when they need to place orders to their supplier.

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 the supplier_1 to warehouse shipments as they are 1 level higher in the network and hard to infer without this "pegging" detail.

Value Add

What value does this bring a distributor? The solver here ensures the distributor is ordering just enough supply at exactly the right time. The inventory 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 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 agregate purchase orders. Agregating 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