车辆路径(VRP)上下文模型
1. 概述
VRP 上下文定义客户、仓库、车型、路线及其资源语义,供路线生成和路线编译共同使用。它负责数据与路线的有效性,不直接建立受限主问题。
1. 依赖上下文
输入适配层提供经过单位转换的实例;距离、行驶时间和成本由计算策略提供。
2. 概念 / 实体
1. 客户与仓库
仓库提供路线起终点及其适用时间范围,不作为需要覆盖的客户。
2. 车型与路线
路线
3. 变量
1. 决策变量
本上下文不声明求解器决策变量。路线使用量
2. 辅助变量
本上下文不声明辅助求解变量。路线载荷、服务时刻和成本是领域计算结果,不是额外的主问题变量。
4. 谓词
5. 集合
6. 中间值
1. 载荷与覆盖系数
一条路线的载荷是其访问客户需求的总和。覆盖系数是路线数据,而不是主问题中的二元变量。
2. 到达、等待与服务
给定车型
提前到达允许等待,因此不能把服务开始时间窗误写成禁止提前到达。
3. 路线成本
固定成本与弧成本相加得到路线成本;距离不必直接等于行驶时间或成本。
7. 断言
输入与策略应保持单位一致、需求非负以及时间窗有序:
令
8. 约束
1. 路线资源可行性(Route Resource Feasibility)
描述:路线必须满足容量与服务开始时间窗,并从允许的仓库出发、返回允许的仓库。
这些是路线构造与验证规则,不是本上下文向受限主问题额外注册的约束行。跨路线的客户覆盖和车队数量约束属于路线编译上下文。
9. 目标函数(如适用)
本上下文没有独立优化目标。它提供路线成本
10. 算法引用
| 算法 | 引用位置 | 说明 |
|---|---|---|
| 路线校验 | 输入与结果分析 | 检查仓库、访问次数、容量、服务时刻及单位 |
| 路线资源递推 | 第 6 节 | 按访问顺序累计载荷并计算等待与服务 |
| 计算策略 | 第 6 节 | 提供距离、行驶时间与成本 |
Kotlin VRP 上下文源码;Kotlin/Rust 示例入口。
11. 通用语言
| 术语 | 符号 | 定义 |
|---|---|---|
| 客户 | 需要被服务的需求节点 | |
| 车型 | 容量、固定成本和车辆数量的组合 | |
| 路线 | 指定车型的可行访问序列 | |
| 服务开始 | 到达并完成等待后开始服务的时刻 | |
| 覆盖系数 | 路线是否访问客户 |
12. 设计决策
| 决策 | 备选方案 | 原因 |
|---|---|---|
| 将路线作为领域对象 | 在所有上下文中重复定义弧变量 | 统一生成、编译与校验使用的语义 |
| 区分到达与服务开始 | 直接限制到达时刻不得早于时间窗 | 正确表达等待 |
| 分离资源校验与主问题约束 | 将路线资源再次展开为主问题行 | 保持路线列分解的边界 |
13. 变更记录
| 版本 | 变更 | 原因 |
|---|---|---|
| 1.1 | 统一双语结构、时间语义与变量归属 | 避免将领域属性误当作求解器变量 |