首页 >> 大全

滴滴快车派单怎么赚钱?兼职滴滴快车真实收入

2022-08-07 大全 106 作者:考证青年

昨天讲了flink在滴滴的应用,今天给大家讲讲滴滴的订单调度算法,绝对通俗易懂。

可能很多乘客在家里用滴滴叫车的时候经常会遇到这种情况:打开滴滴app,地图清楚地显示附近有车,但是远的司机却发给我。

本文将重点介绍我们如何分析和建模这个问题,以及我们面临什么样的算法挑战,以及介绍我们常用的一些订单调度算法,这些算法可以让我们不断提高用户打车的确定性.

一、为什么我们需要更好的调度算法

说起滴滴的订单调度算法,你可能会觉得既神秘又好奇。今天我们是如何从促销到抢单再到派单的?我们先来看看,为什么好的调度算法是旅游行业不可或缺的能力?

回想几年前,当我们没有滴滴时,我们只能等待可能会或可能不会在冷风或炎热中可用的出租车,然后我们才能从滴滴叫出租车。乘客可以在室内相对舒适地等待车辆的到来。从线上到线下,乘客的确定性首次得到提升。然而,这还不够。抢单的模式,注定了我们的响应率上限不会太高。

2015年滴滴开通快递业务时,我们已经从抢单发展到派送模式,乘客响应率提升了20多点。响应速度会比较紧张),乘客的确定性再次大幅提升。可见,调度模式为滴滴创造了巨大的用户价值。

纵观近年来兴起的O2O业务,国内外的网约车公司,包括我们的朋友Uber和Lyft,都是以派单的产品形式来匹配司机和乘客之间的交易。优步在市场上上市。当时,调度引擎也被列为核心技术能力。

看我们国内的外卖平台,核心订单调度系统的好坏也决定了整个平台的交易效率(平均配送成本)和用户体验(配送时间);最后,整个大型物流行业也在不断的线上转型,货品和司机如何匹配,更好的结合订单能力,也是整个交易过程的关键,也是商业模式能否建立的前提。从运送人到运送货物,调度引擎现在越来越多地应用于现实的商业和生活中。

二、派单问题初探

言归正传,我们来看看滴滴网约车平台是如何调度订单的。首先,我们来看看我们面临什么样的问题?

“订单分配是在调度系统中将乘客下的订单分配给在线司机的过程。”

这是一个看似简单但实际上非常复杂的问题。说到这里,很多人可能会问,我可以把我的订单分配给离我最近的司机吗?

确实,其实滴滴的订单调度算法最大的原则就是“就近分配”(70%~80%的订单分配给就近的司机)。据我所知,其他竞争公司(包括优步)也是基于这个原则。

让我们仔细看看这个问题。如果只按照就近、先到先得的贪婪策略进行分配,是否能最好地满足平台上所有乘客和司机的需求?答案是否定的,原因是如果我们只根据当前时刻和当前本地订单做出决策,我们会忽略未来的新订单和司机的变化,也会忽略与您相邻的其他区域甚至整个城市的需求. (注:从时间序列上看,新驱动和新订单的出现会导致贪心策略违背就近分配的目标)。这就是问题仍然非常复杂的原因。

这个有点抽象,不过没关系,我们一步步拆解订单分配的问题,让大家有一个更好的理解:

简单来说,在我们的平台上,每时每刻都有N个乘客在创建订单,M个司机可以供我们配送。我们强大的平台可以提供派单的算法。司机的实时地理位置坐标,以及所有订单的起止位置,告诉我们每个接单司机的实时导航距离。

1.1个订单,1个司机

老司机都不知道的事!全网最全的滴滴派单算法揭秘

看起来很简单,我们给这个驱动分配顺序就行了。

“那为什么有时候附近有一辆空车不能分配给你呢?”

实际的在线系统会比这复杂一点。一方面,原因可能是司机碰巧网络故障,或者正在与客服沟通等,导致司机听不到命令。另一方面,原因并不是所有的汽车都能满足为您的订单服务的要求。最基本的策略实际上是通过手动设置规则进行过滤。以下是一些基本示例:

需要说明的是,这里的规则并没有在订购时造成不公平的影响,而是完全为业务的正常运作而设置的。这些政策承担着确保业务正确性的重要责任。

2.如果 1 个订单和 2 个司机

