三十个送货点、四台车、一个上午的时间窗,调度员在地图上拖来拖去两小时,排出来的路线司机还嫌绕。这不是能力问题,是数学问题——30 个点的排列组合有 2.65×10³² 种,人脑根本算不动。这类问题在运筹学里叫 VRP(车辆路径问题),属于 NP-hard,但好消息是:现在有一批免费工具能在几秒内给出足够好的解,而且大多数是开源的。
这篇文章横评 6 款能真正落地的配送路线规划工具,给出免费额度对照、可手算验证的节约里程法算例、三个成本公式,以及 6 个几乎人人都会踩的坑。
一、先搞清楚:配送路线规划难在哪
很多人以为路线规划就是"求最短路"。真到了业务里,最短路只占问题的 20%。真实难点分四层:
| 难点层级 | 具体表现 | 算法上叫什么 | 工具能解决吗 |
|---|---|---|---|
| 第 1 层:路网距离 | 直线距离 3 公里,实际要绕高架走 8 公里 | 最短路径(Dijkstra / A*) | 完全能解决,成熟技术 |
| 第 2 层:访问顺序 | 20 个点先送哪个后送哪个,顺序不同里程差 30% | TSP 旅行商问题 | 能解决,秒级出近优解 |
| 第 3 层:多车分配 | 4 台车怎么分单,既不超载又不让某台车跑空 | CVRP 带容量约束 | 能解决,需要建模 |
| 第 4 层:软硬约束混杂 | 客户只收 9:00-11:00、司机不能连续开 4 小时、货车限行、冷链优先 | VRPTW + 自定义约束 | 能建模但需要人工调权重,无标准答案 |
结论很直接:前三层交给工具,第四层交给你自己的业务判断。指望装个软件就自动解决"司机不愿意跑远单"这种问题,不现实——那是激励机制问题,不是算法问题。
二、6 款免费工具横向对比
1. Google OR-Tools —— 工业级求解器,免费且最强
Google 开源的运筹优化工具包,其中 Routing Library 专门解 VRP 系列问题。支持容量约束、时间窗、多车场、取送一体(pickup & delivery)、司机技能匹配、最大行驶时长等几乎所有常见约束。
- 许可:Apache 2.0,商用免费,无节点数限制
- 语言:Python / C++ / Java / C#
- 安装:
pip install ortools,一行搞定 - 规模:100 个点以内秒级出解;500 个点建议设 30-60 秒搜索上限
- 缺点:不带地图,距离矩阵要自己算或调外部 API;没有界面,得写代码
核心用法就是喂一个距离矩阵 + 约束定义,设置FirstSolutionStrategy.PATH_CHEAPEST_ARC做初始解,再用GUIDED_LOCAL_SEARCH做局部搜索优化。搜索策略选对了,效果差一大截。
2. VROOM —— 开箱即用的 VRP 求解服务
专门为 VRP 而生的开源项目,最大优势是直接对接路由引擎,你给它坐标它自己算路网距离,不用手动构造矩阵。
- 许可:BSD-2-Clause,商用免费
- 形态:HTTP API 服务,Docker 一键起
- 依赖:需搭配 OSRM / Valhalla / ORS 做距离计算
- 特点:输入输出是标准 JSON,含 jobs(配送点)、vehicles(车辆)、shipments(取送对),返回带 ETA 的完整路线
- 缺点:约束表达没有 OR-Tools 灵活,深度定制会卡住
如果你要的是"快速上线一个能用的路线优化 API",VROOM 比 OR-Tools 省至少 3 天工作量。
3. Valhalla —— 路网引擎里的多面手
Mapbox 主导开源的路由引擎,除了常规导航,还内置 /optimized_route 接口,直接做多点顺序优化。真正的杀手锏是动态成本模型:可以按车型(货车/摩托/自行车)设置不同的通行代价,货车还能配置车高、车重、危险品标志,自动避开限高限重路段。
- 许可:MIT,自建无费用
- 数据:吃 OpenStreetMap 数据,需要自己下载切片
- 硬件:全国级路网建议 16GB 内存起步
- 缺点:OSM 在国内部分区县路网精度不如商业地图,尤其是新建道路和园区内部路
4. 高德地图开放平台 —— 国内路网最准的免费选项
个人开发者认证后就有免费额度,关键接口有两个:货车路径规划(能带车型车高车重,自动规避限行)和批量算路(一次算多组起终点,用来构造距离矩阵)。
- 免费额度:个人开发者日均调用量有限,企业认证额度更高,具体以控制台实时配额为准
- 优势:国内路网数据、实时路况、限行规则更新最及时
- 用法:用它算距离矩阵,再喂给 OR-Tools 做优化,这是国内最常见的组合拳
- 缺点:批量算路有 QPS 限制,点位多的时候要做本地缓存和限速队列
5. 百度地图开放平台 —— 路线规划 + 轨迹服务一体
和高德功能重叠度高,差异在于百度的鹰眼轨迹服务(Yingyan)做得比较完整,能把"规划路线"和"实际执行轨迹"对比起来看,这对考核司机是否按线路跑很有价值。
- 免费额度:基础配额免费,超出走商用计费
- 特色:批量算路 + 轨迹回放 + 里程统计闭环
- 缺点:API 参数体系较繁琐,首次接入学习成本略高于高德
6. GraphHopper + jsprit —— Java 系的成熟组合
GraphHopper 是开源路由引擎,jsprit 是同一生态下的 VRP 求解库。适合已有 Java 技术栈的团队,两者数据结构互通,不用做格式转换。
- 许可:Apache 2.0(核心开源版)
- 优势:支持时间窗、多车场、司机班次、回程装载
- 缺点:官方托管服务的路线优化 API 属于付费产品,自建才是免费路径;社区活跃度不如 OR-Tools
三、选型速查表
| 你的情况 | 推荐方案 | 预计上手时间 |
|---|---|---|
| 每天 20-50 个点,只想快点出结果 | 高德批量算路 + OR-Tools | 1-2 天 |
| 要做成内部服务给多个部门调 | VROOM + OSRM,Docker 部署 | 2-3 天 |
| 货车配送,限高限重是硬需求 | 高德货车路径规划 或 Valhalla 自建 | 2-4 天 |
| 约束特别复杂(冷链+技能+多车场) | OR-Tools 深度建模 | 1-2 周 |
| Java 技术栈,要嵌进现有系统 | GraphHopper + jsprit | 1 周 |
| 点位过千、要考核执行率 | OR-Tools 优化 + 百度鹰眼轨迹核对 | 2-3 周 |
四、三个能直接用的计算公式
公式 1:节约里程法(Clarke-Wright),手算就能验证
这是最经典的 VRP 启发式算法,逻辑简单到可以用 Excel 算。核心是计算把两个点合并到同一条线路能省多少里程:
S(i,j) = d(0,i) + d(0,j) - d(i,j)
其中 0 是仓库,d 是两点间距离。S 值越大,说明把 i 和 j 串成一条路越划算。
算例:仓库到 A 点 12 km,到 B 点 15 km,A 到 B 之间 4 km。
S(A,B) = 12 + 15 − 4 = 23 km
解读:原本"仓库→A→仓库"再"仓库→B→仓库"要跑 (12+12)+(15+15)=54 km;合并成"仓库→A→B→仓库"只需 12+4+15=31 km,正好省下 23 km。把所有点对的 S 值从大到小排序,在不超载、不违反时间窗的前提下依次合并,就能得到一个相当不错的初始方案。这个方法适合当基准线——如果你花大价钱买的系统跑出来还不如节约里程法,那就是被坑了。
公式 2:真实路线成本,别只看里程
总成本 = 里程 × 单公里成本 + 时长 × 司机时薪 + 车辆固定出车费 × 车辆数 + Σ迟到分钟数 × 违约单价
算例:方案 A 跑 3 台车共 210 km、8 小时、无迟到;方案 B 跑 2 台车共 245 km、11 小时、迟到 40 分钟。
按单公里 1.2 元、司机时薪 35 元、出车费 80 元/台、迟到 2 元/分钟计算:
- 方案 A = 210×1.2 + 8×35 + 80×3 + 0 = 252 + 280 + 240 = 772 元
- 方案 B = 245×1.2 + 11×35 + 80×2 + 40×2 = 294 + 385 + 160 + 80 = 919 元
"少派一台车更省钱"是最常见的错觉。只盯里程或只盯车辆数,都会做出错误决策——必须把时间成本和违约成本一起进模型。
公式 3:装载率,判断分单是否合理
装载率 = 该车实际装载量 ÷ 车辆额定载重 × 100%
经验区间:75%-90% 为健康。低于 60% 说明车派多了,或者分单算法把重货集中到了同一台车;持续贴近 100% 则毫无弹性,客户临时加单就得重新排线。建议在规划时把额定载重按 90% 折算成"可用载重"喂给求解器,留出缓冲。同理,配送量的历史波动需要靠库存和订单数据支撑,这块可以参考 AI库存管理工具免费推荐 里的补货预测思路。
五、五步落地流程
- 清洗地址数据(最耗时的一步)。地址不规范会直接导致地理编码打错点位,把车派到十公里外。先用规则 + 人工抽检把地址标准化,成批处理的方法可以参考 AI表格数据清洗工具免费推荐。
- 批量地理编码,落成经纬度。用高德或百度的地理编码接口,把返回的
level字段(精确到门牌/道路/区县)存下来,凡是精度低于"道路"的一律标记复核。 - 构造距离矩阵。N 个点需要 N×N 次算路,50 个点就是 2500 次调用。务必做本地缓存——同一批客户的点对距离几个月内几乎不变,没必要天天重算。
- 建模求解。先只加载重约束跑通,再逐步加时间窗、最大行驶时长。一次性加满所有约束是新手最常见的死法,无解时你根本不知道是哪条约束冲突。
- 下发与回收。把路线推给司机端,收集实际轨迹,每周对比规划里程与实际里程。这个定时对比任务可以用 AI Cron表达式生成工具免费推荐 里的方法排定,结果做成图表可参考 AI数据可视化图表生成工具免费推荐。
六、六个必踩的坑
坑 1:用直线距离代替路网距离
为了省 API 调用,很多人用经纬度算欧氏距离或球面距离。在有江河、铁路、单向道的城市,误差能到 60% 以上,排出来的线路司机看一眼就知道是外行做的。宁可减少点位数量,也不要降级距离精度。
坑 2:忽略货车限行
用小车路径规划算货车路线,导航把车带进限高 2.5 米的涵洞或者禁货区,罚单和延误比省下的那点里程贵得多。货车场景必须用带车型参数的接口。
坑 3:时间窗设成硬约束导致无解
所有客户都要求"上午必送",车辆数又固定,求解器只会返回无解。正确做法是把时间窗设为软约束加惩罚项——允许迟到但计成本,让算法自己权衡该牺牲哪一单。
坑 4:规划漂亮,司机不执行
系统排的顺序司机可能不认,因为他知道某个小区中午门禁不让进、某条路每天下午堵。解法不是强压,而是让司机能反馈并把这些经验固化成约束(禁行时段、优先级),跑几轮之后系统才真正比人强。
坑 5:只优化不复盘
上线第一周省了 12% 里程,三个月后客户结构变了、新增了几个远郊点,参数没跟着调,效果慢慢回退。建议每月复盘一次规划里程 vs 实际里程 vs 成本,形成固定节奏。
坑 6:把"排线"和"排班"当成一件事
路线规划解决的是"货怎么走",人员排班解决的是"谁上班"。两者约束模型完全不同,硬塞进一个模型会让求解时间指数级上升。正确做法是先定人力再排线,或者两者迭代求解。人员侧的处理方式见 AI排班工具免费推荐。
七、常见问题
Q1:完全免费能做到什么程度?
OR-Tools、VROOM、Valhalla、GraphHopper 核心版都是开源免费且可商用的,成本只有服务器。真正会花钱的是国内高精度路网数据——自建 OSM 免费但精度有限,用高德百度精度高但超出免费额度要计费。日均几百个点位的规模,通常在免费额度内。
Q2:多少个配送点才值得上工具?
经验阈值是单车 8 个点以上,或总点位超过 25 个。低于这个规模,有经验的调度员手排的结果和算法差距不大,上系统反而增加操作成本。
Q3:能实时插单吗?
可以,但要用"固定已完成部分 + 重新优化剩余部分"的增量模式,别全量重算——司机在路上收到一份完全变样的新路线会直接崩溃。OR-Tools 支持锁定已访问节点后再求解。
Q4:距离矩阵调用量太大怎么办?
三个办法:一是缓存历史点对;二是先用球面距离做粗筛,只对候选邻近点对调精确接口;三是按区域先聚类分片,片内算精确矩阵、片间用中心点近似。三招叠加通常能砍掉 80% 调用量。
Q5:优化结果怎么和客户跟进系统打通?
把配送 ETA 回写到客户档案里,做异常送达的自动提醒,这块可以和 AI CRM客户管理工具免费推荐 提到的字段自动化方案结合。
Q6:给个人用的简单版有吗?
如果只是一次性跑几个点,不必上求解器,地图 App 的多点途经功能加手动调整就够了。行程类的顺序优化思路也可以参考 AI旅行行程规划工具免费推荐,本质上是同一类 TSP 问题的轻量化实现。
总结
配送路线规划这件事,工具早就不是瓶颈了——OR-Tools 免费开源、能力足够,VROOM 让上线变成几小时的事,高德百度补齐了国内路网精度。真正的瓶颈在三个地方:地址数据够不够干净、约束建得对不对、司机愿不愿意执行。
建议的推进节奏:第一周用节约里程法在 Excel 里跑个基准,第二周接 OR-Tools 加载重约束,第三周加时间窗,第四周开始复盘执行率。别一上来就追求全约束最优解,先跑通再优化,是这类项目唯一稳妥的路径。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论