顺丰作为中国及亚洲最大、全球第四大综合物流服务提供商,长期以来一直是物流行业的代表企业之一。物流,这个看上去依托密集的人工来提升效率的传统实体行业,背后其实蕴藏着人工智能、大数据、运筹等高新技术。而正是这些技术,让物流的效率、成本、体验,完成了超越人工极限的优化。
物流的核心问题之一就是资源与需求的匹配问题,它决定了你能不能准时收到快件,决定了你的包裹它到底上哪趟车、哪架飞机、以及由哪个小哥来收派。顺丰解决这个问题的关键,则是被称为[顺丰超脑]的顺丰智能规划调度平台。这套大规模、高复杂度、链路长、涉及线上线下人员与设备众多的规划调度平台,基于海量数据以及运筹、人工智能等技术,可以前置依据预测情况规划好相关小哥、车辆、飞机的工作计划,还可以在快件流转的漫漫旅途中预测潜在延误风险,并及时推荐智能调整方案。
简单来说,这套平台需要让你准时收到包裹,也要让小哥、车辆、飞机的工作时间、路径等方面的安排高效合理,同时尽可能地降低整体的运营成本。
历时8年,[顺丰超脑]团队有怎样的探索与思考?他们是怎么处理这样复杂的问题的?如何理解数学世界与现实世界?未来的智能规划调度会走向何方?
我们对话了顺丰科技智能规划调度平台相关团队。让我们在高考前夕,一起看看这个高考数学人均140分的团队的答案。
Q1顺丰的智能规划调度平台让千千万万个包裹按时抵达了收件人手中,可以简单介绍一下整个平台是怎么完成这个过程的吗?
顺丰的物流可以大体分为收转运派四个主要环节。我们就来先分别看一下这四个环节,我们都主要做了哪些工作吧。
首先是收派,这两个环节是类似但相反的过程。收是小哥从客户手中揽件并送到网点,而派是小哥从网点拿到货物然后上门送到客户手中。这两个过程中涉及的智能化包括小哥的排班、小哥收派区域的划分、网点班次的设计等。举个网点班次设计的例子吧。为了客户能准时收到快件,顺丰的车其实不是“装满就发”,而是“到点就发”。我们需要给小哥设计他们收派的班次,既要兼顾收件的时效要求,又能满足派件的时效要求,还要和来网点收件、送件的车辆时间能匹配串联等等。
其次就到“运”了。当小哥把快件送到网点后,相关网点就会按照快件的班次,把快件集中运输到中转场,这就是支线的运输过程。支线运输也会涉及很多智能算法,比如支线的线路规划、网点和中转场的选址、车辆、司机的储备策略、实时动态调度等。
等送到了中转场,就进入了“转”的环节。货物在这里集中分拣,然后被运送到它的目的地。这里涉及的智能部分就包含货量预测、分拣计划的制定、场内设备布置优化等问题。
此外,路由规划是一个重要的命题。怎么规划路由,其实需要考虑很多问题。比如我从深圳去北京,既可以走航空,也可以走陆运;我走陆运的话,既可以在天津中转一次,也可以直接去北京。什么情况下该发航空、什么情况下该发陆运,这里就涉及航转陆、陆转航的一些转换策略。再比如,货量突然暴增该怎么办?我可以选择临时调度更多车来运输这个方向的货物;也可以修改分拣计划,让一部分货物先运输到货量更少的流向上去。在路由规划中,经常牵扯这种到底选择哪种策略的过程。这里还会涉及资源储备的策略,比如我们要多少自有资源、多少外包资源,才能在保证整个运输网络稳定性的同时,以一定的弹性资源应对货量的变化?如果是外包资源,又涉及到智能招采和竞价策略了。
最后就是调度的一些策略了,这些策略主要是做临时的异常处理,收转运派4个环节,调度策略都会涉及到。
Q2顺丰作为直营快递的代表,相较于加盟式的快递,特殊的业务场景为智能规划调度的技术层面带来了哪些主要挑战?你们是如何应对的?
从我们技术的角度出发,总体来说直营快递在技术层面是有很大优势的。但是这个优势也是挑战。
第一个优势与挑战是数据。说是优势,是因为直营让我们拥有了全环节的数据。我们的订单怎么进来的、进来以后谁负责处理、每一个流程、环节,我们都有数据,这些大量的数据都是我们算法的支撑。但是加盟式就比较难做到。说是挑战,是因为数据的整合和处理本身也存在挑战。我们有大量的订单信息、车辆位置、交通状况、车辆的日志等等数据,要想更高效地应用他们,需要非常注重数据底盘建设。我们有大量的公共的数据服务,比如地图信息、场地运转的信息、各种订单底表等,这些公共服务是智能化的基础建设,而好的数据基础建设能让算法更加高效地研究、迭代和应用,这为优质服务带来更稳定、可靠的保障。
第二个优势与挑战是统一规则与个性化需求相结合的精细化规划调度。因为是直营,所以大家总体来说SOP是差不多的,这让我们整体的服务质量会有更好的保障;但是在小的地方又需要考虑一些特殊的地区情况,结合当地的特点,不能统一全国一刀切。例如,同样的路程在重庆可能需要更长的时间,因为它有很多需要上上下下的地方。这样的特点会让我们在做智能化落地的时候需要关注更多细节的地方,也更能帮助车辆、小哥等在细节之处配合,让全国各地的客户,拥有更为可控、稳定、贴心的服务。
第三个优势与挑战是链条更长的规划调度。比如小哥收件的时候,忽然发现我这个城市出现了一个新的大网红,带货特别厉害,件量激增。我在收的环节就发现了异常,于是我以最迅速的方式把这个信息同步给了收转运派所有环节,那么我们其他环节就会提前几个小时知道货很多,于是支线的运输、干线的运输、中转场、包括收件地都会赶紧做好应对的准备。这样精细的规划调度,能让资源联动的更为紧密,节约时间与成本;同时让我们在突发情况下,也可以提前快速在响应客户需求,保证服务更加及时、灵活。
最后一个优势与挑战是全局角度看各环节。因为我们是直营公司,我们要对收转运派的每个环节都要负责,不仅需要把各环节串联起来看、还要平衡时效和成本,综合提高物流效率和客户满意度,尽可能地让客户的钱“花的值”、买到最好的服务体验。在加盟的情况这种情况下,你可能只用关注自己所做的一件事就好了,而直营需要同时关注一个很大的范围、去整体的思考整件事如何最优,这会让智能决策的复杂度变得很高,当然全局最优的最终结果也会价值巨大。
Q3面对包含多个城市、多种交通工具、多人交接的路径规划、运单匹配等工作是特别复杂的优化问题,你们是怎么做到对如此复杂的问题进行求解的?
当我们平时遇到一个特别复杂的问题的时候,你会怎么办?我们一般会说,抽丝剥茧,需要从一团乱麻中找到一个线头。对于这个问题,我们首先需要把这个特别复杂的问题切割变成一个个相互独立、但相互之间又有关联的问题,同时通过一些指标让他们联动起来。这在数学上其实是一种“分而治之”的理念。
举个例子,顺丰中转场的班次就是一个我们用于“切割”问题的指标。“几个小时是一个班次”这个指标,其实一边链接着干线运输,一边又连接着支线运输;一边负责让其他城市的货物到这里,并给这个城市的网点派单;一边面对着这个城市的网点,把自己的货物放到这里,送到发到全国各地去。无论是支线、干线以及中转场的工作时间计划,都要需要按照中转场班次这个时间进行切割,每个部分都需要在规定时间内完成。这样我们刚刚“一条线”的大问题,通过一个班次设计,就切割成了三个小问题。这三个小问题里面可能又有各种各样的切割方式,把这个问题从大变小。
除了切割,我们还要联动。什么是指标联动?我们刚刚虽然把这个问题切割成了支线、干线、中转的三个小问题,但是我们还要把总时长串联起来。这个整体的时间就是一个联动指标,它贯穿了我们切割的3个小问题。
有了联动指标,我们再来看每个环节应该怎么做。比如中转场就需要在规定的班次里完成中转、尽量提高中转效率;支线就需要按照班次设计,看如何在规定的时间下,尽可能优化线路、提升装载率和整体运输效率。
当某一个子问题发现它无论如何可能都满足不了相应要求的时候,我们再来看在切割问题的指标上是不是要做一些调整。例如中转场现在觉得时间很宽裕、支线觉得很紧张,那么我们就需要调整一下相关切割的方式,让各方都觉得可以接受。在这个过程中,联动指标与切割本身也在不断优化,在不断的结合、调整中,最终达到有机结合的状态。
那前面这些主要是一个思考的方式,到具体的问题中,我们会根据问题的复杂度和规模应用不同的算法进行求解。比如比较简单的问题一般通过整数规划模型、精确求解的方式。特别复杂的问题,我们就会舍弃这种精确的解,转而应用启发式算法或是搜索的一些算法。比如在支线规划应用了ruin-recreate的大邻域搜索算法,可在分钟级完成2000+条线路规划,且在大多数算例下,能与精确解的Gap在1%以内。还有一些很复杂的问题我们会通过一些预测或者分类的方式去解决,就是把很复杂的问题终究归成几个分类的问题。部分问题我们会应用一些经典算法的变种,比如推演端到端路由的时候,会在经典最短路算法(Dijkstra或A*)上做部分改造;在任务指派或调度问题上会通过改造图论中的二分图算法迅速找到最优解等等。
Q4快递的链路很长,中间也会经历多次的交接转换环节,无论是飞机延误还是堵车,难免会遇到一些突发状况,你们是如何比较准确地预估配送时间、并保证配送时间相对准确的?
这个问题其实我们在事前、事中、事后都有做一些技术层面的措施,主要是在预测推演方面,来进行保障。
事前我们就会先想办法预测,比如对货量的预测,再结合整体发车货量的大小等信息,事前预估能否准时到达。根据预估的结果,在快件还没发出的时候,就做一些相关的应对措施。
事中主要会实时监控一些数据,然后配套一些智能的解决方案。比如运输环节会监控到每一辆车的实时信息,例如车辆是否按时行驶到预期地点、有没有异常停留;中转场会实时监控它的货量等等。一旦发现可能有问题,就会IM电竞,IM电竞官网智能推送一些调度处理方案。例如,原本走陆运的快件,可能因为一些原因如果继续走陆运的话,就赶不上客户要求的时间了。那我们的算法就会判断推送,让它去赶对应的航空班次;还有比如某个本来要去的中转场目前的预期货量已经很大了,那么我们就会推荐他们换一个中转场走,进行分流。
当然还有一些事后的复盘。例如我们发现某一次迟到是因为其中的某个环节出错而发生,那么我们事后就会去看出错的具体原因,并且对这个具体环节进行提升。所以事前、事中事后我们都会有相应的一些手段和策略来保证我们能按准确地按预估的配送时间来送达,配送时间相对准确。
柏拉图麦穗的典故大家可能都听说过。现在有一片麦田,你需要拿到最大的那个麦穗,但你不能走回头路,只能拿一次,你应该拿哪个?这是一个很复杂的问题,我们在做调度的时候也同样会遇到。简单来说,就是这一刻我接到的信息不是全部信息,等一等我可能有更好的选择,那我到底是这一刻就要做出选择还是等一等?举个大家熟悉的例子,打网约车的时候,现在没有司机愿意接去某个地方的单,作为平台,那我是再等一等看有没有愿意的司机,还是直接指派一个司机去?
其次,像这种调度问题,任务和任务之间并不IM电竞,IM电竞官网独立,而是会产生蝴蝶效应。比如,我因为A任务快迟到了,所以把很远的B车调过来,但最后有可能A任务按时完成了,但B车原本的其他任务又会迟到。局部的决策很有可能会影响全局。我们曾经就有过因为解决一个订单迟到,导致更多订单迟到的案例,原因就是你在不停寻找不合适的车去承接这个任务,会产生连锁反应,进而影响更多的任务时效。
这个问题让我想到了一个马IM电竞,IM电竞官网克吐温的名言:世界上有三种谎言,谎言、该死的谎言和统计结果。这三个是依次递进的,也就是说统计结果比该死的谎言还可怕。我觉得很多数字其实并不能代表真实的结果。数字本身不会骗人,但是有人会别有用心地变换口径和方法来制造结论,所以不能完全看数字或某一个结果,而是需要把大家的经验和数学结果结合起来看待。
有一个例子我还挺感慨的。我们曾经给小哥做派送的最优路径的时候,算出来的路径常常是一圈一圈的,类似一个花瓣,这样是最短的路。但实际小哥日常喜欢走这种叶子形状的路径,走到一个“叶子”以后,在这个区域内来回走完成各种任务,再去下一个“叶子区域”。
为什么会出现这样的情况?结合现实问题就知道了。在第一种情况下,当小哥派第二个订单的时候,“花瓣”上最远的第六单突然催他怎么办?他如果过去了,是不是第3-5个订单要折返回去送?但如果都在一个“叶片”区域,那我多走一点就能过去。所以,虽然计算出来“花瓣”是数学上最简单、最快的,但是实际中一旦不按照你预期的计划进行时,它的风险就会立刻增大。换句话说,“花瓣”方案的鲁棒性不够。
所以,我们觉得一个模型的抽象很重要。做好模型的抽象,需要能彻底理解业务场景,而不是盲目崇拜数学结果。
Q6:你觉得未来顺丰智能规划调度会向什么方向优化与发展?怎么看待大模型对传统求解方式带来的影响与变化?
我觉得会更加注重联动,智能规划调度会向更加端到端、全链路的方式去发展。前面有个问题提到了,现在其实是大问题切割成小问题,小问题去求最优解再进行相互联动。未来,我们希望能够让这些小问题的模型之间也可以互相交流,大家共用一些参数特征同时做一些优化调整,去端到端统一解决整体问题,使得从全局角度看效率更高、成本更低、体验更好。
至于大语言模型,我们也研究过一些相关的资料来看结合的可能。例如,它可以作为一个“裁判”,来帮助我们确定运筹优化的模型计算结果的好坏,让模型更高效地不断向更好的方向迭代发展,这方面的探索提升空间还有很多。