LBS 开发微课堂|智能调度API升级:解决循环取货场景下的调度难题

为了让广大开发者更深入地了解百度地图开放平台的技术能力

轻松掌握满满的技术干货

更加简单地接入位置服务

我们特别推出了

位置服务(LBS)开发微课堂

系列技术案例

第七期的主题是

AI向导接口服务的能力与接入方案

在汽车物流零部件配送等场景中,循环取货(MilkRun)是一个常见的挑战:生产商在制定了明确的生产计划后,通常需要去计算每天前往各个供应商取货并送回空箱的配送路线。

在液态危化品运输的场景中,同样存在类似的需求:企业需要计算每天为多个客户配送货品,并在回程中取回空瓶或空箱的路线。

在上述场景中,企业在规划物流配送路线时,常常面临"边取边送"的调度问题------即需要从多个供应商取货,同时为部分供应商送回空箱,或者为多个客户送货并从部分客户取回空箱。

相比于快消品在城市内配送的调度问题而言,循环取货场景引入了取货、送货、多趟次等概念,再叠加车辆装载、时间窗、业务成本模型等约束条件,调度变得更加复杂,求解难度更高。企业通过传统的人工规划的方式,想要获取效率高、成本低的调度结果,往往难度较大。

近日,百度地图的智能调度排单排线API经过功能升级 ,现已支持循环取货场景下"边取边送"的调度需求,让我们一起来了解一下吧!

1 基础概念

1.1 仓库

在"边取边送"的物流场景中,仓库不仅承担着存储和保管货物的传统功能,还可以作为路线中的重要途径点。这意味着在运输过程中,车辆可以在仓库进行临时的货物补给或卸载,以应对复杂的配送需求并提升物流效率。

例如,仓库可以用于暂存从供应商处收集的货物,或准备必要的空箱以供后续配送使用。

1.2 网点

在智能调度系统中,网点是物流配送网络中的关键节点,根据服务类型主要分为取货点和送货点。

取货点

指需要从中收集货物的位置点。在"边取边送"的场景中,这些位置点通常是供应商的生产基地或仓库。

智能调度系统通过分析和优化取货点的路线安排,确保货物的及时收集,并提升路线的整体效率。

送货点

指需要向其送达货物的位置点。这些点包括客户的营业场所、零售点或其他终端消费点。

在"边取边送"的场景中,送货点不仅接收新货物,也可能是需要收集空箱或空瓶以便回运的地点。

智能调度系统通过精确规划送货点的访问顺序和时间,优化配送效率并降低运输成本。

1.3 车辆

车辆在智能调度系统中扮演着执行实际物流任务的关键角色。根据不同的运输需求和路线特点,系统会选择合适类型和尺寸的车辆。

车辆的管理包括路线规划、载货量优化、行驶时间计算以及实时调度等。

在"边取边送"的场景中,车辆可能需要配备特定的装载设备,以处理不同类型的货物和容器,确保运输过程的安全与高效。

2 路线计算流程

2.1 路网矩阵计算

首先将仓库、取货点、送货点的坐标进行汇总,然后调用路网矩阵创建接口(lbs.baidu.com/faq/api?tit...)创建路网矩阵。

请求示例如下:(json示例)

json 复制代码
{

            "name": "test",

            "locationType": "bd09ll",

            "lbsType": [

                "LEAST_TIME"

            ],

            "vehicleType": [

                "GB01"

            ],

            "locations": [

                {

                    "latitude": 31.863202,

                    "longitude": 117.103855,

                    "key": "aaaa"

                },

                {

                    "latitude": 31.863202,

                    "longitude": 117.103855,

                    "key": "bbbb"

                },

                {

                    "latitude": 31.863202,

                    "longitude": 117.103855,

                    "key": "vvvv"

                }

            ]

        }

返回结果:(json示例)

css 复制代码
HTTP/1.1 200 OK

        x-bce-request-id: f3d25695-6975-4b2b-a540-18f77907f486

        {

          "id" : "8b664a457cdd42ec871e8344368c5d79",

          "commitId": "ad51151d0252463c83030723bb2f28a0",

          "status": "RUNNING",

          "errorCode": "",

          "errorMessage": ""

        }

查询路网矩阵计算状态:(json示例)

返回结果:

json 复制代码
{

    "id": "bc4a905a983d4a44849fcfa93b06f3af",

    "commitId": "d962a667a003496eb78d6009d8ff1f94",

    "status": "FINISHED"

}

2.2 排单排线计算

2.2.1 数据准备

针对仓库、网点、车辆分别详细介绍需要准备的字段和含义、作业等。

(1)仓库

仓库必填以及常用字段分别为depotId(仓库ID)、depotTimeWindow(仓库工作范围时间窗),具体介绍见下表。

(2)网点

网点必填以及常用字段见下表,其中在该模式下serviceType字段为必填项,该字段用来区分是取货点还是送货点。

(3)车辆

车辆信息的必填以及常见字段见下表。

(4)官网接口文档

详细的使用方法和参数设置,请参见我们的官方文档:lbs.baidu.com/faq/api?tit...

2.2.2 完整请求示例

