Python linear programming model (PuLP + scipy) evaluating warehouse locations, lane allocations, and transport mode assignments to minimise total distribution cost while satisfying service-level constraints across a 12-node European network.
The distribution network was designed 8 years ago for a different customer mix. Four warehouse locations were chosen based on real estate availability, not demand centroids. Demand has shifted significantly since, resulting in 23% of lanes operating well above optimal cost-per-km and 14% of SLA commitments at risk due to distance misalignment.
A Python model formulates the network as a minimum-cost flow problem: minimise Σ(cost per lane × volume) subject to supply balance at each warehouse, demand satisfaction at each customer node, capacity constraints, and maximum service lead-time per SLA band. Candidate warehouse locations evaluated via p-median heuristic.
The optimised network consolidates from 4 to 3 active DCs, shifts 8 road lanes to rail, and eliminates 6 suboptimal cross-docking points. Total annual distribution cost drops from €7.8M to €6.4M — an 18% saving. SLA compliance improves from 81% to 97%. Full implementation over 9 months.
| LANE ID | ORIGIN | DESTINATION | MODE | DIST (KM) | VOLUME (UNITS) | TRANSPORT (€) | HANDLING (€) | TOTAL COST (€) | OPT SAVING (€) | SLA DAYS | ACTUAL DAYS | SLA MET | STATUS |
|---|