假设两个驱动程序都可以分配到这个顺序,让我们看看系统应该如何分配。

首先,在第一种情况下,同时,当两个司机的距离和顺序完全一样时,系统应该如何分配呢?

老司机都不知道的事!全网最全的滴滴派单算法揭秘

正如我之前提到的,我们平台上订单分配的最大原则是附近订单的分配。当距离完全一样时,现行系统会主要考虑司机服务点的优劣。服务点数较高的司机会收到这个订单(注:服务点对订单分布的影响,简单理解可以换算成多少点可以换成多少米距离的优势,这不是重点今天就不介绍了),再解释一下,系统使用的是地图的导航距离,而不是人们可以直观看到的直线距离。有时由于需要在一个路口掉头,距离相差很大;而如果司机的定位有问题,也会出现订单过远的情况。 .

那么我们看第二种情况,如果驱动A近,驱动B远,系统将如何发送呢?

这很简单。按照就近分配的原则,我们将驱动A分配到这个顺序。呵呵~~,假设我们把问题设置得更实际一些。下单的时候,司机B已经在线空闲,但是司机A还没有出现(不在线,或者还在运送乘客),但是1s后,他会离开离得近的司机A突然出现,可以分配假设我们采用先到先得的贪心策略,那么司机 B 会被分配到这个订单中,这与我们将订单就近分配的目标背道而驰。

所以看起来很简单,但实际上,算法需要更好。我们把这个问题叫做派单的时间问题,后面会看怎么解决。

3.如果有N个乘客和M个司机

最后,我们来考虑最复杂的多对多情况,这也是在线系统在每天的高峰时段需要面对的挑战。我们通常将这种情况形式化为二分图匹配问题。运筹学领域也叫问题,如图:

老司机都不知道的事!全网最全的滴滴派单算法揭秘

让我们把这个问题更具体一点。假设此时我们有 20 名乘客和 20 名司机。这些乘客可以由 20 名司机中的一名来接载。我们的系统需要搭载所有 20 名乘客。分配出去,让大家的整体接送时间最短。听起来是不是有点复杂?让我们应用组合数学的知识。 20的阶乘有这么多可能的解。20的阶乘是什么概念? 20*19*18*…*1= ,这个数字太大了,完全暴力搜索是绝对不可能的。这里需要一种更智能的方法。

4.如果有N个乘客和M个司机,会有多少乘客和司机?

这是订单调度问题的最大挑战。我们不仅需要当前的最优值,还需要未来一段时间的整体最优值。新的司机和乘客将实时插入整个分布式网络。如何更好地分配节点发生了新的变化。

所以如何考虑时机对我们来说非常重要。这个问题在业界也被称为VRP问题。相对静态的货物和路线规划问题。假设我们知道未来供需的完全真实的变化,模拟告诉我们,我们的系统或许可以用同样的容量完成1.2~1.5倍的需求,也就是还有订单调度算法同学继续努力。

想起前段时间的吐槽大会,大家提到文松曾经说过,我们的订单调度问题比alpha go更难。事实上,这两个问题确实有些相似。他们都在大搜索空间中找到了一个近似最优解,而 alpha go 将在更清晰的游戏规则和环境中得到解决。它的难点在于博弈,而我们订单调度问题的难点在于未来供需的不确定性和用户行为的不确定性。

三、订单调度算法介绍

我们已经描述了订单分配问题是什么以及它面临的各种挑战,那么让我们来谈谈我们的在线订单调度策略是如何解决其中一些问题的。

在介绍具体策略之前,我们先说一下调度算法的原理。目前调度策略的主要原则是:从全局的角度出发,尽可能多地满足出行需求,确保每一位乘客的网约车需求都能更快、更确定地得到满足,同时,我们会尽最大努力提高每位司机的接单效率,使总的接送距离和时间最短。

如何理解这个原理?我们说策略会从全局的角度达到全局最优,那么对于每一个独立的需求,订单的调度可能不是“局部最优”,但是我们可以告诉你,即使在这个策略下,仍然是70% ~80% 的需求也符合目前的贪心订单调度结果。

接下来,这里将介绍两个重要的调度策略。

1.批量匹配(全局最优)

调度策略最基本的部分就是解决上一节提到的时序问题。该算法几乎是所有同类调度系统解决该问题的最基本模型。在Uber里面叫,我们内部也叫“全局最优”或者“延迟集中订单调度”。

