Files
Enterprise/reproduction_plan.md
huangfu 8ff9715fb7 Initial commit: T-ALNS-RRD paper reproduction project
- Paper: Optimizing urban last mile delivery efficiency (Liu & Wang, 2025)
- 5 algorithms: Static-VRPTW, TA-Greedy, ALNS-Base, T-ALNS, T-ALNS-RRD
- v1 baseline + v2 calibrated experiments with full results
- Tabu memory ablation study with convergence analysis
- Comprehensive final report (FINAL_REPORT.md)
2026-06-02 21:11:00 +08:00

681 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# T-ALNS-RRD 论文复现完整计划
## 0. 文档概要
**论文标题**: Optimizing urban last mile delivery efficiency through dynamic vehicle routing heuristics and traffic flow analysis
**作者**: Lu Liu, Tianxia Wang (Yibin Vocational and Technical College)
**发表**: 2025, Scientific Reports
**复现类型**: 基于合成数据的算法机制复现 (Methodological Reproduction)
---
## 1. 复现目标体系
### 1.1 核心目标
复现论文提出的 T-ALNS-RRD 框架的核心算法链:
```
Static-VRPTW → TA-VRPTW-Greedy → ALNS-Base → T-ALNS → T-ALNS-RRD
```
### 1.2 验证目标 (5 个量化趋势)
| # | 趋势 | 预期方向 |
|---|------|---------|
| 1 | 交通感知成本降低拥堵暴露 | TA-Greedy CES < Static CES |
| 2 | ALNS 相比贪婪算法进一步降低总成本 | ALNS TotalCost < TA-Greedy |
| 3 | Tabu memory 减少重复搜索,提高解稳定性 | T-ALNS σ < ALNS σ |
| 4 | RRD 实时调度减少突发事件下的延误 | T-ALNS-RRD Delay < T-ALNS Delay |
| 5 | 各模块叠加后整体表现优于静态规划 | T-ALNS-RRD 全指标最优 |
### 1.3 成功标准
1. 生成可重复的合成数据集
2. 运行至少 4 个算法版本 (Static, TA-Greedy, ALNS, T-ALNS)
3. 输出统一评价指标
4. 展示逐模块改进趋势
5. **优先级**: 先完成 Static → TA-Greedy → ALNS → T-ALNS 四个版本
6. RRD 作为增强实验,可用简化交通事故案例展示
---
## 2. 数据集设计 (与论文 Table 2 对齐)
### 2.1 基本规模参数
| 参数 | 值 | 来源 |
|------|-----|------|
| 客户数 n | 47 | 论文 §4.2 |
| 仓库 | 1 (node 0) | 论文 §4.2 |
| 车辆数 m | 4 | 论文 §4.2 |
| 车辆容量 Q | 120 kg | 论文 §4.2 |
| 服务时间 s_i | 4 min/customer | 论文 §4.2 |
| 时间窗口 | 3 类 (morning/afternoon/evening) | 论文 §4.2 |
| 运营时间 | 6:00-18:00 (12 hours) | 论文 §4.3 |
| 时间段 H | 12 (1h each) | 论文 §4.3 |
| 区域范围 | 8 km × 10 km | 论文 §4.1 |
| 路网规模 | 48 nodes, 2256 arcs | 论文 Table 2 |
### 2.2 客户数据生成
每个客户属性:
```
customer_id, x (km), y (km), demand (kg), service_time (min),
earliest_time, latest_time, priority
```
生成规则:
- `x ∈ [0, 8] km`, `y ∈ [0, 10] km`
- `demand ∈ [3, 12] kg` (均匀或带簇偏差)
- `service_time = 4 min`
- 时间窗口分 3 类:
- Morning: 9:00-12:00
- Afternoon: 13:00-16:00
- Evening: 17:00-20:00
**空间分布**: 生成 3 个客户簇 (住宅区/商业区/办公区),增加路径优化意义
### 2.3 路网与弧数据
**初版方案**: 完全图 (complete graph),每对节点一条弧
每条弧属性:
```
from_node, to_node, distance (欧氏), base_travel_time,
road_type (arterial/collector/residential)
```
道路速度:
| Road Type | Speed |
|-----------|-------|
| Arterial | 45 km/h |
| Collector | 30 km/h |
| Residential | 20 km/h |
升级方案 (Phase 2+): 使用 networkx 生成网格路网模拟真实道路
### 2.4 时间依赖交通矩阵 (3 个张量)
为每个 `(i, j, h)` 组合计算,其中 `h ∈ {0, 1, ..., 11}`:
```python
travel_time[i, j, h] # 行驶时间
congestion[i, j, h] # 拥堵权重 γ ∈ [0, 1]
uncertainty[i, j, h] # 可靠性不确定性 η
```
**交通拥堵乘子** (论文 §3.2):
| 时间段 | 时段 | 拥堵乘子 |
|--------|------|---------|
| 6:00-7:00 | 早间 | 1.0 |
| 7:00-9:00 | 早高峰 | 1.6 |
| 9:00-11:00 | 上午 | 1.2 |
| 11:00-13:00 | 午间 | 1.0 |
| 13:00-16:00 | 午后 | 1.2 |
| 16:00-18:00 | 晚高峰 | 1.7 |
行驶时间计算:
```
t_ij^(h) = base_time_ij × traffic_multiplier_h × road_noise
```
拥堵权重 (论文 Eq.9):
```
ρ_ij(T_i) = θ × γ_ij^(h), if T_i ∈ τ_h
```
风险调整时间 (论文 Eq.10):
```
t'_ij^(h) = t_ij^(h) + β × η_ij^(h)
```
**需要满足 FIFO 一致性** (论文 Eq.11):
```
T_i^1 ≤ T_i^2 ⇒ T_i^1 + t_ij(T_i^1) ≤ T_i^2 + t_ij(T_i^2)
```
---
## 3. 问题建模与目标函数
### 3.1 DVRPTW-TA 形式化 (论文 §3.1)
在完全图 G=(N, A) 上建模N = {0, 1, ..., 47}A ⊆ N × N。
### 3.2 复合成本函数 (论文 Eq.1)
```
Cost = Σ_k Σ_(i,j) x_ijk [t_ij(T_i) + λ₂ρ_ij(T_i)] + λ₁ Σ_j δ_j
其中:
δ_j = max{0, S_j - l_j} - 迟到惩罚 (论文 Eq.2)
t_ij(T_i) - 时间依赖行驶时间
ρ_ij(T_i) - 拥堵惩罚
λ₁ - 迟到惩罚权重
λ₂ - 拥堵暴露权重
```
### 3.3 约束条件
1. **每个客户服务一次** (Eq.3): `Σ_k Σ_j x_ijk = 1, ∀i ∈ N\{0}`
2. **车辆容量** (Eq.4): `Σ_i d_i Σ_j x_ijk ≤ Q, ∀k`
3. **时间可行性** (Eq.5): `A_j ≥ T_i + t_ij(T_i), S_j ≥ max{A_j, e_j}`
4. **软时间窗** (Eq.6): `S_j ≤ l_j + ε_j, ε_j ≥ 0`
5. **子回路消除** (Eq.7): MTZ 约束
---
## 4. 算法实现详细设计
### 4.1 Baseline 1: Static-VRPTW
**特点**: 不考虑时间变化、不考虑拥堵惩罚
**方法**: Greedy insertion heuristic
**输入**: 固定 base_travel_time
**输出**: 车辆路径方案
```
Algorithm:
1. 所有车辆从 depot 出发
2. 对每个未分配客户,计算插入各车辆当前路径各位置的最小边际成本
3. 选择边际成本增量最小的 (customer, vehicle, position)
4. 满足容量和时间窗约束则插入
5. 重复直到所有客户分配完毕
```
### 4.2 Baseline 2: TA-VRPTW-Greedy
**特点**: 考虑 time-dependent travel time + congestion penalty但不使用 ALNS
**方法**: 与 Static 相同框架,但使用 t_ij(T_i) 和 ρ_ij(T_i)
**与 Static 的关键差异**: 边际成本计算使用 time-dependent travel time
### 4.3 Baseline 3: ALNS-Base (论文 §3.3.1 + Algorithm 1)
**核心组件**:
```
Destroy Operators (论文 §3.3.1):
- Random Removal: 均匀随机移除 α×n 个客户
- Worst Removal: 移除造成最大延迟/拥堵成本的客户
- Relatedness Removal: 移除地理或时间特征相似的客户
移除数量: |C| = ⌊α × n⌋, α ∈ [0.1, 0.4] (论文 Eq.15)
Repair Operators:
- Greedy Insertion: 最小化边际成本 (论文 Eq.16-17)
- Regret-2 Insertion: 最小化最优和次优插入位置差距
- Time-Window-Aware Insertion: 最小化时间窗违规
Acceptance: Simulated Annealing (论文 Eq.20-21)
P_accept = 1 if f(S') < f(S)
= exp(-(f(S') - f(S)) / τ_t) otherwise
τ_{t+1} = γ × τ_t, γ ∈ (0, 1)
Adaptive Operator Weights (论文 Eq.18-19):
p_h(t) = ω_h(t) / Σ ω_j(t)
ω_h(t+1) = (1-ξ) ω_h(t) + ξ × θ_r
奖励等级:
σ₁: 找到全局最优解
σ₂: 改善当前解
σ₃: 被接受但未改善
σ₄: 被拒绝
终止条件:
max_iter = 1000 (论文 §4.8)
time_limit = 600s
stall: 连续 T_stall 代无改进
```
**插入成本计算** (论文 Eq.16-17):
```
Δf_ijk(T_j) = t_ji(T_j) + s_i + t_ik(T_j + t_ji + s_i) - t_jk(T_j)
+ λ₁ × δ_i(T_i) + λ₂ × ρ_ji(T_j)
ΔF_jik = Δf_jik^local + Σ_(u,v)∈Asuffix [t_uv(T') + λ₁δ_v + λ₂ρ_uv]
- Σ_(u,v)∈Asuffix_old [t_uv + λ₁δ_v + λ₂ρ_uv]
```
### 4.4 Baseline 4: T-ALNS (论文 §3.3.2 + Algorithm 2)
在 ALNS 基础上增加三层 Tabu Memory:
#### Move-Based Tabu (论文 Eq.22-23)
```
存储: (C_removed, h_d, h_r, t_iter) 元组
判定: 如果存在记录 (Ĉ, ĥ_d, ĥ_r, ť) 满足:
|C_removed ∩ Ĉ| ≥ μ × min(|C_removed|, |Ĉ|)
AND t_current - ť ≤ τ_move
则为 Tabu
自适应 tenure (论文 Eq.32):
τ_move(t+1) = min(τ_move+1, τ_max) if no improvement in τ_stall
= max(τ_move-1, τ_min) if improvement found
```
#### Solution-Based Tabu (论文 Eq.23-24)
```
哈希函数: H(S) = Σ_k Σ_i φ(v_ki, v_k(i+1)) mod P
存储: H(S') 作为环形缓冲区 (最大 1000 或 2^⌈log₂(n)⌉)
Tabu: 如果 H(S') ∈ T_sol 且在最近 τ_sol 代内记录
```
#### Frequency Memory (论文 Eq.24-26)
```
客户-车辆分配频率: F^cv_ik(t+1) = F^cv_ik(t) + 1_[i∈R_k(S)]
时间位置频率: F^tp_ij(t+1) = F^tp_ij(t) + Σ_k 1_[v_kj = i]
拥堵加权 (Eq.33):
F^cv_ik(t+1) = F^cv_ik(t) + 1_[i∈R_k] × (1 + Σ_j ρ_ji(T_j))
定期归一化 (Eq.32): F ← ⌊F/κ⌋ 每 ν
```
#### 多样化强度控制 (论文 Eq.26-28)
```
δ(t) = ω₁ × (t - t_last_best)/T_max
+ ω₂ × |T_move|/|T_move|_max
+ ω₃ × σ(F^cv)
if δ(t) > δ_max: 切换到多样化模式
p'_h(t) = η × p_h(t) + (1-η) × div_h(t)/Σ div_j(t)
```
#### 赦免准则 (论文 Eq.29-31)
1. **全局最优赦免**: f(S') < f(S*)
2. **低频赦免**: min F^cv_ik < β × F̄^cv (鼓励未用分配)
3. **交通适应赦免**: 拥堵成本显著降低
### 4.5 Proposed: T-ALNS-RRD (论文 §3.3.3 + Algorithm 3)
#### 事件检测与分类
```
事件类型 (论文 §3.3.3):
E1: 关键交通事故 (道路封闭/事故/严重拥堵)
E2: 紧急订单插入 (高优先级、紧时间窗)
E3: 容量违规 (需求波动超过车辆容量)
E4: 服务时间违规 (累计延迟威胁时间窗)
紧急度评分 (论文 Eq.35):
Ψ(e,t) = α_e × (t_deadline - t_current)/t_horizon
+ β_e × impact(e) + γ_e × cost_increase(e)
```
#### 候选动作空间
```
E1 - 局部改道: K_s=5 条 FIFO 一致的 k-shortest-time 绕行
预算 Δ_max=8 min
E1 - 客户重分配: 3km 范围内、≤10min ETA 差的车辆
每车 top-2 regret 位置
E2 - 紧急插入: top-r 插入位置 (Eq.16)
延迟变体: ≤30min 偏移,惩罚 λ₁δ_j
全部不可行则 subcontract
E3 - 负载重分配: 最小可行子集转移,最多 3 次
E4 - 加速/放宽: 局部 2-opt 重排
不可行则临时容差 ϵ_tolerance
最大动作数 |A_e| ≤ 20
```
#### Rollout 仿真 (论文 Eq.36-39)
```
价值函数 (Eq.36):
V^rollout(s,a,H) = E[ Σ_h Σ_k Σ_(i,j)∈A^h_k
[t_ij + λ₂ρ_ij] + λ₁ Σ_j δ_j(S^h_j) ]
交通演化 (Eq.38):
t^rollout_ij(T_i + s) = t^(r)_ij + s/Δt × (t^(r+1)_ij - t^(r)_ij)
Tabu 调整价值 (Eq.39):
V^adjusted = V^rollout - τ_penalty × 1_[Tabu(a)]
+ τ_bonus × Diversification(a)
复合决策分数 (Eq.40):
Σ(a,e,s) = ω₁ × V^adjusted + ω₂ × Stability(a,s) + ω₃ × Recovery(a,s)
稳定性 (Eq.41):
Stability(a,s) = Σ_k |R^a_k ∩ R^s_k| / |R^a_k R^s_k|
恢复性 (Eq.42):
Recovery(a,s) = -Σ_k Σ_i |OptimalPosition(i) - CurrentPosition(i,a)|
```
#### 自适应资源分配 (论文 Eq.43-44)
```
H_rollout = max(H_min, H_max - α_urgency × Ψ(e,t))
N_sim = max(N_min, ⌊(T_available - T_overhead) / T_sim⌋)
```
---
## 5. 评价指标体系 (论文 §4.4)
### 5.1 主要指标
| 指标 | 定义 | 公式 |
|------|------|------|
| Total Cost | 综合运营成本 | Eq.1 |
| Travel Time Cost | 总行驶时间成本 | Σ t_ij(T_i) |
| Delay Penalty | 迟到惩罚 | λ₁ Σ δ_j |
| Congestion Cost | 拥堵成本 | Σ ρ_ij(T_i) |
| OTDR | 准时送达率 | N_ontime / (n-1) (Eq.45) |
| Average Delay | 平均迟到时间 | Σ δ_j / n_late |
| Max Delay | 最大迟到时间 | max δ_j |
| Late Customers | 迟到客户数 | count(S_j > l_j) |
| CES | 拥堵暴露分数 | Σ ρ_ij(T_i) (Eq.47) |
| Average Route Duration | 平均路线时长 | (1/m) Σ (T_k^end - T_k^start) (Eq.46) |
### 5.2 算法性能指标
| 指标 | 定义 |
|------|------|
| Computation Time | 算法运行时间 |
| Iterations to Best | 找到最优解的迭代次数 |
| Convergence Rate | 收敛速度 (improvements/iteration) |
| Solution Stability (σ) | 解的稳定性 (标准差) |
### 5.3 RRD 专属指标
| 指标 | 定义 |
|------|------|
| Event Response Rate | 事件响应成功率 |
| Avg Response Time | 平均响应时间 (ms) |
| Cost Reduction via RRD | RRD 带来的成本降低 |
| Adaptation Success Rate | 自适应成功率 |
---
## 6. 实验设计 (论文 §5)
### 6.1 实验一: 主对比实验 (对应论文 Table 5-7, Fig 8-10)
**算法**: Static / TA-Greedy / ALNS-Base / T-ALNS / T-ALNS-RRD
**配置**:
- 30 个随机种子 (论文 §5.1: seeds 1-30)
- max_iter = 1000
- time_limit = 600s (可缩短)
- 实验结果求均值 ± 标准差
**输出表格**:
```
Algorithm | TotalCost | TravelTime | DelayPenalty | Congestion | OTDR | CES | CompTime
```
### 6.2 实验二: 消融实验 (对应论文 Table 11, Fig 13)
**配置**:
```
Base ALNS
+ Move Tabu Only
+ Solution Tabu Only
+ Frequency Memory Only
Full T-ALNS
+ Traffic Events Only
+ Urgent Delivery Only
+ All RRD Events (Full T-ALNS-RRD)
```
### 6.3 实验三: 交通不确定性鲁棒性实验 (对应论文 Table 14, Fig 15)
**配置**:
```
σ ∈ {0.1, 0.2, 0.3, 0.5}
每组重复 30 次
```
**输出指标**: 各 σ 下的 TotalCost、OTDR、CES、Robustness Index
### 6.4 实验四: 参数敏感性实验 (对应论文 Table 3)
**维度**:
| 参数 | 取值 |
|------|------|
| 客户数 | 30, 40, 47, 60 |
| 车辆数 | 2, 3, 4, 5, 6 |
| 车辆容量 (kg) | 80, 100, 120, 140, 160 |
### 6.5 实验五: 实时事件响应实验 (对应论文 Table 8, Fig 11)
**事件类型** (最低实现 3 类):
```
1. Traffic incident: 某边 travel_time 临时 × 2-3
2. Urgent order: 中途新增一个客户
3. Time-window risk: 预测某客户即将迟到
```
**输出**: Event Type | Frequency | Success Rate | Cost Reduction | Response Time
### 6.6 收敛性分析 (对应论文 Table 9-10, Fig 12)
记录 epoch-level 的 cost 下降:
```
Epoch 5, 10, 15, ..., 50
绘制 ALNS-Base vs T-ALNS vs T-ALNS-RRD 收敛曲线
```
---
## 7. 可视化要求 (论文 Fig 7-16)
| 图编号 | 内容 | 类型 |
|--------|------|------|
| Fig 1 | 路线图: 仓库、47 客户、4 条路径 | 空间散点 + 连线 |
| Fig 2 | 算法框架图: ALNS → Tabu → RRD | 流程图 |
| Fig 3 | 主实验: Total Cost / OTDR / CES 柱状图 | 分组柱状图 |
| Fig 4 | 收敛曲线: ALNS vs T-ALNS vs T-ALNS-RRD | 折线图 |
| Fig 5 | 消融实验: 各模块贡献瀑布图 | 柱状图 |
| Fig 6 | RRD 示例: 扰动前后路线变化对比 | 双面板空间图 |
---
## 8. 项目代码结构
```
t_alns_rrd_reproduction/
├── README.md
├── requirements.txt # numpy, pandas, matplotlib, networkx, pyyaml, tqdm
├── configs/
│ ├── default.yaml # 全局默认参数
│ ├── experiment_main.yaml # 主对比实验配置
│ ├── experiment_ablation.yaml # 消融实验配置
│ └── experiment_robustness.yaml
├── src/
│ ├── __init__.py
│ ├── data_generator.py # 合成数据集生成
│ ├── problem.py # DVRPTW-TA 问题定义、Solution 数据结构
│ ├── cost.py # 成本函数计算 (Eq.1, Eq.16-17)
│ ├── schedule.py # 调度评估 (时间传播)
│ ├── baselines/
│ │ ├── __init__.py
│ │ ├── static_vrptw.py # Baseline 1: Static-VRPTW greedy
│ │ └── ta_greedy.py # Baseline 2: TA-VRPTW-Greedy
│ ├── alns/
│ │ ├── __init__.py
│ │ ├── operators_destroy.py # Random/Worst/Relatedness Removal
│ │ ├── operators_repair.py # Greedy/Regret-2/Time-Window-Aware Insertion
│ │ ├── acceptance.py # Simulated Annealing
│ │ └── alns_base.py # ALNS-Base (Algorithm 1)
│ ├── tabu/
│ │ ├── __init__.py
│ │ ├── move_tabu.py # Move-based Tabu list (Eq.22-23)
│ │ ├── solution_tabu.py # Solution hash memory (Eq.24)
│ │ ├── frequency_memory.py # Frequency matrices (Eq.25-26)
│ │ └── t_alns.py # T-ALNS (Algorithm 2)
│ ├── rrd/
│ │ ├── __init__.py
│ │ ├── event_generator.py # 事件检测与分类 (Eq.35)
│ │ ├── candidate_actions.py # 候选动作生成
│ │ ├── rollout.py # Rollout 仿真 (Eq.36-39)
│ │ ├── dispatch.py # 调度决策 (Eq.40-42)
│ │ └── t_alns_rrd.py # T-ALNS-RRD (Algorithm 3)
│ ├── experiments/
│ │ ├── run_main_comparison.py
│ │ ├── run_ablation.py
│ │ ├── run_robustness.py
│ │ ├── run_sensitivity.py
│ │ └── run_convergence.py
│ └── visualization/
│ ├── plot_routes.py # 路线地图
│ ├── plot_convergence.py # 收敛曲线
│ ├── plot_results.py # 实验结果柱状图
│ └── plot_rrd.py # RRD 前后对比图
├── data/
│ └── synthetic/ # 生成的合成数据
├── results/
│ ├── tables/
│ ├── figures/
│ └── logs/
└── tests/ # 可选: 关键逻辑单元测试
```
---
## 9. 分阶段实施计划
### 阶段 1: 基础可运行 (预计 2-3 天)
**目标**: 数据生成 + 两个 baseline 可运行
```
实现内容:
1. data_generator.py # 生成客户、路网、交通矩阵
2. problem.py # Solution 数据结构、约束检查
3. cost.py # Eq.1 成本计算
4. schedule.py # 时间传播
5. static_vrptw.py # Static-VRPTW greedy
6. ta_greedy.py # TA-VRPTW-Greedy
验收标准:
- 能生成 47 客户、4 车、12 时段的完整数据集
- Static-VRPTW 和 TA-Greedy 能输出可行路径
- 能计算 Total Cost, OTDR, CES
- 两个算法的 CES 差异体现交通感知效果
```
### 阶段 2: 核心算法复现 (预计 3-4 天)
**目标**: ALNS + T-ALNS 可运行,产消融表、收敛图
```
实现内容:
1. operators_destroy.py # 3 种 destroy 算子
2. operators_repair.py # 3 种 repair 算子 (含 Eq.16-17)
3. acceptance.py # SA 接受准则 (Eq.20-21)
4. alns_base.py # ALNS 主循环 (Algorithm 1)
5. move_tabu.py # 移动 Tabu (Eq.22-23, 32)
6. solution_tabu.py # 解 Tabu (Eq.24)
7. frequency_memory.py # 频率记忆 (Eq.25-26, 33)
8. t_alns.py # T-ALNS (Algorithm 2)
验收标准:
- ALNS-Base 能运行 1000 代并输出最优解
- T-ALNS 相比 ALNS-Base 有改善 (Total Cost ↓, OTDR ↑)
- 不同 Tabu 模块可独立开关进行消融
- 收敛曲线显示 T-ALNS 更快收敛
```
### 阶段 3: 实时调度增强 (预计 2-3 天)
**目标**: T-ALNS-RRD 可运行,产事件响应表
```
实现内容:
1. event_generator.py # 4 种事件检测 (Eq.35)
2. candidate_actions.py # 候选动作枚举 (含验证)
3. rollout.py # Rollout 仿真 (Eq.36-39)
4. dispatch.py # 复合决策 (Eq.40-42)
5. t_alns_rrd.py # T-ALNS-RRD (Algorithm 3)
验收标准:
- 能模拟至少 Traffic Incident 和 Urgent Order
- Rollout 能在 120s 内返回调度决策
- 调度后 OTDR 相比不调度有所提升
- 路线变化可视化 (before/after 对比)
```
### 阶段 4: 实验与可视化 (预计 2 天)
**目标**: 跑完全部实验,产出论文风格图表
```
实现内容:
1. run_main_comparison.py
2. run_ablation.py
3. run_robustness.py
4. run_sensitivity.py
5. 6 张可视化图
验收标准:
- 5 个实验全部可执行
- 产出至少 5 张可放入 PPT 的图表
- 表格数据保存在 results/tables/
- 图保存在 results/figures/
```
---
## 10. 技术栈与依赖
```
Python 3.11
numpy - 矩阵运算、随机数
pandas - 数据管理、表格输出
matplotlib - 可视化
networkx - 路网建模 (Phase 2+ 可选)
pyyaml - 配置文件
tqdm - 进度条
```
---
## 11. 关键参数默认值 (论文参数)
| 参数 | 默认值 | 来源 |
|------|--------|------|
| λ₁ (lateness) | 1.0 | 论文 Eq.1 |
| λ₂ (congestion) | 1.0 | 论文 Eq.1 |
| θ (congestion scale) | 1.0 | 论文 Eq.9 |
| β (risk aversion) | 0.3 | 论文 Eq.10 |
| α (destroy ratio) | [0.1, 0.4] | 论文 Eq.15 |
| τ₀ (initial temp) | 0.05 × Z(S⁰) | Algorithm 1 |
| γ (cooling rate) | 0.99975 | Algorithm 1 |
| ξ (reaction factor) | 0.1 | 论文 Eq.19 |
| τ_move (move tenure) | 7 | 论文 Table 4 |
| τ_sol (solution tenure) | 15 | 论文 Table 4 |
| μ (overlap threshold) | 0.5 | 论文 Eq.23 |
| δ_max (diversification) | 0.7 | 论文 Eq.27 |
| H_rollout | 30-120 min | 论文 Eq.43 |
| N_sim | 2-50 | 论文 Eq.44 |
| ω₁, ω₂, ω₃ (composite) | 0.4, 0.3, 0.3 | 论文 Eq.40 |
---
## 12. 风险与应对
| 风险 | 应对 |
|------|------|
| 完全图计算量过大 (47² = 2209 arcs × 12h × 3 params) | 完全图可行,约 81000 条数据numpy 可处理 |
| ALNS 收敛慢 | 放宽 stall 条件,适当增加 max_iter |
| T-ALNS Tabu 逻辑复杂 | 先实现 Move Tabu Only验证效果再加其他 |
| RRD rollout 耗时 | 降低 H_rollout 到 30min减少 N_sim 到 10 |
| 结果与论文差异大 | 这是合成数据复现,重点是趋势验证而非精确复刻 |
---
## 13. 复现声明模板
最终汇报时使用如下定位:
> 由于原文数据集需向作者合理请求,且目前尚未获得完整数据与代码,本项目采用与论文实验规模和数据结构相近的自定义合成数据集,复现其核心算法流程和对比实验框架。复现重点在于验证不同算法模块对总成本、准时率、拥堵暴露和实时扰动响应能力的相对影响,而非逐项复刻原文数值结果。本项目属于基于合成数据的算法机制复现 (methodological reproduction)。
---
## 14. 预估时间线
| 阶段 | 内容 | 预估时间 |
|------|------|---------|
| 阶段 1 | 数据集 + 2 个 baseline | 2-3 天 |
| 阶段 2 | ALNS + T-ALNS | 3-4 天 |
| 阶段 3 | RRD 实时调度 | 2-3 天 |
| 阶段 4 | 实验跑全 + 可视化 | 2 天 |
| **总计** | | **9-12 天** |