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)
This commit is contained in:
775
work_plan.md
Normal file
775
work_plan.md
Normal file
@@ -0,0 +1,775 @@
|
||||
可以,而且**非常建议你这样做**。在作者暂时没有提供原始数据集的情况下,你完全可以做 **“基于自定义合成数据集的方法复现”**,并比较不同算法模块的效果。
|
||||
|
||||
但要注意表述:这不是“完全复现原文数值结果”,而是 **methodological reproduction / algorithmic reproduction**,也就是复现论文的核心算法流程和实验对比逻辑。原文实验本身也是一个受控的合成城市配送场景,作者使用了 47 个客户、4 辆车、上海中心城区启发的路网和合成订单需求,并明确说这是 proof-of-concept validation,而不是直接代表真实运营部署。
|
||||
|
||||
下面给你一份可以直接作为项目开发依据的 **复现方案文档初稿**。
|
||||
|
||||
---
|
||||
|
||||
# T-ALNS-RRD 论文复现方案文档
|
||||
|
||||
## 1. 复现目标
|
||||
|
||||
本项目目标是在无法获得原文完整数据集的情况下,构建一个与论文设定相近的自定义合成城市末端配送数据集,并复现论文提出的核心算法框架:
|
||||
|
||||
[
|
||||
Static\text{-}VRPTW
|
||||
\rightarrow
|
||||
TA\text{-}VRPTW\text{-}Greedy
|
||||
\rightarrow
|
||||
ALNS
|
||||
\rightarrow
|
||||
T\text{-}ALNS
|
||||
\rightarrow
|
||||
T\text{-}ALNS\text{-}RRD
|
||||
]
|
||||
|
||||
重点不是追求和论文完全一致的数值,而是验证以下趋势:
|
||||
|
||||
1. 加入交通感知成本后,路径选择能减少拥堵暴露;
|
||||
2. ALNS 相比贪婪算法能进一步降低总成本;
|
||||
3. Tabu memory 能减少重复搜索,提高解的稳定性;
|
||||
4. RRD 实时调度能在突发事件下减少延误和服务失败;
|
||||
5. 各模块叠加后,整体表现应优于静态路径规划。
|
||||
|
||||
论文的核心方法本身就是将动态拥堵惩罚 ALNS、多层 Tabu memory 和 rollout 实时调度集成到统一框架中。
|
||||
|
||||
---
|
||||
|
||||
## 2. 复现类型说明
|
||||
|
||||
本复现属于:
|
||||
|
||||
**基于合成数据的算法机制复现**。
|
||||
|
||||
不是:
|
||||
|
||||
**基于原始作者数据的严格结果复现**。
|
||||
|
||||
建议你在汇报或报告中这样写:
|
||||
|
||||
> 由于原文数据集需向作者合理请求,且目前尚未获得完整数据与代码,本项目采用与论文实验规模和数据结构相近的自定义合成数据集,复现其核心算法流程和对比实验框架。复现重点在于验证不同算法模块对总成本、准时率、拥堵暴露和实时扰动响应能力的相对影响,而非逐项复刻原文数值结果。
|
||||
|
||||
这句话很重要,可以避免老师质疑“为什么你的结果和论文百分比不完全一样”。
|
||||
|
||||
---
|
||||
|
||||
## 3. 自定义数据集设计
|
||||
|
||||
### 3.1 基本规模
|
||||
|
||||
参考原文实验设置,建议设置:
|
||||
|
||||
| 项目 | 复现设置 |
|
||||
| ----- | ------------------- |
|
||||
| 客户数 | 47 |
|
||||
| 仓库数 | 1 |
|
||||
| 车辆数 | 4 |
|
||||
| 车辆容量 | 120 kg |
|
||||
| 服务时间 | 每个客户 4 min |
|
||||
| 时间窗 | 上午、下午、傍晚三类 |
|
||||
| 运营时间 | 6:00–18:00 |
|
||||
| 时间段数量 | 12 个,每段 1 小时 |
|
||||
| 区域范围 | 8 km × 10 km 合成城市区域 |
|
||||
|
||||
原文实验也是 47 个客户、4 辆车,客户需求为 3–12 kg,服务时间为 4 分钟,时间窗分为 morning、afternoon、evening 三个时段。
|
||||
|
||||
---
|
||||
|
||||
### 3.2 客户数据生成
|
||||
|
||||
每个客户包含:
|
||||
|
||||
```text
|
||||
customer_id
|
||||
x
|
||||
y
|
||||
demand
|
||||
service_time
|
||||
earliest_time
|
||||
latest_time
|
||||
priority
|
||||
```
|
||||
|
||||
建议生成规则:
|
||||
|
||||
```text
|
||||
x ∈ [0, 8] km
|
||||
y ∈ [0, 10] km
|
||||
demand ∈ [3, 12] kg
|
||||
service_time = 4 min
|
||||
time window:
|
||||
morning: 9:00–12:00
|
||||
afternoon: 13:00–16:00
|
||||
evening: 17:00–20:00
|
||||
```
|
||||
|
||||
为了更像城市订单,不建议完全均匀随机分布。可以生成 3 个客户簇:
|
||||
|
||||
```text
|
||||
住宅区簇
|
||||
商业区簇
|
||||
办公区簇
|
||||
```
|
||||
|
||||
这样路线优化会更有意义。
|
||||
|
||||
---
|
||||
|
||||
### 3.3 路网与弧数据生成
|
||||
|
||||
如果不使用真实 OSM,可以先用完全图简化:
|
||||
|
||||
[
|
||||
A = N \times N, i \neq j
|
||||
]
|
||||
|
||||
每两个节点之间都有一条可行弧。
|
||||
|
||||
每条弧包含:
|
||||
|
||||
```text
|
||||
from_node
|
||||
to_node
|
||||
distance
|
||||
base_travel_time
|
||||
road_type
|
||||
```
|
||||
|
||||
距离用欧氏距离:
|
||||
|
||||
[
|
||||
d_{ij}=\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}
|
||||
]
|
||||
|
||||
基础行驶时间:
|
||||
|
||||
[
|
||||
base_time_{ij}=\frac{distance_{ij}}{speed}
|
||||
]
|
||||
|
||||
可设置三类道路:
|
||||
|
||||
| road_type | speed |
|
||||
| ----------- | ------- |
|
||||
| arterial | 45 km/h |
|
||||
| collector | 30 km/h |
|
||||
| residential | 20 km/h |
|
||||
|
||||
课程复现阶段,完全图已经足够;后续想更高级,可以再用 `networkx` 生成网格路网。
|
||||
|
||||
---
|
||||
|
||||
### 3.4 时间依赖交通矩阵
|
||||
|
||||
论文中交通流数据被离散为多个时间区间,并为每条弧计算时间依赖行驶时间和拥堵权重。 复现中建议生成三个张量:
|
||||
|
||||
```text
|
||||
travel_time[i, j, h]
|
||||
congestion[i, j, h]
|
||||
uncertainty[i, j, h]
|
||||
```
|
||||
|
||||
其中:
|
||||
|
||||
```text
|
||||
i, j: 节点编号
|
||||
h: 时间段编号,0–11
|
||||
```
|
||||
|
||||
交通拥堵可以用时间段乘子表示:
|
||||
|
||||
| 时间段 | 拥堵强度 |
|
||||
| ----------- | ---- |
|
||||
| 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} \times traffic_multiplier_h \times road_noise
|
||||
]
|
||||
|
||||
拥堵权重:
|
||||
|
||||
[
|
||||
\gamma_{ij}^{(h)} \in [0,1]
|
||||
]
|
||||
|
||||
可靠性不确定性:
|
||||
|
||||
[
|
||||
\eta_{ij}^{(h)} = \sigma \cdot t_{ij}^{(h)}
|
||||
]
|
||||
|
||||
风险调整时间:
|
||||
|
||||
[
|
||||
t'*{ij}^{(h)} = t*{ij}^{(h)} + \beta \eta_{ij}^{(h)}
|
||||
]
|
||||
|
||||
---
|
||||
|
||||
## 4. 需要复现的算法
|
||||
|
||||
### 4.1 Baseline 1:Static-VRPTW
|
||||
|
||||
静态车辆路径问题。
|
||||
|
||||
特点:
|
||||
|
||||
```text
|
||||
不考虑时间变化
|
||||
不考虑拥堵惩罚
|
||||
只使用固定 base_travel_time
|
||||
使用 greedy insertion 生成路线
|
||||
```
|
||||
|
||||
目标:
|
||||
|
||||
作为最基础对照组。
|
||||
|
||||
---
|
||||
|
||||
### 4.2 Baseline 2:TA-VRPTW-Greedy
|
||||
|
||||
交通感知贪婪算法。
|
||||
|
||||
特点:
|
||||
|
||||
```text
|
||||
考虑 time-dependent travel time
|
||||
考虑 congestion penalty
|
||||
但不使用 ALNS
|
||||
```
|
||||
|
||||
目标:
|
||||
|
||||
验证“交通感知成本”本身能否带来改进。
|
||||
|
||||
---
|
||||
|
||||
### 4.3 Baseline 3:ALNS-Base
|
||||
|
||||
复现论文的基础 ALNS。
|
||||
|
||||
核心组件:
|
||||
|
||||
```text
|
||||
初始解:greedy insertion
|
||||
destroy operators:
|
||||
random removal
|
||||
worst removal
|
||||
relatedness removal
|
||||
|
||||
repair operators:
|
||||
greedy insertion
|
||||
regret-2 insertion
|
||||
time-window-aware insertion
|
||||
|
||||
acceptance:
|
||||
simulated annealing
|
||||
|
||||
operator selection:
|
||||
adaptive weights
|
||||
```
|
||||
|
||||
论文中 ALNS 通过 destroy-repair 循环生成候选解,并使用自适应算子权重和模拟退火接受准则。
|
||||
|
||||
---
|
||||
|
||||
### 4.4 Baseline 4:T-ALNS
|
||||
|
||||
在 ALNS 上加入 Tabu memory。
|
||||
|
||||
建议先实现三个版本:
|
||||
|
||||
```text
|
||||
T-ALNS-Move:
|
||||
只加入 move-based tabu
|
||||
|
||||
T-ALNS-Solution:
|
||||
加入 solution hash memory
|
||||
|
||||
T-ALNS-Full:
|
||||
加入 move tabu + solution tabu + frequency memory
|
||||
```
|
||||
|
||||
最小实现:
|
||||
|
||||
```text
|
||||
move-based tabu:
|
||||
记录最近被移除客户集合和算子组合
|
||||
|
||||
solution-based tabu:
|
||||
记录最近路线结构 hash
|
||||
|
||||
frequency memory:
|
||||
记录 customer-vehicle 分配频率
|
||||
```
|
||||
|
||||
目标:
|
||||
|
||||
验证 Tabu 是否能进一步降低成本、提高稳定性。
|
||||
|
||||
---
|
||||
|
||||
### 4.5 Proposed:T-ALNS-RRD
|
||||
|
||||
在 T-ALNS 上加入简化版实时调度。
|
||||
|
||||
事件类型:
|
||||
|
||||
| 事件 | 复现方式 |
|
||||
| ------------------ | ------------------------ |
|
||||
| Traffic incident | 某条边 travel_time 临时乘以 2–3 |
|
||||
| Urgent order | 中途新增一个客户 |
|
||||
| Capacity violation | 某客户需求临时增加 |
|
||||
| Time-window risk | 预测某客户即将迟到 |
|
||||
|
||||
候选动作:
|
||||
|
||||
```text
|
||||
Action A: local reroute
|
||||
Action B: customer reassignment
|
||||
Action C: service postponement
|
||||
```
|
||||
|
||||
Rollout 评估:
|
||||
|
||||
```text
|
||||
对每个候选动作,模拟未来 60 min
|
||||
计算 expected cost
|
||||
加入 route stability penalty
|
||||
选择 adjusted cost 最低的动作
|
||||
```
|
||||
|
||||
论文中 RRD 的基本思想就是在突发事件下生成候选响应动作,并通过 bounded-horizon rollout simulation 选择响应方案。
|
||||
|
||||
---
|
||||
|
||||
## 5. 目标函数与指标
|
||||
|
||||
### 5.1 总成本函数
|
||||
|
||||
复现目标函数建议使用:
|
||||
|
||||
[
|
||||
Cost =
|
||||
TravelTime
|
||||
+
|
||||
\lambda_1 LatePenalty
|
||||
+
|
||||
\lambda_2 CongestionPenalty
|
||||
+
|
||||
\lambda_3 StabilityPenalty
|
||||
]
|
||||
|
||||
其中:
|
||||
|
||||
```text
|
||||
TravelTime: 总行驶时间
|
||||
LatePenalty: 所有客户迟到时间之和
|
||||
CongestionPenalty: 路径拥堵暴露之和
|
||||
StabilityPenalty: 实时调度后路线变化程度
|
||||
```
|
||||
|
||||
对于非 RRD 算法,(\lambda_3=0)。
|
||||
|
||||
---
|
||||
|
||||
### 5.2 主要评价指标
|
||||
|
||||
| 指标 | 含义 |
|
||||
| ------------------ | ------------------------- |
|
||||
| Total Cost | 综合运营成本 |
|
||||
| Travel Time Cost | 总行驶时间 |
|
||||
| Delay Penalty | 迟到惩罚 |
|
||||
| Congestion Cost | 拥堵成本 |
|
||||
| OTDR | 准时送达率 |
|
||||
| Average Delay | 平均迟到时间 |
|
||||
| Max Delay | 最大迟到时间 |
|
||||
| Late Customers | 迟到客户数 |
|
||||
| CES | Congestion Exposure Score |
|
||||
| Computation Time | 算法运行时间 |
|
||||
| Iterations to Best | 找到最优解的迭代次数 |
|
||||
| Event Success Rate | RRD 事件响应成功率 |
|
||||
| Response Time | RRD 平均响应时间 |
|
||||
|
||||
原文也使用了 total cost、OTDR、CES、实时重调度响应、计算时间等指标进行评估。
|
||||
|
||||
---
|
||||
|
||||
## 6. 实验设计
|
||||
|
||||
### 实验一:主对比实验
|
||||
|
||||
比较:
|
||||
|
||||
```text
|
||||
Static-VRPTW
|
||||
TA-VRPTW-Greedy
|
||||
ALNS-Base
|
||||
T-ALNS
|
||||
T-ALNS-RRD
|
||||
```
|
||||
|
||||
每个算法运行:
|
||||
|
||||
```text
|
||||
30 个随机种子
|
||||
max_iter = 1000
|
||||
time_limit = 600 s,可根据电脑性能缩短
|
||||
```
|
||||
|
||||
输出表格:
|
||||
|
||||
```text
|
||||
Algorithm | Total Cost | OTDR | CES | Computation Time
|
||||
```
|
||||
|
||||
预期结果趋势:
|
||||
|
||||
```text
|
||||
Static-VRPTW 成本最高、准时率最低
|
||||
TA-VRPTW-Greedy 拥堵暴露下降
|
||||
ALNS-Base 总成本进一步下降
|
||||
T-ALNS 稳定性更好
|
||||
T-ALNS-RRD 在动态扰动下表现最好
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 实验二:消融实验
|
||||
|
||||
目的:证明各模块确实有贡献。
|
||||
|
||||
配置:
|
||||
|
||||
```text
|
||||
ALNS-Base
|
||||
+ Move Tabu
|
||||
+ Solution Tabu
|
||||
+ Frequency Memory
|
||||
Full T-ALNS
|
||||
Full T-ALNS + RRD
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
Total Cost
|
||||
OTDR
|
||||
CES
|
||||
Convergence Time
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 实验三:交通不确定性鲁棒性实验
|
||||
|
||||
设置不同交通扰动强度:
|
||||
|
||||
```text
|
||||
sigma = 0.1
|
||||
sigma = 0.2
|
||||
sigma = 0.3
|
||||
sigma = 0.5
|
||||
```
|
||||
|
||||
每组重复 30 次。
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
Algorithm | Low | Medium | High | Extreme | Degradation Rate
|
||||
```
|
||||
|
||||
预期结果:
|
||||
|
||||
```text
|
||||
T-ALNS-RRD 随 sigma 增大退化最慢
|
||||
Static-VRPTW 退化最快
|
||||
```
|
||||
|
||||
原文也做了 varying traffic uncertainty levels 的鲁棒性测试。
|
||||
|
||||
---
|
||||
|
||||
### 实验四:参数敏感性实验
|
||||
|
||||
参考原文做三个维度:
|
||||
|
||||
| 参数 | 取值 |
|
||||
| ---- | ---------------------- |
|
||||
| 客户数 | 30, 40, 47, 60 |
|
||||
| 车辆数 | 2, 3, 4, 5, 6 |
|
||||
| 车辆容量 | 80, 100, 120, 140, 160 |
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
不同参数下的 Total Cost、OTDR、CES、Computation Time
|
||||
```
|
||||
|
||||
作用:
|
||||
|
||||
说明算法不是只在某个单一设置下有效。
|
||||
|
||||
---
|
||||
|
||||
### 实验五:实时事件响应实验
|
||||
|
||||
模拟事件:
|
||||
|
||||
```text
|
||||
rush hour congestion
|
||||
random accident
|
||||
urgent order
|
||||
road closure
|
||||
combined stress
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
Event Type | Frequency | Success Rate | Cost Reduction | Response Time
|
||||
```
|
||||
|
||||
如果时间有限,可以只做三类:
|
||||
|
||||
```text
|
||||
traffic incident
|
||||
urgent order
|
||||
time-window risk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 项目代码结构建议
|
||||
|
||||
建议让 opencode 按下面结构生成项目:
|
||||
|
||||
```text
|
||||
t_alns_rrd_reproduction/
|
||||
│
|
||||
├── README.md
|
||||
├── requirements.txt
|
||||
├── configs/
|
||||
│ ├── default.yaml
|
||||
│ ├── experiment_main.yaml
|
||||
│ ├── experiment_ablation.yaml
|
||||
│ └── experiment_robustness.yaml
|
||||
│
|
||||
├── data/
|
||||
│ ├── synthetic/
|
||||
│ │ ├── customers.csv
|
||||
│ │ ├── depot.csv
|
||||
│ │ ├── vehicles.csv
|
||||
│ │ ├── arcs.csv
|
||||
│ │ ├── travel_time.npy
|
||||
│ │ ├── congestion.npy
|
||||
│ │ └── uncertainty.npy
|
||||
│
|
||||
├── src/
|
||||
│ ├── data_generator.py
|
||||
│ ├── problem.py
|
||||
│ ├── cost.py
|
||||
│ ├── schedule.py
|
||||
│ ├── baselines/
|
||||
│ │ ├── static_vrptw.py
|
||||
│ │ └── ta_greedy.py
|
||||
│ ├── alns/
|
||||
│ │ ├── operators_destroy.py
|
||||
│ │ ├── operators_repair.py
|
||||
│ │ ├── alns_base.py
|
||||
│ │ └── acceptance.py
|
||||
│ ├── tabu/
|
||||
│ │ ├── move_tabu.py
|
||||
│ │ ├── solution_tabu.py
|
||||
│ │ └── frequency_memory.py
|
||||
│ ├── rrd/
|
||||
│ │ ├── event_generator.py
|
||||
│ │ ├── candidate_actions.py
|
||||
│ │ ├── rollout.py
|
||||
│ │ └── dispatch.py
|
||||
│ ├── experiments/
|
||||
│ │ ├── run_main_comparison.py
|
||||
│ │ ├── run_ablation.py
|
||||
│ │ ├── run_robustness.py
|
||||
│ │ └── run_sensitivity.py
|
||||
│ └── visualization/
|
||||
│ ├── plot_routes.py
|
||||
│ ├── plot_convergence.py
|
||||
│ └── plot_results.py
|
||||
│
|
||||
├── results/
|
||||
│ ├── tables/
|
||||
│ ├── figures/
|
||||
│ └── logs/
|
||||
│
|
||||
└── report/
|
||||
├── reproduction_notes.md
|
||||
└── figures_for_ppt/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 最小可行复现版本
|
||||
|
||||
如果时间比较紧,不要一次性追求完整 T-ALNS-RRD。建议按三阶段推进。
|
||||
|
||||
### 阶段 1:基础可运行
|
||||
|
||||
实现:
|
||||
|
||||
```text
|
||||
data_generator
|
||||
cost function
|
||||
Static-VRPTW
|
||||
TA-VRPTW-Greedy
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
两种算法的 total cost、OTDR、CES
|
||||
```
|
||||
|
||||
### 阶段 2:核心算法复现
|
||||
|
||||
实现:
|
||||
|
||||
```text
|
||||
ALNS-Base
|
||||
T-ALNS
|
||||
convergence plot
|
||||
ablation table
|
||||
```
|
||||
|
||||
这一步是最重要的。
|
||||
|
||||
### 阶段 3:实时调度增强
|
||||
|
||||
实现:
|
||||
|
||||
```text
|
||||
event_generator
|
||||
candidate actions
|
||||
simplified rollout
|
||||
T-ALNS-RRD
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```text
|
||||
事件响应成功率
|
||||
扰动前后成本变化
|
||||
动态路线变化图
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. 建议绘制的图表
|
||||
|
||||
你最终汇报可以准备 6 张图:
|
||||
|
||||
| 图 | 内容 |
|
||||
| -------- | ------------------------------ |
|
||||
| Figure 1 | 合成城市配送场景:仓库、客户、路线 |
|
||||
| Figure 2 | 算法框架图:ALNS → Tabu → RRD |
|
||||
| Figure 3 | 主实验柱状图:Total Cost / OTDR / CES |
|
||||
| Figure 4 | 收敛曲线:ALNS vs T-ALNS |
|
||||
| Figure 5 | 消融实验图:不同模块贡献 |
|
||||
| Figure 6 | RRD 示例图:突发拥堵前后路线变化 |
|
||||
|
||||
其中 Figure 2 和 Figure 6 最适合用在 PPT 中讲清楚论文贡献。
|
||||
|
||||
---
|
||||
|
||||
## 10. 给 opencode 的开发提示词
|
||||
|
||||
你可以直接把下面这段发给 opencode:
|
||||
|
||||
```text
|
||||
请帮我构建一个 Python 项目,用于复现论文 “Optimizing urban last mile delivery efficiency through dynamic vehicle routing heuristics and traffic flow analysis” 中的核心算法思想。由于原文数据集暂未获得,请使用合成数据集进行算法机制复现。
|
||||
|
||||
项目目标:
|
||||
1. 构建 47 个客户、1 个仓库、4 辆车的城市末端配送合成数据集;
|
||||
2. 每个客户包含坐标、需求量、服务时间、时间窗;
|
||||
3. 构建时间依赖交通矩阵,包括 travel_time[i,j,h]、congestion[i,j,h]、uncertainty[i,j,h],其中 h=0,...,11;
|
||||
4. 实现以下算法:
|
||||
- Static-VRPTW greedy baseline
|
||||
- Traffic-aware VRPTW greedy baseline
|
||||
- ALNS-Base
|
||||
- T-ALNS with move tabu, solution tabu, frequency memory
|
||||
- Simplified T-ALNS-RRD with event generation and rollout dispatch
|
||||
5. 实现统一成本函数:
|
||||
total_cost = travel_time + lambda_delay * lateness + lambda_congestion * congestion + lambda_stability * route_change_penalty
|
||||
6. 输出评价指标:
|
||||
total cost, travel time, delay penalty, congestion cost, OTDR, average delay, max delay, late customers, CES, computation time, convergence curve, event response success rate
|
||||
7. 实现实验脚本:
|
||||
- main comparison experiment
|
||||
- ablation experiment
|
||||
- traffic uncertainty robustness experiment
|
||||
- parameter sensitivity experiment
|
||||
8. 生成可视化图:
|
||||
- route map
|
||||
- cost comparison bar chart
|
||||
- OTDR comparison chart
|
||||
- CES comparison chart
|
||||
- convergence curves
|
||||
- RRD event before/after route change plot
|
||||
|
||||
代码要求:
|
||||
- 使用 Python 3.11
|
||||
- 使用 numpy, pandas, matplotlib, networkx, pyyaml
|
||||
- 项目结构清晰,模块化组织
|
||||
- 所有随机过程必须支持 random_seed
|
||||
- 每个算法类都提供 run() 方法
|
||||
- 实验结果保存到 results/tables 和 results/figures
|
||||
- README 中说明如何运行每个实验
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. 成功标准
|
||||
|
||||
你的复现项目不需要得到和论文完全相同的 24.3%、92.8%、54.4% 这些数值,因为数据不同。
|
||||
|
||||
你的成功标准应该是:
|
||||
|
||||
```text
|
||||
1. 能生成可重复的合成数据集;
|
||||
2. 能运行至少 4 个算法版本;
|
||||
3. 能输出统一评价指标;
|
||||
4. 能展示从 Static → TA-Greedy → ALNS → T-ALNS → T-ALNS-RRD 的逐步改进趋势;
|
||||
5. 能在报告中解释每个模块为什么带来性能变化;
|
||||
6. 能说明该复现是基于自定义数据的算法机制复现。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 最推荐的复现策略
|
||||
|
||||
我建议你先不要完整追求 RRD,而是优先完成:
|
||||
|
||||
[
|
||||
Static
|
||||
\rightarrow
|
||||
TA\text{-}Greedy
|
||||
\rightarrow
|
||||
ALNS
|
||||
\rightarrow
|
||||
T\text{-}ALNS
|
||||
]
|
||||
|
||||
这四个版本已经足够支撑课程汇报中的“算法复现”。RRD 可以作为增强实验,用一个简化交通事故案例展示即可。
|
||||
|
||||
最终汇报时,你可以这样定位你的工作:
|
||||
|
||||
> 本项目在原文数据集暂未公开的条件下,构建了与论文实验规模一致的合成城市末端配送场景,并复现了论文的核心算法链条。实验通过逐步引入交通感知成本、ALNS 搜索、Tabu 记忆机制和简化实时调度模块,对比不同算法配置在总成本、准时率和拥堵暴露上的表现,从而验证原文 T-ALNS-RRD 框架的算法设计逻辑。
|
||||
Reference in New Issue
Block a user