这实际上非常直观。由于用户订单的产生和司机的出现往往不在同一个时间点,时间维度上的贪心订单分配方式(即每个订单出现时,选择最近的司机调度订单)全局最优无法获得效果。一个很自然的想法是让乘客和司机等待一段时间,然后在收集一段时间的订单和司机信息后集中分发。这样,在订单和司机相对更多、更密集的情况下,订单调度策略可以找到更接近、更合理的订单调度方式。

寻找司机和订单分配的全局最优是一个二分图匹配问题(图),一方面是乘客,另一方面是司机,可以通过运营优化中的各种问题求解方法来解决。

我想再次和你澄清一下,我们使用的批量匹配模式与你希望的“调度离我最近的司机”的“调度模式”并不矛盾。我们也寻找“乘客”。 “最短接送时间”的最优解决方案也是在大多数情况下分配离您最近的司机,但完全满足每位乘客的个性化需求“分配离我最近的司机”,有时会导致部分无法满足乘客的需求,例如以下情况:

当1号和2号两个乘客同时叫车时,如果完全按照“就近派单”的方式,虽然可以先接1号乘客, 2号由于距离太远会被接走,导致等待时间变长,甚至2号乘客也不能叫车,因为最近的司机超出了站台调度距离。 1、2号旅客总候车时间为15分钟,平均候车时间为7.5分钟。

我们的做法是将距离较远的2号车分配给1号乘客。

将1号车分配给2号乘客,这样1号和2号乘客的平均等待时间缩短到5分钟,相比于5分钟缩短了2.5分钟就近派单,总等待时间缩短到10分钟,比就近派单整整短了5分钟。

通过提高整体效率,可以转化为满足更多乘客的需求。

2.基于供需预测的订单分配

“如果未来有先知告诉我们每个订单的时间和地点,以及每个司机的在线时间和地点,调度订单将变得非常容易”

刚才提到的batch match的方法,理论上可以保证那个batch的匹配是最优的。但这够了吗?

很遗憾,上述延迟集中订单分发的策略只能解决部分问题,仍然不是一个完整的解决方案。最大的问题是用户对系统派单响应时间的容忍度有限。在很多情况下,用户会在短短几秒钟内对平台失去信心,并取消订单。因此,在实践中,我们只积累了几秒钟的订单和司机信息进行集中订单分发,在整体情况下,这仍然可以看作是一种时间维度上的贪婪策略。

实时获得最佳调度结果的唯一方法是使用对未来的预测,即基于供需预测的调度订单。这种思路很玄妙,但核心内容很简单:如果我们预测一个区域未来更有可能有更多的订单/司机,那么在匹配的时候,让这个区域更多的司机/订单等待匹配。同一地区的订单/司机。

3.链调度

基于供需预测的订单分配意义重大,但由于预测的不确定性,其实际效果难以保证。为此,我们采用一种更具确定性的预测方式来调度订单,即链式调度。

“串行调度,即如果司机的目的地离订单的位置很近,将订单分配给即将结束服务的司机”

与预测订单分布相反,链式调度预测下一时刻空闲司机的位置。由于高峰时段的空闲司机大多是完成订单后的司机转化而来,因此预测司机的位置就成了一个相对确定性的问题,即监控司机到目的地的距离和时间。当服务中的司机离目的地很近,而目的地也离乘客的新订单也很近时,链式调度逻辑就会受到打击。司机完成最后一次接单服务后,立即进入新订单的接单流程,有效压缩订单响应时间和司机接单距离。

四、总结

每天,我们的订单调度系统面临超过 3000 万次的叫车需求。在高峰期,它每分钟接收超过 60,000 次乘车。平均而言,它需要每两秒匹配成百上千的乘客和司机。 与原来的调度策略相比,我们现在的调度策略可以满足每天超过百万人次的出行需求。为了让更多人更快、更确定地打车,我们的交易策略团队将在更好的公平感知的前提下,不断优化和打磨我们的订单调度算法,为乘客和司机创造更多的价值机会。

当然,目前的订单调度策略还有很多不完善的地方,这本身就是一个比较复杂的问题和系统。 ,也欢迎大家向我们提出更多宝贵意见,帮助我们进一步成长。

郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的。如果作者信息标注有误,请尽快联系我们修改或删除,谢谢。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了