当前位置: 首页 > news >正文

配送算法19 Two Fast Heuristics for Online Order Dispatching

Two Fast Heuristics for Online Order Dispatching论文学习

本文贡献

• 研究带现实约束的在线订单调度问题
• 提出两种快速启发式:
– MGI(Modified Greedy Insertion)
– MRI(Modified Regret Insertion)
• 实验结果
– 与原始 GI/RI 相比,MGI/MRI 解质持续提升,且均逼近 RI 水平
– 运行时间:MGI 快于 GI,MRI 快于 RI,验证了启发式的高效性
在这里插入图片描述

问题定义

决策节拍:每 1 min 批处理一次,输入为 n 个新订单 W 与 m 名司机 R。
网络:
• 新订单节点 V = V⁺ ∪ V⁻,其中 V⁺ = {i⁺|i∈W},V⁻ = {i⁻|i∈W}。
• 司机已接但尚未完成的订单节点集 U = U⁺ ∪ U⁻,其顺序不可重排。
约束:
(C1) 时间窗:TPᵢ 最早取餐;ETAᵢ 承诺送达;OTᵢ = max(0, Dᵢ⁻ − ETAᵢ)。
(C2) 同方向:新单递送向量与司机当前路线 Φ 中各递送向量夹角 < θ (近单豁免)。
(C3) 先送后接:新单取餐节点插入位置之前,司机必须已送完已取餐节点。
(C4) 容量:单司机实时载货 ≤ Q。
目标:最大化专属司机接单占比 ODR = DN / TN。

在这里插入图片描述

在这里插入图片描述

算法框架

在这里插入图片描述
在这里插入图片描述

关键创新点

批次并行插入:传统 GI/RI 每轮仅插一单,本文每轮插 “一批” 多单 → 减少迭代次数与 O(nmr) 重算成本。
两级排序信号:
• 可行度稀缺性(可行司机数)保证“易死单”优先;
• 在可行度相同层内,MGI 用最短增量成本,MRI 用指数衰减后悔值 → 平衡近视与前瞻。
γ-衰减后悔:通过 γ∈(0,1) 控制 2nd–k-th 司机差值权重,避免高阶差值噪音。

实验设置

• 硬件:MacBook Pro 2.2 GHz / 16 GB RAM / Java SE 8。
• 实例:20 个真实业务样本,按新单量划分为
– 中小规模(21–30 单)10 例;
– 大规模(31–40 单)10 例。
• 对比算法:MGI、MRI、经典 GI、经典 RI;MRI 衰减系数 γ = 0.5。
• 评价指标:
(1) 订单专属司机占比 ODR;
(2) 平均 CPU 时间(ms)。

实验数据

全量均值

在这里插入图片描述
→ 说明“批次并行 + 稀缺度排序”策略在保持解质量的同时削减迭代次数。

分规模观察

• 中小规模
在这里插入图片描述

• 大规模
MRI 的 ODR 略低于 RI(差距 < 1 %),但时间优势进一步放大;
MGI 仍维持 ODR 与时间双领先。
在这里插入图片描述
→ 证实 MGI 的“可行司机数”排序对高密度场景更稳健;MRI 的 γ-衰减后悔在大规模时开始权衡精度与速度。

实例级分布

• ODR(图 5):MGI 在 19/20 例 ≥ GI;提升幅度 1–6 pp。
• 时间(图 6):MGI 在 18/20 例 < GI;最大提速 25 %。
• ODR(图 7):MRI vs RI 互有胜负,差异窗口 ±2 pp,呈随机波动。
• 时间(图 8):MRI 全域领先,且随着实例规模增大,领先幅度由 10 % 提升到 30 %。

在这里插入图片描述
在这里插入图片描述

讨论

1、为什么不用进化算法
• 毫秒级实时要求 vs 进化算法耗时高
• 研究问题高度动态、约束极严——可行域极小,进化算子很难直接产生可行解

2、未来可补充思路
• 先用本文提出的启发式快速获得初始解
• 在离线或延迟不敏感场景下,用进化算法对初始解进行二次优化,可进一步提升质量

展望

• 更深度地刻画在线调度的“动态性”
• 借助机器学习对未来短期需求做预测,并将预测信息融入决策,以期从“时段整体”视角获得更优表现

http://www.xdnf.cn/news/1418005.html

相关文章:

  • Objective-C 的坚毅与传承:在Swift时代下的不可替代性优雅草卓伊凡
  • Java面试宝典:Redis高并发高可用(主从复制、哨兵)
  • 【算法基础】链表
  • PowerPoint和WPS演示如何在放映PPT时用鼠标划重点
  • 趣味学RUST基础篇(String)
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十二)控件的可见、可用性
  • 如何从 STiROT 启动 STiROT_Appli_TrustZone LAT1556
  • JS闭包讲解
  • Elasticsearch面试精讲 Day 4:集群发现与节点角色
  • 《JAVA EE企业级应用开发》第一课笔记
  • 记录第一次使用docker打包镜像的操作步骤以及问题解决
  • 初识JVM
  • Personality Test 2025
  • 正则表达式与grep文本过滤详解
  • 【C++游记】AVL树
  • 刷题日记0901
  • (3dnr)多帧视频图像去噪 (二)
  • MySQL内置的各种单行函数
  • 强化学习实战:从零搭建自主移动机器人避障仿真(1)— 导论篇
  • 【LeetCode热题100道笔记+动画】乘积最大子数组
  • AI+PLM如何重构特种/高端复杂装备行业的工艺管理?
  • 再见 K8s!3款开源的云原生部署工具
  • 开源模型应用落地-模型上下文协议(MCP)-为AI智能体打造的“万能转接头”-“mcp-use”(十二)
  • [开源项目] Tiny-RAG :一套功能完善、高度可配的本地知识库问答解决方案
  • 深度学习篇---ShuffleNet网络结构
  • 广电手机卡到底好不好?
  • 科学研究系统性思维的方法体系:数据收集
  • 【Audio】切换至静音或振动模式时媒体音自动置 0
  • docker安装redis,进入命令窗口基操练习命令
  • 优化括号匹配检查:从Stack到计数器的性能提升