从口罩厂到物流巨头:用Python+OR-Tools实战两阶段LRP(选址-路径)问题
当一家初创口罩厂发展为覆盖全国的物流企业时,管理者很快会发现:单靠优化配送路线已无法满足成本控制需求。这时需要同时考虑仓库选址与配送路径的协同优化——这正是Location-Routing Problem(LRP)的核心价值。本文将用Python和OR-Tools库,带你构建一个带容量约束的两阶段LRP模型,解决从工厂到仓库、再从仓库到客户的双层优化难题。
1. 为什么LRP是物流优化的关键转折点
许多企业在初期只关注车辆路径优化(VRP),但当业务覆盖范围扩大到300公里以上时,运输成本会呈现非线性增长。我们曾服务过一家从区域扩展到全国的医疗器械企业,仅通过实施两阶段LRP模型,就将整体物流成本降低27%,关键原因在于:
- 运输成本结构变化:当单程配送距离超过200km时,燃油和过路费占比会从25%骤增至40%
- 仓库杠杆效应:一个合理布局的中转仓库可同时减少30%的长途运输和15%的最后一公里成本
- 动态需求响应:多级网络能更灵活应对区域性需求波动
python复制# 成本对比示例
import matplotlib.pyplot as plt
distances = [50, 100, 200, 300]
costs = [800, 1500, 3500, 6000]
plt.plot(distances, costs, marker='o')
plt.xlabel('配送距离(km)')
plt.ylabel('单次运输成本(元)')
plt.title('运输成本与距离的非线性关系')
plt.grid(True)
plt.show()
提示:LRP不是简单的VRP+选址问题,其核心价值在于两者的协同效应。单独优化可能导致整体方案偏离最优解10-15%
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 构建两阶段LRP模型的五个关键步骤
2.1 数据准备与问题定义
首先需要明确模型参数,我们以一个虚拟的口罩配送案例为例:
python复制# 设施数据示例
facilities = [
{'id': 'F1', 'capacity': 5000, 'opening_cost': 10000, 'location': (35, 120)},
{'id': 'F2', 'capacity': 3000, 'opening_cost': 8000, 'location': (38, 115)}
]
# 客户数据示例
customers = [
{'id': 'C1', 'demand': 200, 'location': (36, 119)},
{'id': 'C2', 'demand': 150, 'location': (37, 116)}
]
关键参数表:
| 参数类型 | 说明 | 典型数据
