老码农毅然起身,走到白板前拿起碳素笔,开始讲解。
骑手要达到顾客家,必然要穿过十五条街区,而现实情况更为复杂,诸如道路拥堵、断路施工、高峰限流等。为了简化讨论,将不利因素统合为一个权值,即经过这条路所要付出的代价,数值越高越不利。
对于这种场景,动态规划法的思想是最适合的。首先解释一下,动态规划的基本思路类似于分治法。就是将一个大问题划分为一个一个独立的子问题进行解决。所有的子问题解决之后,将子问题的解进行一次归纳,即得到原始问题的最终解。
回到我们所要解决的核心问题上来,就是如何尽快得出骑手的最佳路线?我们可以给街区编号,那么骑手站在一号街区,他最终的目标是要最快地到达十五号街区。
基于动态规划法的思路,我们只需要考虑如何让骑手最快到达下一个街区就可以,而不必把所有街区的可能路径都计算出来。
例如,骑手站在一号街区,我们只要找到通往二号街区的最短路径,把它记下来就可以;当他到达二号街区时,再计算出到达三号街区的最短路径……
以此类推,我们只要十五轮计算,每轮只计算出当前街区路径的最小值,最后将十五个最小值的路径串接起来,通知骑手,出发!
说到这里,老码农潇洒地把碳素笔一甩,补充了一句:“动态规划最大的优点就在于,它的局部最优解集合就是全局最优解,它将计算量降低了几个数量级。”
迎着众人钦佩的目光,老码农飘然坐回了自己的工位。这时老板把桌子一拍,大喊了一声:“今天晚上加班给我做出来,明天上线!”
大数据
=======
系统初步构建好了,商家接入进来了,骑手也招募了,宣传打出去了,客户真的下单了。老板天天在后台盯着数据看,一开始还面有喜色,到后来脸色越来越阴沉。
终于有一天,老板又嚷开了:“对门新开了一家在线外卖,他们的送达时间怎么平均能比我们快两分钟?谁能告诉我为什么!”
没有人可以回答这个问题,办公室里安静的让人窒息,这时候还是老码农慢条斯理地说:“如果我没猜错,他们应该是算法加上大数据的方式,提高了效率。”
老码农又走到白板前开始了讲解。
在程序算法的世界里,骑手们仅是加权有向图中的一个节点,他是男是女、年纪多大、百米跑成绩是多少……这些数据统统没有。
而算法仅是规划出骑手的行动路线,骑手的绩效水平,则取决于他自身的各项要素了。如果将骑手的身体数据,以及他在送餐时的各项数据全都记录下来,那么就能形成他个人的效能数据库。
我们通过大数据的方式,可以对每一位骑手的绩效能力进行评估。然后计算出送餐任务所需耗费的效能点数,再除以他个人的效能值,就得到了最短送餐时间。
每次骑手完成任务,系统中他的效能值都会更新,而为了追求最快速度,系统就会奖励他的最高效能表现,而惩罚低效能表现。这样骑手们就会越跑越快了。
而且大数据对于处理突发情况特别管用,例如某条道路突发事故导致无法通行时,只要骑手没有通行记录,就可以马上标记为无效路径,节省大量时间。
说到这里,老板两眼放光,又一拍桌子,大喊:“还等什么,赶紧给我上!”
老板看看大家有些畏缩的样子,甩下一句话“我不管你们用什么方法,只要我们跑得比对门那家快,所有人加薪50%。” 然后就冲出门去盯着出餐最慢的那户商家了。
技术之外
====
好了,技术的话题讨论得差不多了,可以谈谈技术之外的那些事儿了。《外卖骑手,困在系统里》关注的是骑手们,而我想谈一谈创造系统的程序员们。
在那篇文章中对程序员们有一些简单的描绘,但还是有些脸谱化了,像是凭着大众印象写出来的。当然,“人物”还是一个很了不起的公号,他们对骑手做的深度调查就极具力量。
只是我想,如果他们有一天能对程序员这个群体也有这样深度的访谈和调查,那么一定也能写出有血有肉的程序员们来。
回到我在文中为了趣味性,加入的“老板”与“老码农”角色。虽然是戏说,但现实中其实在推进工作时,也差不多会发生这样的对话。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
上。
[外链图片转存中…(img-vV5JO6q4-1710414949303)]
[外链图片转存中…(img-ujB9TlOo-1710414949303)]
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源