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_id | location | lead_time_days |
|---|---|---|
| 1 | factory_1 | 5 |
| 2 | factory_1 | 10 |
| bom_id | input_item | input_qty |
|---|---|---|
| 1 | rm_1 | 1.0 |
| 1 | rm_2 | 2.0 |
| 1 | rm_3 | 0.5 |
| bom_id | output_item | output_qty |
|---|---|---|
| 1 | fg_1 | 1 |
| 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 | 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 |
| 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 |
| 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 |
| 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