请求参数json示例,包含返回结果、查询结果示例。

(1)请求参数json示例

json 复制代码
{

    "scenesType": "GENERAL",

    "distributionModel": 5,

    "matrixId": "bc4a905a983d4a44849fcfa93b06f3af",

    "lbsType": "LEAST_TIME",

    "distanceType": "TRAVEL",

    "depots": [

        {

            "depotId": "TEST001",

            "depotTimeWindow": {

                "startTime": 0,

                "endTime": 300

            }

        }

    ],

    "vehicleGroups": [

        {

            "vehicleTypeId": "NORMAL",

            "vehicleModelId": "model_test_1",

            "vehicleCount": 0,

            "depotId": "TEST001"

        }

    ],

    "vehicleModels": [

        {

            "vehicleModelId": "model_test_1",

            "capacity": {

                "weight": 100.0

            }

        }

    ],

    "serviceJobs": [

        {

            "serviceJobId": "TEST006",

            "locationId": "TEST006",

            "demand": {

                "weight": 20

            },

            "serviceType": "PICKUP",

            "depotId": "TEST010"

        },

        {

            "serviceJobId": "TEST007",

            "locationId": "TEST007",

            "demand": {

                "weight": 50

            },

            "serviceType": "DELIVERY",

            "depotId": "TEST010"

        }

    ]

}

返回结果示例:

json 复制代码
{

    "id": "90b5a16ba4414eb5966f28bd096597b7",

    "status": "RUNNING",

    "errorCode": "",

    "errorMessage": ""

}

(2)查询结果示例

2.3 计算结果可视化呈现

2.3.1 前端展示页面

百度地图提供前端页面来展示计算任务的可视化结果。

页面链接如下:

api.map.baidu.com/logisticsWe...

打开页面后,分别输入服务端ak,以及任务ID参数,并点击【查看结果】按钮即可显示可视化结果。

2.3.2 页面结果介绍

可视化页面中通过不同颜色展示路线,并显示路线中的网点配送顺序,总里程、总装载、取送货等信息,详细示例如下。

(1)路线效果

单路线展示:

多路线展示:

上图分别展示了单条路线和多条路线的显示效果。

其中,不同颜色表示不同路线,例如,第一条路线用红色表示。

红色路线中,数字标记的圆圈显示了路线上的各个网点的位置,上面的数字从1到12,表明了货物配送和取货的顺序。其中7th、8th、9th、10th是在仓库位置。

地图左侧面板提供详细任务与路线信息:

  • 顶部显示总路程,随后是表示各维度装载率的3个百分比指标;
  • 下方区域显示车辆详细信息:载重、体积、行驶距离及预估费用等;
  • 各个网点的详细信息也被列出,包括每个网点的货物重量和体积数据。

(2)查看取送货

可以点击数字描述的网点图标,在弹出的详情页面中查看当前配送网点是取货点还是送货点,同时详细展示了网点编号、类型、预计到达时间、装载量等信息。

3 升级效果总结

功能亮点:

  1. 场景适配性强: 覆盖循环取货场景下的多种配送模式,包括单仓、多仓、多趟次等场景,提供差异化的路线规划解决方案,灵活适应企业的不同需求。
  2. 多约束支持: 支持多种实际操作中的限制因素,如装载限制、配送时间限制、特定行驶路线限制,确保在满足所有必要条件的情况下进行路线规划。
  3. 效果显著: 基于百度地图自研的高性能启发式算法,结合配送需求与约束条件计算出成本最优的"边取边送"路线,有效满足业务场景中的取货品、送回空箱、多趟次配送等需求,能够帮助企业大幅降低物流配送成本,提升调度规划效率。

百度地图智能调度循环取货场景下的路线调度能力,可以支持在单仓或多仓场景下灵活运用,能够适配不同物流场景需求与操作条件。 同时,还可以支持装载约束、时间窗约束、车辆行驶约束等业界常见的各类约束条件,并允许添加定制化约束,在确保满足业务约束条件的前提下,通过优化路线规划,降低企业物流成本,提高物流效率。

如果您有接入需求或者是想了解更多关于智能调度排单排线服务的内容,请参阅官方文档: lbs.baidu.com/faq/api?tit...

·END·

你还想了解哪些技术内容?

快来评论区留言告诉我们吧!

相关推荐
hrrrrb16 分钟前
【CSS3】筑基篇
前端·css·css3
boy快快长大19 分钟前
【VUE】day01-vue基本使用、调试工具、指令与过滤器
前端·javascript·vue.js
三原23 分钟前
五年使用vue2、vue3经验,我直接上手react
前端·javascript·react.js
嘉琪coder28 分钟前
React的两种状态哲学:受控与非受控模式
前端·react.js
木胭脂沾染了灰39 分钟前
策略设计模式-下单
java·前端·设计模式
Eric_见嘉43 分钟前
当敦煌壁画遇上 VS Code:我用古风色系开发了编程主题
前端·产品·visual studio code
青红光硫化黑1 小时前
React基础之项目创建
开发语言·javascript·ecmascript
拉不动的猪1 小时前
刷刷题28(http)
前端·javascript·面试