B 题 城市垃圾分类运输的路径优化与调度
注:该内容由“数模加油站”原创,无偿分享,可以领取参考但不要利用该内容倒卖,谢谢!
问题一:单一车辆类型下的基础路径优化与调度
1) 建立数学模型
问题描述
某城区有n个垃圾分类收集点,每个收集点每日产生一种类型的垃圾(仅考虑"厨余垃圾"单一类型,需由专用车辆运输)。已知各收集点的坐标(xᵢ, yᵢ)、垃圾产生量wᵢ(吨),以及运输车辆的最大载重Q(吨)和固定发车点(垃圾处理厂,编号为0)。
目标:以最小化每日总行驶距离为目标,确定运输车的数量、每辆运输车的运输路径及任务分配。
参数定义
- n:收集点数量
- i, j:收集点编号,i, j ∈ {0, 1, 2, ..., n},其中0表示垃圾处理厂
- (xᵢ, yᵢ):收集点i的坐标
- wᵢ:收集点i的垃圾产生量(吨),i ∈ {1, 2, ..., n}
- Q:车辆最大载重(吨)
- dᵢⱼ:收集点i到收集点j的距离,dᵢⱼ = √[(xᵢ-xⱼ)² + (yᵢ-yⱼ)²]
- K:车辆数量上界,K = ⌈∑ᵢ₌₁ⁿ wᵢ / Q⌉
决策变量
- xᵢⱼₖ:0-1变量,若车辆k从收集点i直接行驶到收集点j,则xᵢⱼₖ = 1,否则为0
- yᵢₖ:0-1变量,若收集点i由车辆k服务,则yᵢₖ = 1,否则为0
- zₖ:0-1变量,若使用车辆k,则zₖ = 1,否则为0
- uᵢₖ:连续变量,车辆k访问收集点i时的累计载重量
数学模型
目标函数:
min Z = ∑ₖ₌₁ᴷ ∑ᵢ₌₀ⁿ ∑ⱼ₌₀ⁿ dᵢⱼ · xᵢⱼₖ
约束条件:
- 收集点服务唯一性约束:
∑ₖ₌₁ᴷ yᵢₖ = 1, ∀i ∈ {1, 2, ..., n}
- 车辆载重约束:
∑ᵢ₌₁ⁿ wᵢ · yᵢₖ ≤ Q · zₖ, ∀k ∈ {1, 2, ..., K}
- 车辆使用一致性约束:
yᵢₖ ≤ zₖ, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
- 路径连续性约束:
∑ⱼ₌₀ⁿ xᵢⱼₖ = yᵢₖ, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
∑ᵢ₌₀ⁿ xᵢⱼₖ = yⱼₖ, ∀j ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
- 车辆出发和返回约束:
∑ⱼ₌₁ⁿ x₀ⱼₖ ≤ zₖ, ∀k ∈ {1, 2, ..., K}
∑ᵢ₌₁ⁿ xᵢ₀ₖ ≤ zₖ, ∀k ∈ {1, 2, ..., K}
- 子回路消除约束(MTZ约束):
u₀ₖ = 0, ∀k ∈ {1, 2, ..., K}
uᵢₖ ≥ wᵢ · yᵢₖ, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
uᵢₖ ≤ Q · yᵢₖ, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
uᵢₖ - uⱼₖ + Q · xᵢⱼₖ ≤ Q - wⱼ, ∀i,j ∈ {1, 2, ..., n}, i≠j, ∀k ∈ {1, 2, ..., K}
- 变量定义域:
xᵢⱼₖ ∈ {0, 1}, ∀i,j ∈ {0, 1, ..., n}, ∀k ∈ {1, 2, ..., K}
yᵢₖ ∈ {0, 1}, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
zₖ ∈ {0, 1}, ∀k ∈ {1, 2, ..., K}
uᵢₖ ≥ 0, ∀i ∈ {1, 2, ..., n}, ∀k ∈ {1, 2, ..., K}
2) 给定n=30,Q=5吨的具体问题求解
数学模型实例化
根据附件1数据,我们有:
n = 30个收集点
Q = 5吨
处理厂坐标:(0, 0)
各收集点坐标和垃圾产生量见附件1
距离计算公式:
dᵢⱼ = ⌊√[(xᵢ-xⱼ)² + (yᵢ-yⱼ)²] + 0.5⌋ (四舍五入取整)
车辆数量上界估算:
总垃圾量 W = ∑ᵢ₌₁³⁰ wᵢ
车辆数量上界 K = ⌈W / 5⌉
整数规划非整数等等
启发式算法
遗传算法
3) 模型局限性分析与改进方向
局限性分析
1. 距离计算过于简化
- 使用欧几里得距离,忽略实际道路网络
- 未考虑交通信号灯、路况等因素
- 未考虑单行道、禁行路段
2. 车辆运行假设不现实
- 假设车辆速度恒定40km/h
- 未考虑装卸时间
- 未考虑交通拥堵的时变特性
3. 约束条件不够完整
- 未考虑司机工作时间限制
- 未考虑车辆燃油/电量限制
- 未考虑收集点的服务时间窗口
- 未考虑车辆维护和故障
4. 目标函数单一
- 仅优化距离,未考虑时间成本
- 未考虑燃油成本、人工成本
- 未考虑环境影响(碳排放)
改进方向
改进方向一:实际路网距离模型
引入路网图G=(V,E),其中V为路网节点,E为道路边:
距离计算:dᵢⱼ = shortest_path(i, j, G)
时间依赖:dᵢⱼ(t) = f(基础距离, 拥堵系数(t))
目标函数修改:min ∑ᵢⱼₖ travel_time_ij(t) × xᵢⱼₖ
改进方向二:动态随机需求模型
考虑垃圾产生量的随机性:
wᵢ ~ N(μᵢ, σᵢ²) (正态分布)
约束修改:P(∑ᵢ wᵢyᵢₖ ≤ Q) ≥ α (机会约束)
或使用鲁棒优化:∑ᵢ (μᵢ + Γσᵢ)yᵢₖ ≤ Q
改进方向三:多目标优化模型
目标函数修改为:
min f = w₁×总距离 + w₂×总时间 + w₃×总成本 + w₄×碳排放
约束增加:
- 司机工作时间:∑ᵢⱼ travel_time_ij×xᵢⱼₖ ≤ T_max
- 燃油限制:∑ᵢⱼ fuel_consumption_ij×xᵢⱼₖ ≤ F_max
- 时间窗口:aᵢ ≤ arrival_time_i ≤ bᵢ
问题二:多车辆协同与载重约束下的优化
1) 建立多车辆协同运输模型
问题描述
现实中,垃圾分类运输需区分不同垃圾类型(4类垃圾:厨余垃圾、可回收物、有害垃圾、其他垃圾),每类垃圾需由专用车辆运输(车辆类型k ∈ {1,2,3,4})。每类车辆的载重限制Qₖ、容积限制Vₖ、单位距离运输成本Cₖ不同,且每个收集点可能产生多种类型的垃圾。
目标:以最小化每日总运输成本为目标。
参数定义
- k:垃圾/车辆类型,k ∈ {1,2,3,4},分别对应厨余垃圾、可回收物、有害垃圾、其他垃圾
- wᵢ,ₖ:收集点i产生的k类垃圾量(吨),满足∑ₖ₌₁⁴ wᵢ,ₖ = wᵢ
- Qₖ:k类车辆的载重限制(吨)
- Vₖ:k类车辆的容积限制(m³)
- Cₖ:k类车辆的单位距离运输成本(元/km)
- ρₖ:k类垃圾的密度(吨/m³)
- Kₖ:k类车辆数量上界,Kₖ = ⌈∑ᵢ₌₁ⁿ wᵢ,ₖ / Qₖ⌉
决策变量
- xᵢⱼₖₜ:0-1变量,k类车辆t从收集点i到收集点j则为1,否则为0
- yᵢₖₜ:0-1变量,收集点i的k类垃圾由车辆t收集则为1,否则为0
- zₖₜ:0-1变量,k类车辆t被使用则为1,否则为0
- uᵢₖₜ:连续变量,k类车辆t到达收集点i时的累计重量载荷
- vᵢₖₜ:连续变量,k类车辆t到达收集点i时的累计容积载荷
数学模型
目标函数:
min Z = ∑ₖ₌₁⁴ ∑ₜ₌₁ᴷᵏ ∑ᵢ₌₀ⁿ ∑ⱼ₌₀ⁿ Cₖ · dᵢⱼ · xᵢⱼₖₜ
约束条件:
- 垃圾收集完整性约束:
∑ₜ₌₁ᴷᵏ yᵢₖₜ = 1, ∀i ∈ {1,2,...,n}, ∀k ∈ {1,2,3,4}
- 车辆载重约束:
∑ᵢ₌₁ⁿ wᵢ,ₖ · yᵢₖₜ ≤ Qₖ · zₖₜ, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
- 车辆容积约束:
∑ᵢ₌₁ⁿ (wᵢ,ₖ/ρₖ) · yᵢₖₜ ≤ Vₖ · zₖₜ, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
- 车辆使用一致性约束:
yᵢₖₜ ≤ zₖₜ, ∀i ∈ {1,2,...,n}, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
- 路径连续性约束:
∑ⱼ₌₀ⁿ xᵢⱼₖₜ = yᵢₖₜ, ∀i ∈ {1,2,...,n}, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
∑ᵢ₌₀ⁿ xᵢⱼₖₜ = yⱼₖₜ, ∀j ∈ {1,2,...,n}, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
- 车辆出发和返回约束:
∑ⱼ₌₁ⁿ x₀ⱼₖₜ ≤ zₖₜ, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
∑ᵢ₌₁ⁿ xᵢ₀ₖₜ ≤ zₖₜ, ∀k ∈ {1,2,3,4}, ∀t ∈ {1,2,...,Kₖ}
- 双重子回路消除约束:
重量维度:uᵢₖₜ - uⱼₖₜ + Qₖ · xᵢⱼₖₜ ≤ Qₖ - wⱼ,ₖ, ∀i≠j, ∀k, ∀t
容积维度:vᵢₖₜ - vⱼₖₜ + Vₖ · xᵢⱼₖₜ ≤ Vₖ - wⱼ,ₖ/ρₖ, ∀i≠j, ∀k, ∀t
2) 算法扩展与约束条件变化分析
从问题一到问题二的扩展
变化1:问题规模扩大
- 原问题:单类垃圾,1种车型
- 新问题:4类垃圾,4种车型
- 决策变量增加:n×K → n×4×Kₖ
变化2:约束条件增加
- 新增容积约束
- 新增垃圾类型匹配约束
- 载重约束按车型分别计算
变化3:目标函数修改
- 距离最小化 → 成本最小化
- 不同车型有不同单位成本
算法扩展策略
策略一:分解协调算法
步骤1:垃圾类型分解
for k = 1 to 4:
子问题k:min ∑ᵢⱼₜ Cₖ·dᵢⱼ·xᵢⱼₖₜ
约束:载重、容积、路径连续性
步骤2:协调优化
- 检查是否有收集点可以共享路径
- 使用拉格朗日松弛协调各子问题
策略二:统一建模求解
步骤1:预处理
- 计算各类垃圾的有效收集点(wᵢ,ₖ > 0的点)
- 构建各车型的距离矩阵
步骤2:启发式初解
- 对每类垃圾独立求解TSP
- 使用节约算法合并路径
步骤3:邻域搜索改进
- 同类车辆间的2-opt, Or-opt操作
- 不同车型间的收集点交换(若同时服务)
约束条件变化分析
原约束条件(问题一):
- 载重约束:1个
- 路径约束:n个收集点
- 决策变量:O(n²K)
新约束条件(问题二):
- 载重约束:4个(按车型)
- 容积约束:4个(新增)
- 垃圾类型约束:4n个(每个收集点每类垃圾)
- 路径约束:4n个收集点×车型
- 决策变量:O(n²∑ₖKₖ)
复杂度增长:
- 约束数量:n → 8+8n(增长约8倍)
- 变量数量:n²K → n²∑ₖKₖ(增长约4倍,假设各车型数量相当)
具体求解过程
根据附件2和附件3的数据:
第一步:数据提取
车型参数(附件2):
k=1(厨余):Q₁=8吨, V₁=20m³, C₁=2.5元/km
k=2(可回收):Q₂=6吨, V₂=25m³, C₂=2.0元/km
k=3(有害):Q₃=3吨, V₃=10m³, C₃=5.0元/km
k=4(其他):Q₄=10吨, V₄=18m³, C₄=1.8元/km
垃圾分布(附件3):
各收集点的4类垃圾量wᵢ,ₖ
第三步:分层求解
层次1:确定车辆数量
Kₖ = ⌈∑ᵢwᵢ,ₖ / Qₖ⌉,考虑容积限制修正
层次2:路径规划
对每种车型k,求解VRP子问题
多目标粒子群等等
层次3:全局协调
检查解的可行性和优化空间
3) 增加时间约束的模型修改
新增参数
- Tₘₐₓ:车辆每日最大行驶时间(小时)
- v:车辆平均行驶速度(40km/h)
- sᵢ:收集点i的服务时间(小时)
模型修改
新增决策变量:
tᵢₖₜ:k类车辆t到达收集点i的时间
新增约束条件:
- 时间连续性约束:
tⱼₖₜ ≥ tᵢₖₜ + (dᵢⱼ/v) + sᵢ - M(1-xᵢⱼₖₜ), ∀i≠j, ∀k, ∀t
- 最大行驶时间约束:
t₀ₖₜ + ∑ᵢ₌₁ⁿ sᵢ·yᵢₖₜ ≤ Tₘₐₓ·zₖₜ, ∀k, ∀t
其中t₀ₖₜ表示车辆t返回处理厂的时间。
- 工作时间窗口约束:
6 ≤ tᵢₖₜ ≤ 18, ∀i, ∀k, ∀t
时间约束对路径规划的影响示例
问题三:含中转站选址与时间窗口的综合优化
问题描述
考虑在城区规划若干中转站,中转站可对各类垃圾进行临时存储与分拣。每类垃圾在中转站的最大存储量为Sₖ吨,且中转站仅在固定时间窗口[aⱼ, bⱼ]内允许车辆停靠。同时需考虑碳排放约束。
目标:建立"中转站选址-路径优化-碳排放最少"的综合数学模型,最小化运输成本与中转站建设成本之和。
参数定义
- m:候选中转站数量
- j:中转站编号,j ∈ {n+1, n+2, ..., n+m}
- Sⱼₖ:中转站j对k类垃圾的最大存储容量(吨)
- [aⱼ, bⱼ]:中转站j的工作时间窗口(小时)
- Tⱼ:建设中转站j的固定成本(万元)
- αₖ:k类车辆的碳排放系数(kg/km)
- βₖ:k类车辆的载重碳排放系数(kg/吨)
- Eₘₐₓ:最大允许碳排放量(kg)
决策变量扩展
- ωⱼ:0-1变量,是否建设中转站j
- x¹ᵢⱼₖₜ:0-1变量,k类车辆t从收集点i到中转站j
- x²ⱼ₀ₖₜ:0-1变量,k类车辆t从中转站j到处理厂
- qᵢⱼₖ:连续变量,从收集点i运到中转站j的k类垃圾量
- rⱼₖ:连续变量,中转站j储存的k类垃圾总量
- tᵢⱼₖₜ:连续变量,k类车辆t从收集点i到中转站j的到达时间
综合数学模型
目标函数:
min Z = ∑ₖ ∑ₜ ∑ᵢ ∑ⱼ Cₖ·dᵢⱼ·x¹ᵢⱼₖₜ + ∑ₖ ∑ₜ ∑ⱼ Cₖ·dⱼ₀·x²ⱼ₀ₖₜ + ∑ⱼ₌ₙ₊₁ⁿ⁺ᵐ (Tⱼ/10)·ωⱼ
约束条件:
- 垃圾流量平衡约束:
∑ⱼ₌ₙ₊₁ⁿ⁺ᵐ qᵢⱼₖ = wᵢ,ₖ, ∀i ∈ {1,2,...,n}, ∀k ∈ {1,2,3,4}
- 中转站容量约束:
rⱼₖ = ∑ᵢ₌₁ⁿ qᵢⱼₖ ≤ Sⱼₖ·ωⱼ, ∀j ∈ {n+1,...,n+m}, ∀k ∈ {1,2,3,4}
- 中转站选址约束:
qᵢⱼₖ ≤ wᵢ,ₖ·ωⱼ, ∀i,j,k
- 第一阶段车辆载重约束:
∑ᵢ₌₁ⁿ qᵢⱼₖ·yᵢⱼₖₜ ≤ Qₖ·z¹ⱼₖₜ, ∀j,k,t
- 第二阶段车辆载重约束:
rⱼₖ·z²ⱼₖₜ ≤ Qₖ·z²ⱼₖₜ, ∀j,k,t
- 时间窗口约束:
aⱼ ≤ tᵢⱼₖₜ ≤ bⱼ, ∀到达中转站j的车辆
aⱼ ≤ departure_time_jkt ≤ bⱼ, ∀从中转站j出发的车辆
- 碳排放约束:
∑ₖ ∑ₜ ∑ᵢ ∑ⱼ (αₖ·dᵢⱼ + βₖ·qᵢⱼₖ)·x¹ᵢⱼₖₜ + ∑ₖ ∑ₜ ∑ⱼ (αₖ·dⱼ₀ + βₖ·rⱼₖ)·x²ⱼ₀ₖₜ ≤ Eₘₐₓ
2) 两阶段求解算法设计
算法总体框架
目标:设计两阶段求解算法
- 第一阶段:确定中转站选址与各收集点对应的中转站分配
- 第二阶段:针对每个中转站,优化各类型车辆的运输路径
第一阶段:中转站选址与分配
Step 1:候选方案筛选
输入:m=5个候选中转站(附件4)
评估指标:
- 地理位置优势:∑ᵢ min_j(dᵢⱼ)
- 容量匹配度:∑ₖ min(Sⱼₖ, ∑ᵢ wᵢ,ₖ/距离权重)
- 成本效益比:Tⱼ / 服务能力
筛选准则:保留评估值前3-4个候选站
Step 2:选址优化模型
简化的设施选址模型:
min ∑ⱼ (Tⱼ/10)·ωⱼ + ∑ᵢ ∑ⱼ ∑ₖ transport_cost_ijk·qᵢⱼₖ
∑ⱼ qᵢⱼₖ = wᵢ,ₖ, ∀i,k
∑ᵢ qᵢⱼₖ ≤ Sⱼₖ·ωⱼ, ∀j,k
qᵢⱼₖ ≥ 0, ωⱼ ∈ {0,1}
求解方法:枚举法或拉格朗日松弛
Step 3:分配细化
for 每个选中的中转站j:
for 每类垃圾k:
使用贪心算法分配收集点:
1. 按距离从近到远排序收集点
2. 依次分配直到容量约束
3. 检查时间窗口可行性
第二阶段:路径优化
Step 1:子网络构建
for 每个选中的中转站j:
构建服务网络 Gⱼ = (Vⱼ, Eⱼ)
Vⱼ = {0} ∪ {分配给j的收集点} ∪ {j}
Eⱼ = {(i,j'), ∀i,j' ∈ Vⱼ}
Step 2:两层路径优化
第一层:收集点 → 中转站
for 每类垃圾k:
min ∑ᵢ∈Sⱼₖ ∑ₜ path_cost_ikt
s.t. 载重约束、时间窗口约束
第二层:中转站 → 处理厂
for 每类垃圾k:
min transport_cost(rⱼₖ, dⱼ₀)
决定运输频次和载重
Step 3:协调优化
同步优化两层路径:
1. 固定第一层,优化第二层
2. 固定第二层,优化第一层
3. 迭代直到收敛
两阶段关联与协同机制
1. 选址对路径的影响
影响机制:
- 中转站位置决定收集点分配
- 分配结果影响各子网络的路径长度
- 容量限制影响车辆配置需求
协调方法:
在第一阶段的成本估算中,考虑第二阶段的路径成本:
estimated_path_cost = α × 最近邻启发解 + β × 容量惩罚
2. 容量限制的反馈机制
容量不足处理:
if ∑ᵢ qᵢⱼₖ > Sⱼₖ:
方案1:增加该类型车辆运输频次
方案2:重新分配部分收集点到其他中转站
方案3:考虑建设额外中转站
实现方法:
使用拉格朗日乘子λⱼₖ表示容量紧张程度
在第一阶段目标函数中加入:∑ⱼₖ λⱼₖ × capacity_violation_jk
3. 时间窗口协调
协调策略:
- 第一阶段:预估各中转站的车辆到达时间分布
- 第二阶段:在时间窗口内安排车辆调度
- 冲突处理:若时间窗口不可行,调整第一阶段分配
具体实现:
建立到达时间预测模型:
arrival_time_j ≈ travel_time(collection_route) + service_time
检查:aⱼ ≤ arrival_time_j ≤ bⱼ
3) 非对称路网处理与复杂度分析
非对称距离矩阵修改
根据附件5的非对称路网信息:
1. 单行道影响
原对称距离:d₄,₃₁ = d₃₁,₄ = 15km
修改后:d₄,₃₁ = 18km, d₃₁,₄ = 15km(收集点4到中转站31需绕行)
原对称距离:d₂₇,₂₈ = d₂₈,₂₇ = 14km
修改后:d₂₇,₂₈ = 14km, d₂₈,₂₇ = 18km(27到28需绕行)
2. 时间段禁行影响
收集点23到处理厂:
- 9:00-12:00禁行:d₂₃,₀ = 45km, d₀,₂₃ = 40km
- 其他时间:使用直行距离
收集点9到收集点16:
- 9:00-11:00禁行:d₉,₁₆ = 8km, d₁₆,₉ = 10km
- 其他时间:使用直行距离
模型修改方案
1. 距离矩阵处理
构建时间相关距离矩阵:
D(t) = [dᵢⱼ(t)],其中t表示时间
dᵢⱼ(t) = {
direct_distance_ij, 若t不在禁行时段
detour_distance_ij, 若t在禁行时段
asymmetric_distance_ij, 若存在单行道
}
2. 约束条件修改
时间依赖的距离约束:
travel_time_ij = dᵢⱼ(departure_time_i) / v
路径可行性约束:
if departure_time_i ∈ 禁行时段(i,j):
xᵢⱼₖₜ = 0 (禁止该路径)
3. 子回路消除约束修改
非对称MTZ约束:
uᵢₖₜ - uⱼₖₜ + Qₖ·xᵢⱼₖₜ + (Qₖ-wᵢ,ₖ-wⱼ,ₖ)·xⱼᵢₖₜ ≤ Qₖ - wⱼ,ₖ
处理双向不对称的情况
复杂度对比分析,时间空间等等复杂度对比
算法选择:
- 小规模(n≤20):分支定界 + 动态规划
- 中规模(20<n≤50):变邻域搜索 + 禁忌搜索
- 大规模(n>50):遗传算法 + 模拟退火