Example: Partial BOM

Simple distribution example showing planning from store to DC to supplier

The one store example shows how need for one unit of item_1 at store_1 is propogated up the supply chain. The store doesn't have any inventory, so it searches it's only available source, dc_1, for additional quantity. dc_1 has no inventory so it requests the 1 unit of item_1 from supplier_1. supplier_1 is a genesis node, it has unlimited supply, so it is able to supply dc_1 with the 1 unit of supply. dc_1 then shares this supply to store_1 to satisfy the original demand for one unit of item_1 at store_1.


bom_ids

bom_id location lead_time_days
1 factory_1 5
2 factory_1 10

bom_inputs

bom_id input_item input_qty
1 rm_1 1.0
1 rm_2 2.0
1 rm_3 0.5

bom_outputs

bom_id output_item output_qty
1 fg_1 1

demand

location item need_date demand_qty note
store_1 fg_1 5/30/2024 1.0 NaN
factory_1 rm_1 6/30/2024 0.5 use this to check .5 inventory at factory exists for use
factory_1 rm_1 6/30/2024 1.0 this should not have inventory at factory 1

item_location

item location genesis onhand_qty
rm_1 supplier_1 True NaN
rm_2 supplier_1 False NaN
rm_3 supplier_2 True NaN
rm_1 factory_1 False 1.0
rm_2 factory_1 False 1.0
rm_3 factory_1 False 1.0

lanes

item from_location to_location lead_time_days
fg_1 factory_1 store_1 5
rm_1 supplier_1 factory_1 8
rm_2 supplier_1 factory_1 8
rm_3 supplier_2 factory_1 8

Output Data

item_location_peggings

item location activity activity_date pegged_qty demand_key
rm_1 factory_1 5_BOH_usage 2024-05-20 0.50 0
rm_2 factory_1 5_BOH_usage 2024-05-20 1.00 0
rm_3 factory_1 5_BOH_usage 2024-05-20 0.25 0
rm_1 factory_1 6_BOM_input 2024-05-20 0.50 0
rm_2 factory_1 6_BOM_input 2024-05-20 1.00 0
rm_3 factory_1 6_BOM_input 2024-05-20 0.25 0
fg_1 factory_1 3_BOM_output 2024-05-25 0.50 0
fg_1 factory_1 7_shipment_from 2024-05-25 0.50 0
fg_1 store_1 2_shipment_to 2024-05-30 0.50 0
rm_1 supplier_1 0_item_genesis 2024-06-22 1.00 2
rm_1 supplier_1 7_shipment_from 2024-06-22 1.00 2
rm_1 factory_1 2_shipment_to 2024-06-30 1.00 2
rm_1 factory_1 5_BOH_usage 2024-06-30 0.50 1

shipments

level from_location to_location item ship_date arrival_date shipment_qty demand_key
1 factory_1 store_1 fg_1 2024-05-25 2024-05-30 0.5 0
1 supplier_1 factory_1 rm_1 2024-06-22 2024-06-30 1.0 2

Loading Supply Chain Network from Files
Running obo Solver
***Starting to plan for demand key 0***
At store_1: Searching inventory for 1.0 of fg_1
At store_1: No inventory for fg_1
At store_1: Searching BodEdge fg_1-factory_1 to fg_1-store_1
--At factory_1: Searching inventory for 1.0 of fg_1
--At factory_1: No inventory for fg_1
--At factory_1: Searching BomOutputEdge BOM-1 to fg_1-factory_1
----At BOM 1 input 1/3: Searching for 1.0 of rm_1
------At factory_1: Searching inventory for 1.0 of rm_1
------At factory_1: Inventory meets all 1.0 need for rm_1
----At BOM 1 input 1/3: Found all supply for rm_1
----At BOM 1 input 2/3: Searching for 2.0 of rm_2
------At factory_1: Searching inventory for 2.0 of rm_2
------At factory_1: Found 1.0/2.0 inventory for rm_2
------At factory_1: Searching BodEdge rm_2-supplier_1 to rm_2-factory_1
--------At supplier_1: Searching inventory for 2.0 of rm_2
--------At supplier_1: No inventory for rm_2
--------At supplier_1: No parent edges to search. Returning found supply 0
------At factory_1: No supply found upstream of rm_2-supplier_1 to rm_2-factory_1
----At BOM 1 input 2/3: Found only 50.00% of need for rm_2
----At BOM 1 input 3/3: Searching for 0.25 of rm_3
------At factory_1: Searching inventory for 0.25 of rm_3
------At factory_1: Inventory meets all 0.25 need for rm_3
----At BOM 1 input 3/3: Found all supply for rm_3
----At BOM 1: Searching bom again for just 0.5 qty
----At BOM 1 input 1/3: Searching for 0.5 of rm_1
------At factory_1: Searching inventory for 0.5 of rm_1
------At factory_1: Inventory meets all 0.5 need for rm_1
----At BOM 1 input 1/3: Found all supply for rm_1
----At BOM 1 input 2/3: Searching for 1.0 of rm_2
------At factory_1: Searching inventory for 1.0 of rm_2
------At factory_1: Inventory meets all 1.0 need for rm_2
----At BOM 1 input 2/3: Found all supply for rm_2
----At BOM 1 input 3/3: Searching for 0.25 of rm_3
------At factory_1: Searching inventory for 0.25 of rm_3
------At factory_1: Inventory meets all 0.25 need for rm_3
----At BOM 1 input 3/3: Found all supply for rm_3
--At factory_1: Found 0.5/1.0 on edge BOM-1 to fg_1-factory_1
At store_1: Found 0.5/1.0 on edge fg_1-factory_1 to fg_1-store_1
***Found 50.00% supply for demand key 0***
***Starting to plan for demand key 1***
At factory_1: Searching inventory for 0.5 of rm_1
At factory_1: Inventory meets all 0.5 need for rm_1
***Found 100.00% supply for demand key 1***
***Starting to plan for demand key 2***
At factory_1: Searching inventory for 1.0 of rm_1
At factory_1: No inventory for rm_1
At factory_1: Searching BodEdge rm_1-supplier_1 to rm_1-factory_1
--At supplier_1: Genesis Node for rm_1. All 1.0 need satisfied
At factory_1: Found all supply. Done searching edges of rm_1-factory_1
***Found 100.00% supply for demand key 2***
Solver complete. Writing output

Created by Bill Ulrich
See the About page for more details