2026 第十六届 MathorCup 高校数学建模挑战赛A题解题(含代码)

2026 第十六届 MathorCup 高校数学建模挑战赛

基于 QUBO 与相干伊辛机的智慧物流车辆路径优化研究

参赛组别:本科组论文题目:基于量子优化的带时间窗与容量约束车辆路径规划研究

目 录

  1. 摘要 ....................................................................................................
  2. 1二、问题重述 ............................................................................................
  3. 2三、问题分析 ............................................................................................
  4. 2四、模型假设 ............................................................................................
  5. 3五、符号说明 ............................................................................................
  6. 3六、模型建立 ............................................................................................
  7. 单车辆无约束 TSP-QUBO 模型 .....................................................
  8. 带时间窗惩罚的 TSP-QUBO 模型 .................................................
  9. 大规模客户分块 QUBO 优化模型 .................................................
  10. 多车辆带容量约束 VRPTW-QUBO 模型 .........................................

求解算法设计 ........................................................................

Kaiwu SDK 与相干伊辛机求解流程 ..............................................

量子 - 经典混合求解策略 .............................................................

  1. 模型求解与结果分析 ........................................................................
  2. 1 问题 1:单车辆无约束路径优化结果 ..........................................
  3. 问题 2:带时间窗惩罚路径优化结果 ..........................................

问题 3:50 客户大规模路径优化结果 ..........................................

问题 4:多车辆带容量约束调度结果 ..........................................

  1. 9九、灵敏度分析 ........................................................................................
  2. 9十、模型评价与推广 ..............................................................................
  3. 10十一、结论 ..............................................................................................
  4. 11十二、参考文献 ......................................................................................
  5. 11十三、附录(核心代码) ........................................................................

一、摘要

针对现代智慧物流中多约束、大规模车辆路径优化难题,本文构建基于 ** 二次无约束二值优化(QUBO)** 的统一建模框架,依托 Kaiwu SDK 开发环境与 550 量子比特相干伊辛机(CIM)实现高效求解。分别针对单车辆无约束旅行商问题、带时间窗惩罚路径问题、50 客户大规模调度问题以及多车辆带容量约束车辆路径问题(VRPTW)建立分层 QUBO 模型,通过惩罚函数将访问唯一性、时间窗、载重限制等约束嵌入能量函数,实现组合优化问题向伊辛哈密顿量的标准转化。

针对 50 客户场景变量规模超限问题,提出分块量子优化 + 经典拼接的混合求解策略,突破硬件量子比特数量限制。数值实验表明,相干伊辛机在解的精度与收敛速度上优于传统模拟退火、遗传算法等启发式算法;灵敏度分析显示,车辆配置数量在 6~10 辆时系统综合成本最优,调度效率与经济性达到最佳平衡。本文所建模型结构统一、可扩展性强,可为城市即时配送、末端物流调度等实际工程场景提供决策依据。

关键词:车辆路径问题;时间窗;容量约束;QUBO 模型;相干伊辛机;量子组合优化

二、问题重述

某物流配送中心需对多个需求点完成统一配送服务,已知配送中心位置、客户需求、服务时间、时间窗要求以及节点间运输时间矩阵。在量子优化平台限制下,完成以下任务:

  1. 对 15 个客户设计单车辆配送路径,使总运输时间最短;
  2. 引入时间窗约束,对早到与迟到行为施加二次惩罚,优化总代价;
  3. 扩展至 50 个客户的大规模场景,在量子硬件比特限制下完成可行路径规划;
  4. 考虑多车辆调度与额定载重约束,实现车辆分配与路径联合优化。

所有问题需转化为 QUBO 形式,使用 Kaiwu SDK 与相干伊辛机求解并进行结果分析。

三、问题分析

  • 问题 1 属于经典 TSP,核心是最小化环路总时长,约束仅为访问唯一性。
  • 问题 2 为带时间窗 TSP,目标函数包含运输成本与时间窗违反惩罚。
  • 问题 3 为大规模 TSP,50 客户直接建模变量数约 2500,远超 550 比特硬件上限,必须进行降维与分块。
  • 问题 4 为多车型 VRPTW,需同时优化路径序列、车辆分配、载重均衡,属于 NP-hard 组合优化问题。

整体难点在于:

  1. 多类型约束向 QUBO 惩罚项的精确转化;
  2. 高维变量下量子硬件资源受限问题;
  3. 目标与约束权重平衡,保证解的可行性与最优性。

