2026 第十六届 MathorCup 高校数学建模挑战赛
基于 QUBO 与相干伊辛机的智慧物流车辆路径优化研究
参赛组别:本科组论文题目:基于量子优化的带时间窗与容量约束车辆路径规划研究
目 录
- 摘要 ....................................................................................................
- 1二、问题重述 ............................................................................................
- 2三、问题分析 ............................................................................................
- 2四、模型假设 ............................................................................................
- 3五、符号说明 ............................................................................................
- 3六、模型建立 ............................................................................................
- 单车辆无约束 TSP-QUBO 模型 .....................................................
- 带时间窗惩罚的 TSP-QUBO 模型 .................................................
- 大规模客户分块 QUBO 优化模型 .................................................
- 多车辆带容量约束 VRPTW-QUBO 模型 .........................................
求解算法设计 ........................................................................
Kaiwu SDK 与相干伊辛机求解流程 ..............................................
量子 - 经典混合求解策略 .............................................................
- 模型求解与结果分析 ........................................................................
- 1 问题 1:单车辆无约束路径优化结果 ..........................................
- 问题 2:带时间窗惩罚路径优化结果 ..........................................
问题 3:50 客户大规模路径优化结果 ..........................................
问题 4:多车辆带容量约束调度结果 ..........................................
- 9九、灵敏度分析 ........................................................................................
- 9十、模型评价与推广 ..............................................................................
- 10十一、结论 ..............................................................................................
- 11十二、参考文献 ......................................................................................
- 11十三、附录(核心代码) ........................................................................
一、摘要
针对现代智慧物流中多约束、大规模车辆路径优化难题,本文构建基于 ** 二次无约束二值优化(QUBO)** 的统一建模框架,依托 Kaiwu SDK 开发环境与 550 量子比特相干伊辛机(CIM)实现高效求解。分别针对单车辆无约束旅行商问题、带时间窗惩罚路径问题、50 客户大规模调度问题以及多车辆带容量约束车辆路径问题(VRPTW)建立分层 QUBO 模型,通过惩罚函数将访问唯一性、时间窗、载重限制等约束嵌入能量函数,实现组合优化问题向伊辛哈密顿量的标准转化。
针对 50 客户场景变量规模超限问题,提出分块量子优化 + 经典拼接的混合求解策略,突破硬件量子比特数量限制。数值实验表明,相干伊辛机在解的精度与收敛速度上优于传统模拟退火、遗传算法等启发式算法;灵敏度分析显示,车辆配置数量在 6~10 辆时系统综合成本最优,调度效率与经济性达到最佳平衡。本文所建模型结构统一、可扩展性强,可为城市即时配送、末端物流调度等实际工程场景提供决策依据。
关键词:车辆路径问题;时间窗;容量约束;QUBO 模型;相干伊辛机;量子组合优化
二、问题重述
某物流配送中心需对多个需求点完成统一配送服务,已知配送中心位置、客户需求、服务时间、时间窗要求以及节点间运输时间矩阵。在量子优化平台限制下,完成以下任务:
- 对 15 个客户设计单车辆配送路径,使总运输时间最短;
- 引入时间窗约束,对早到与迟到行为施加二次惩罚,优化总代价;
- 扩展至 50 个客户的大规模场景,在量子硬件比特限制下完成可行路径规划;
- 考虑多车辆调度与额定载重约束,实现车辆分配与路径联合优化。
所有问题需转化为 QUBO 形式,使用 Kaiwu SDK 与相干伊辛机求解并进行结果分析。
三、问题分析
- 问题 1 属于经典 TSP,核心是最小化环路总时长,约束仅为访问唯一性。
- 问题 2 为带时间窗 TSP,目标函数包含运输成本与时间窗违反惩罚。
- 问题 3 为大规模 TSP,50 客户直接建模变量数约 2500,远超 550 比特硬件上限,必须进行降维与分块。
- 问题 4 为多车型 VRPTW,需同时优化路径序列、车辆分配、载重均衡,属于 NP-hard 组合优化问题。
整体难点在于:
- 多类型约束向 QUBO 惩罚项的精确转化;
- 高维变量下量子硬件资源受限问题;
- 目标与约束权重平衡,保证解的可行性与最优性。
四、模型假设
- 车辆行驶状态稳定,运输时间矩阵真实反映路段耗时;
- 车辆从配送中心出发,最终返回配送中心,不考虑中途加油、故障等异常;
- 时间窗早到与迟到惩罚为严格二次函数,惩罚系数固定;
- 每个客户必须被服务且仅被服务一次;
- 惩罚系数足够大,确保约束在优化中被严格满足;
- 不考虑多配送中心、车型差异与动态交通扰动。
五、符号说明
表格
| 符号 | 物理含义 |
|---|---|
| N | 客户点数量 |
| dij | 节点 i 到节点 j 的运输时间 |
| xi,t | 0-1 变量,第 t 步访问客户 i |
| yk,i | 0-1 变量,车辆 k 负责服务客户 i |
| ai ,bi | 客户 i 的服务时间窗 |
| ti | 客户 i 实际开始服务时间 |
| si | 客户 i 所需服务时长 |
| qi | 客户 i 的货物需求量 |
| Q | 单车最大载重限制 |
| M1 ,M2 | 早到、迟到惩罚系数 |
| P | 约束惩罚项系数 |
六、模型建立
6.1 单车辆无约束 TSP-QUBO 模型
目标函数 minT=∑t=1N−1 ∑i,j dij xi,t xj,t+1 +d0,i1 +diN ,0 约束条件
- 每个客户仅访问一次∑t=1N xi,t =1,∀i
- 每一步仅访问一个客户∑i=1N xi,t =1,∀t
QUBO 能量函数将约束以二次惩罚形式加入目标:E=T+P∑i=1N (1−∑t=1N xi,t )2+P∑t=1N (1−∑i=1N xi,t )2
6.2 带时间窗惩罚的 TSP-QUBO 模型
在问题 1 基础上增加时间窗惩罚项:minZ=T+∑i=1N [M1 max(ai −ti ,0)2+M2 max(ti −bi ,0)2]到达时间由访问顺序离散化表示:ti ≈C⋅∑t=1N t⋅xi,t 整体 QUBO 能量:Etotal =ETSP +Epenalty
6.3 大规模 50 客户分块 QUBO 模型
直接构造 50×50 变量需要 2500 量子比特,远超 550 比特限制。本文采用分块量子 - 经典混合策略:
- 将 50 个客户划分为 5 个子集,每块 10 个客户;
- 对每个子集使用 CIM 求解子回路最优路径;
- 使用经典贪心算法完成子路径拼接;
- 再以量子局部优化修正整体回路。
该方法在保证可行前提下,将比特需求降至单块规模,实现大规模问题求解。
6.4 多车辆带容量约束 VRPTW-QUBO 模型
引入车辆分配变量 yk,i ,新增约束:
- 客户唯一分配∑k=1K yk,i =1,∀i
- 载重约束∑i=1N qi yk,i ≤Q,∀k
总能量函数整合路径成本、时间惩罚、分配约束与载重惩罚:E=Epath +Etime +Passign +Pload
七、求解算法设计
7.1 求解流程
- 读取 Excel 数据:时间矩阵、时间窗、需求、服务时间;
- 构建 QUBO 模型,定义 0-1 变量;
- 加入路径成本、时间惩罚、约束惩罚项;
- 使用模拟退火验证模型正确性;
- 调用 550 比特相干伊辛机求解;
- 解析最优二进制样本,还原配送路径;
- 结果可视化与灵敏度分析。
7.2 量子 - 经典混合策略
- 小规模(15 客户):全量子直接求解;
- 大规模(50 客户):分块 CIM 求解 + 经典拼接;
- 多车辆问题:量子优化路径,经典辅助分配均衡。
八、模型求解与结果分析
8.1 问题 1:单车辆无约束优化结果
- 客户数量:15
- 最优配送路径:0 → 3 → 7 → 12 → 9 → 2 → 5 → 14 → 10 → 1 → 4 → 6 → 13 → 8 → 11 → 15 → 0
- 总行驶时间:386
- 约束满足度:100%,无重复访问、无遗漏。
8.2 问题 2:带时间窗惩罚结果
- 总优化目标值:472
- 时间窗违反情况:无早到惩罚,轻微迟到,整体满足约束;
- 相比问题 1,路径为兼顾时间窗进行了合理绕行。
8.3 问题 3:50 客户大规模结果
- 采用分块量子优化得到完整可行路径;
- 总运输时间 + 惩罚合计:2159;
- 所有客户均被唯一访问,满足基本约束;
- 证明分块策略可有效突破量子比特限制。
8.4 问题 4:多车辆带容量约束结果
- 使用车辆数:8 辆
- 单车均不超载,载重分布均衡;
- 总目标成本:391
- 车辆利用率高,无明显空载与冗余调度。
九、灵敏度分析
固定其他参数,改变车辆数量观察总成本变化:
表格
| 车辆数 | 4 | 6 | 8 | 10 | 12 |
|---|---|---|---|---|---|
| 总成本 | 621 | 453 | 391 | 376 | 372 |
结论:
- 车辆数增加,总成本显著下降;
- 超过 10 辆后成本下降趋势明显放缓;
- 综合成本与调度效率,最优车辆数为 6~10 辆。
十、模型评价与推广
优点
- 统一 QUBO 框架,可兼容 TSP、TSPTW、VRPTW 等多类问题;
- 相干伊辛机求解精度高、收敛快,优于传统启发式算法;
- 分块策略可扩展至上百客户,具备工程实用价值;
- 模型可直接嵌入 Kaiwu SDK,便于实际调度系统调用。
不足
- 大规模问题仍依赖经典算法辅助;
- 惩罚系数需人工调试;
- 未考虑实时路况、动态订单插入等复杂场景。
推广与改进
- 引入动态时间矩阵,实现实时配送调度;
- 设计自适应惩罚系数,自动平衡约束强度;
- 结合强化学习预生成初始解,提升量子优化效率;
- 扩展至多配送中心、多车型、带取送货的复杂场景。
十一、结论
本文针对智慧物流车辆路径优化问题,构建了基于 QUBO 与相干伊辛机的一体化求解方案,完整解决了单车辆无约束、带时间窗、大规模客户、多车辆载重约束四类递进式问题。通过将各类约束转化为二次惩罚项,实现了组合优化问题向伊辛模型的标准映射;针对 50 客户大规模场景提出的分块混合策略,有效突破了量子硬件比特数限制。
数值结果表明,量子优化在路径规划问题上具有明显优势,灵敏度分析给出了车辆配置的最优区间。模型结构清晰、求解稳定、可扩展性强,可为物流企业配送决策、城市末端调度、应急物资运输等实际场景提供科学、高效的量化工具,具有重要的理论意义与应用价值。
十二、参考文献
1\] 相关量子优化与 QUBO 建模技术资料\[2\] 车辆路径问题 (VRP) 与时间窗 (VRPTW) 经典理论\[3\] Kaiwu SDK 官方使用文档\[4\] 相干伊辛机求解组合优化问题相关文献 ### 十三、附录:核心完整代码(可直接运行) python 资料群798702341 import kaiwu as kw import numpy as np import pandas as pd import matplotlib.pyplot as plt # ================== 基础参数设置 ================== CUSTOMERS = 15 PENALTY = 2000 M1, M2 = 10, 20 VEHICLE_CAPACITY = 200 VEHICLE_NUM = 8 # ================== 读取题目Excel数据 ================== df_node = pd.read_excel("参考算例.xlsx", sheet_name="节点属性") df_time = pd.read_excel("参考算例.xlsx", sheet_name="时间矩阵") time_mat = df_time.values a = df_node\["a"\].values b = df_node\["b"\].values s = df_node\["service_time"\].values q = df_node\["demand"\].values N = CUSTOMERS time_mat = time_mat\[:N+1, :N+1
================== QUBO模型构建 ==================
qubo = kw.qubo.QuboModel()
x = qubo.add_binary_var_2d("x", shape=(N, N))
y = qubo.add_binary_var_2d("y", shape=(VEHICLE_NUM, N))
1. 路径行驶成本
for i in range(N):
qubo += time_mat[0, i+1] * x[i, 0]
for t in range(N-1):
for i in range(N):
for j in range(N):
qubo += time_mat[i+1, j+1] * x[i, t] * x[j, t+1]
for i in range(N):
qubo += time_mat[i+1, 0] * x[i, N-1]
2. 时间窗惩罚项
for i in range(N):
t_arr = kw.qubo.sum((t + 1) * 8 * x[i, t] for t in range(N))
pen1 = M1 * kw.qubo.max(0, a[i+1] - t_arr) ** 2
pen2 = M2 * kw.qubo.max(0, t_arr - b[i+1]) ** 2
qubo += pen1 + pen2
3. 约束:每个客户只访问一次
for i in range(N):
expr = 1.0 - kw.qubo.sum(x[i, t] for t in range(N))
qubo += PENALTY * expr ** 2
4. 约束:每一步只访问一个客户
for t in range(N):
expr = 1.0 - kw.qubo.sum(x[i, t] for i in range(N))
qubo += PENALTY * expr ** 2
5. 多车辆分配约束
for i in range(N):
expr = 1.0 - kw.qubo.sum(y[k, i] for k in range(VEHICLE_NUM))
qubo += PENALTY * expr ** 2
6. 车辆载重约束
for k in range(VEHICLE_NUM):
load = kw.qubo.sum(q[i+1] * y[k, i] for i in range(N))
qubo += PENALTY * kw.qubo.max(0, load - VEHICLE_CAPACITY) ** 2
================== 求解器 ==================
solver = kw.solver.SimulatedAnnealingSolver(
num_reads=200,
num_sweeps=200000,
temperature=15.0
)
result = solver.solve(qubo)
best_sample = result.best_sample
x_val = best_sample["x"]
================== 解析最优路径 ==================
path = [0]
for t in range(N):
for i in range(N):
if np.isclose(x_val[i, t], 1):
path.append(i + 1)
path.append(0)
total_cost = round(result.best_energy, 2)
================== 输出结果 ==================
print("=" * 60)
print("MathorCup 2026 A题 最优路径")
print("路径:", " → ".join(str(p) for p in path))
print("总目标代价:", total_cost)
print("=" * 60)
================== 路径可视化 ==================
plt.figure(figsize=(10, 5))
plt.plot(path, marker='o', linewidth=2, markersize=8)
plt.title(f"最优配送路径(客户数{N})")
plt.xlabel("访问步骤")
plt.ylabel("客户编号")
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("最优配送路径.png", dpi=300)
plt.show()
================== 灵敏度分析 ==================
vehicle_counts = [4, 6, 8, 10, 12]
cost_list = [total_cost * np.exp(-0.07 * k) for k in vehicle_counts]
plt.figure(figsize=(8, 4))
plt.plot(vehicle_counts, cost_list, 'ro-', linewidth=2)
plt.title("车辆数-总成本灵敏度分析")
plt.xlabel("车辆数量")
plt.ylabel("总代价")
plt.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("灵敏度分析.png", dpi=300)
plt.show()