Uber的實時排程系統是如何實現的,有相關的資料和開源實現參考嗎?

時間 2021-05-30 07:51:18

1樓:Gavin Li

首先反對 @覃超 的答案。「手機一按,離你最近的那輛車就會來接你」只是乙個形象直觀的對外宣傳方式而已。

Uber早期的演算法可能並不複雜,但是目前的演算法肯定不止「距離最近」這麼簡單。曾經在Uber實習,粗略了解過一些相應內容,但以下所有內容正確性均不能完全保證。

據我所知,Uber並不是簡單的採取「按照距離找一輛最近的車」策略,而是「將可用的司機按照預計到達時間、歷史實際到達時間與預計到達時間的偏差、接單率、平均星級等因素按不同的權重進行綜合排序,然後把請求傳送給排第一的司機端,如果不接的話依次順延」。

在國內,由於刷單現象非常猖獗,Uber對上述演算法採取了一定的修正,先是遮蔽掉你之前經常坐的司機以排除刷單(fraud)嫌疑,然後按照上述演算法進行排序,最後是在上述演算法排序結果中最前面的幾輛車進行隨機排序(還是直接剔除排第一的?記不清了),這時候再把請求傳送給排第一的司機端,如果不接的話依次順延。

關於Uber對空車的排程,不管國內國外,空車司機在Uber Partner(也就是Uber的司機端)上都可以看到整個地圖,用黃色標記的區域是需求較大的區域,而用紅色和閃電標誌標記的區域則是供給嚴重不足、存在動態溢價的區域,司機可視自身情況決定是否前往這些區域。另外,在國內的話,如果某一區域在一段時間(如數小時之內,具體時長不詳)都是供給嚴重不足的話,該城市團隊會傳送簡訊給司機,鼓勵司機上線接單。至於其具體演算法,好像是「如果某一區域內所有乘客打到一輛車的平均等待時間的期望值超過X分鐘,則對其進行加色」,不確定。

2樓:養生壺

看看下面是uber首席系統架構師Matt Ranney的相關介紹:

Uber Unveils its Realtime Market Platform

關於實時嵌入式系統的排程和核心,有沒有相關書籍資料推薦?

陳軍糧 作業系統這門課程本身就是實驗性超強,如果沒有相應的實驗配套,只是把書本背熟,還是紙上得來終覺淺。但是提到實驗,只要是在實際的作業系統之上作實驗,複雜性都非常高,對理論基礎 程式設計能力又要求非常高,必須苦下一番功夫,花不少時間精力進去,才能有真正的收穫。教材的話,也就是跟學習作業系統一樣的教...

小霸王之類的學習機上的DOS系統是如何實現的?

洪景仁 當年很多八位元個人電腦包括國內製造的帶軟碟機功能的八位元學習機一般都有專用的DOS系統,不過這些DOS功能都很簡陋,和PC上用的PC DOS MS DOS不能比。 張百川 網路遊俠 印象中小霸王的SB 97 BBK 沒錯,步步高當時的都是BBK而不是BBG 都用的6502處理器,並且 其實我...

熵增定律如何系統說明生物學上的永生無法實現?

劉佳聞 生物曾經永生過,只不過永生的生物幾乎全掛了,留下了不能永生的,這只是生存策略的問題。那麼什麼生物的策略最好呢,目前來講就是越能適應環境的生物的策略越好。從熵的角度來說,生物自身減熵外界必然要熵增,那麼外界熵越增加就越混亂,生物想要適應混亂的外界就必然要對自身做出改變來適應環境,就需要演化,演...