四、模型假设

  1. 车辆行驶状态稳定,运输时间矩阵真实反映路段耗时;
  2. 车辆从配送中心出发,最终返回配送中心,不考虑中途加油、故障等异常;
  3. 时间窗早到与迟到惩罚为严格二次函数,惩罚系数固定;
  4. 每个客户必须被服务且仅被服务一次;
  5. 惩罚系数足够大,确保约束在优化中被严格满足;
  6. 不考虑多配送中心、车型差异与动态交通扰动。

五、符号说明

表格

符号 物理含义
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 约束条件

  1. 每个客户仅访问一次∑t=1N xi,t =1,∀i
  2. 每一步仅访问一个客户∑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 比特限制。本文采用分块量子 - 经典混合策略

  1. 将 50 个客户划分为 5 个子集,每块 10 个客户;
  2. 对每个子集使用 CIM 求解子回路最优路径;
  3. 使用经典贪心算法完成子路径拼接;
  4. 再以量子局部优化修正整体回路。

该方法在保证可行前提下,将比特需求降至单块规模,实现大规模问题求解。

6.4 多车辆带容量约束 VRPTW-QUBO 模型

引入车辆分配变量 yk,i ,新增约束:

  1. 客户唯一分配∑k=1K yk,i =1,∀i
  2. 载重约束∑i=1N qi yk,i ≤Q,∀k

总能量函数整合路径成本、时间惩罚、分配约束与载重惩罚:E=Epath +Etime +Passign +Pload

七、求解算法设计

7.1 求解流程

  1. 读取 Excel 数据:时间矩阵、时间窗、需求、服务时间;
  2. 构建 QUBO 模型,定义 0-1 变量;
  3. 加入路径成本、时间惩罚、约束惩罚项;
  4. 使用模拟退火验证模型正确性;
  5. 调用 550 比特相干伊辛机求解;
  6. 解析最优二进制样本,还原配送路径;
  7. 结果可视化与灵敏度分析。

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

结论:

  1. 车辆数增加,总成本显著下降;
  2. 超过 10 辆后成本下降趋势明显放缓;
  3. 综合成本与调度效率,最优车辆数为 6~10 辆

十、模型评价与推广

优点

  1. 统一 QUBO 框架,可兼容 TSP、TSPTW、VRPTW 等多类问题;
  2. 相干伊辛机求解精度高、收敛快,优于传统启发式算法;
  3. 分块策略可扩展至上百客户,具备工程实用价值;
  4. 模型可直接嵌入 Kaiwu SDK,便于实际调度系统调用。

不足

  1. 大规模问题仍依赖经典算法辅助;
  2. 惩罚系数需人工调试;
  3. 未考虑实时路况、动态订单插入等复杂场景。

推广与改进

  1. 引入动态时间矩阵,实现实时配送调度;
  2. 设计自适应惩罚系数,自动平衡约束强度;
  3. 结合强化学习预生成初始解,提升量子优化效率;
  4. 扩展至多配送中心、多车型、带取送货的复杂场景。

十一、结论

本文针对智慧物流车辆路径优化问题,构建了基于 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()

相关推荐
码农的神经元13 小时前
2026 年第十六届MathorCup 数学应用挑战赛:E 题罕见病药品医保谈判定价模型及用药成本优化研究
数学建模
一只小小的土拨鼠13 小时前
2026年MathorCup数学建模挑战赛ABCDE(妈妈杯数学建模)参赛思路与解题策略全解析(详细解题思路和论文+完整项目代码+全套资源)
数学建模·妈妈杯
热心网友俣先生13 小时前
2026年妈杯MathorCup赛题浅析-五大题目全攻略-助攻快速选题
数学建模
小文数模14 小时前
2026 年MathorCup(妈妈杯)数学建模竞赛C完整参考论文(第一版)
c语言·数学建模·matlab
码农的神经元15 小时前
2026 MathorCup 选题建议:A/B/C/D/E 题到底怎么选?
c语言·开发语言·数学建模
mahtengdbb12 天前
CGFM上下文引导特征融合改进YOLOv26多尺度检测精度
yolo·数学建模
DS数模2 天前
2026年Mathorcup数学建模竞赛A题思路解析+代码+论文
开发语言·数学建模·matlab·mathorcup·妈妈杯·2026妈妈杯
551只玄猫4 天前
【模块1 建立认知1】为什么金融数据不能用“普通机器学习”?
人工智能·机器学习·数学建模·金融·数据科学·金融建模
Allen_LVyingbo4 天前
《狄拉克符号法50讲》习题与解析(上)
开发语言·人工智能·python·数学建模·量子计算