文章內(nèi)容來自互聯(lián)網(wǎng),不做好壞評價(jià)。只對相關(guān)技術(shù)做以梳理、總結(jié)、學(xué)習(xí)。
總結(jié)技術(shù)內(nèi)容之前,先看看這種“分單引擎”是應(yīng)用在什么樣的場景中的,并提出問題。
首先,它應(yīng)用在一個(gè)平臺(tái)之上,平臺(tái)粘合與匹配了多方的需求(Uber/滴滴 -- 乘客與司機(jī),外賣 -- C端用戶、商家與騎手)。平臺(tái)以積極構(gòu)建網(wǎng)絡(luò)效應(yīng)為目的 -- 需求越多,供給就越多。

其次,越大的規(guī)模,越有助于平臺(tái)來優(yōu)化需求與供給之間交互的價(jià)值單元,如,Uber/滴滴對于乘客提供更短時(shí)間接乘的司機(jī);外賣對于用戶提供配送時(shí)效更短和更好服務(wù)體驗(yàn)的騎手,而這也是平臺(tái)的價(jià)值。平臺(tái)通過收集乘客的需求數(shù)據(jù)(包括,歷史上這個(gè)區(qū)域的數(shù)據(jù)),司機(jī)的數(shù)據(jù)(車型、位置、速度等),并幫助過濾和篩選最優(yōu)的司機(jī)來滿足乘客的需求。

第三,在平臺(tái)之上,隨著規(guī)模的增大,網(wǎng)絡(luò)效應(yīng)會(huì)發(fā)生變化。準(zhǔn)確的說,需要構(gòu)建積極的網(wǎng)絡(luò)效應(yīng),而持續(xù)不斷的調(diào)節(jié)消極的網(wǎng)絡(luò)效應(yīng)。比如,更多的乘客打車需求會(huì)帶來司機(jī)接乘時(shí)間的變長,從而又使得乘客的體驗(yàn)下降。近些年滴滴推出的 -- 快車、專車、順風(fēng)車、拼車等等模式,無不是通過不斷的調(diào)整產(chǎn)品和運(yùn)營策略以調(diào)節(jié)供需之間的平衡在做努力,細(xì)分并開拓更多的場景,以滿足需求。不同的需求與供給,對于后端的分單引擎來說,帶來的是調(diào)度模式和策略的復(fù)雜化、計(jì)算量的指數(shù)增長。

第四,“分單引擎”面對的不是一次只求解“單一需求與單一供給匹配”的最優(yōu)解問題,而是“多個(gè)需求與多供給匹配”之間的全局的最優(yōu)解問題。這里面的優(yōu)化目標(biāo),不僅需要考慮某一個(gè)時(shí)刻乘客的體驗(yàn)問題(如,接乘時(shí)間指標(biāo)、平臺(tái)響應(yīng)時(shí)間(有司機(jī)接單)指標(biāo)),也要考慮司機(jī)的情況(價(jià)格等指標(biāo)),以及未來一段時(shí)間內(nèi)其他更多乘客和司機(jī)的需求供給匹配的問題,即:站在全局視角,盡量去滿足盡可能多的出行需求,保證乘客的每一個(gè)叫車需求都可以更快更確定的被滿足,并同時(shí)盡力去提升每一個(gè)司機(jī)的接單效率,讓總的接駕距離和時(shí)間最短。

仔細(xì)拆解問題來看,這里面又分為如下一些問題:
(從算法策略角度 & 問題規(guī)模 - 如果考慮全國的規(guī)模,每次匹配幾千乘客與司機(jī),每天幾千萬單)
- 是否單單匹配?如果不是,而進(jìn)行批量分單匹配的話,先拿出哪些乘客訂單進(jìn)行匹配?多久匹配一次?并以多大的batch size進(jìn)行乘客訂單和司機(jī)進(jìn)行匹配?
- 打分和分派,如何考慮業(yè)務(wù)約束。比如,等級高的司機(jī)比較等級低的司機(jī)有更多的派單機(jī)會(huì);某類司機(jī)只接某個(gè)區(qū)域范圍內(nèi)的單;特定場景下,乘客單可以在不同司機(jī)類別之間跨層轉(zhuǎn)(快車單給專車);
(從系統(tǒng)角度)
- 在匹配計(jì)算時(shí),分單引擎所使用的機(jī)器資源該如何分配?全國的訂單一起匹配?還是按城市/地理區(qū)域錯(cuò)開進(jìn)行匹配?
- 匹配時(shí),所需要的數(shù)據(jù)和計(jì)算任務(wù)量,該以哪種計(jì)算模型計(jì)算才能更好的利用資源?
- ... ...
上述要點(diǎn)都是關(guān)鍵的問題,其背后也隱藏著諸多其他相關(guān)復(fù)雜的制約和影響因素(如性能指標(biāo)、資源利用率、系統(tǒng)穩(wěn)定性、數(shù)據(jù)的一致性和正確性)。待后續(xù)不斷的拆解,補(bǔ)充。