創(chuàng )澤機器人 |
CHUANGZE ROBOT |
外賣(mài)履約時(shí)間預估(OFCT:Order Fulfillment Cycle Time)問(wèn)題相比一般的時(shí)間預估問(wèn)題而言更為復雜,其中存在餐廳與用戶(hù)的供需關(guān)系、餐廳出餐時(shí)間的未知性以及騎手行為的不確定性等問(wèn)題。在論文中我們向學(xué)術(shù)界首次詳細介紹外賣(mài)履約時(shí)間預估這一問(wèn)題,并給出了有效的解決方案,后得到了審稿人的一致認可。
通過(guò)逐步拆解整個(gè)外賣(mài)履約(履約:餓了么平臺保障騎手能夠將外賣(mài)準時(shí)送達給用戶(hù))的過(guò)程,我們分析了外賣(mài)履約時(shí)間預估相比常見(jiàn)的其他送達時(shí)間問(wèn)題(例如打車(chē))的顯著(zhù)差異,并針對影響履約時(shí)間長(cháng)短的特征進(jìn)行了解釋和說(shuō)明。對于用戶(hù)而言可能只是看到外賣(mài)需要多久才能吃到,而在這背后需要我們提煉出豐富的影響因素,來(lái)保證履約時(shí)間預估的準確性。我們將這些影響因素輸入深度神經(jīng)網(wǎng)絡(luò )來(lái)推斷它們和履約時(shí)長(cháng)的關(guān)系,同時(shí)我們進(jìn)一步引入了餐廳、用戶(hù)地址以及騎手的隱向量來(lái)增強模型的預測性能。后,我們提出一個(gè)新穎的后處理神經(jīng)網(wǎng)絡(luò )算子,用于改善模型的收斂速度和準確度。我們所介紹的模型已在餓了么實(shí)際部署,每天服務(wù)于千萬(wàn)用戶(hù)。
背景介紹
履約時(shí)間預估模型預估的是從用戶(hù)下單到騎手將訂單送達用戶(hù)手上的這段時(shí)間(即預計送達時(shí)間)。餓了么平臺每天產(chǎn)生千萬(wàn)級訂單量,時(shí)間預估作為即時(shí)配送的其中一環(huán),既影響用戶(hù)體驗同時(shí)也涉及到騎手履約,因此其準確性對平臺而言至關(guān)重要,既不能預估的太長(cháng)(影響用戶(hù)體驗),也不能預估的太短(騎手無(wú)法按時(shí)完成配送)。下圖為時(shí)間預估涉及的各個(gè)環(huán)節。
主要環(huán)節包括:
用戶(hù):用戶(hù)從下單到訂單送達其手中。對于每一位用戶(hù)而言,肯定是希望能夠準時(shí)拿到下單的餐品。
餐廳:餐廳從接受訂單到備餐完成。餐廳需要做到盡快完成備餐,這樣才能夠不影響騎手取餐及配送,如果騎手到達餐廳的時(shí)候需要等待很久的時(shí)間才能取走餐品,那么騎手容易焦慮,一部分用戶(hù)也會(huì )在餓了么App上催促騎手。
騎手:騎手從接收到訂單到完成配送。其中包括騎手到達餐廳,然后從餐廳處取走訂單對應的餐品。同時(shí),騎手可能從餐廳處取多餐,因此需要等拿到所有訂單騎手才會(huì )離開(kāi)并進(jìn)行配送。
平臺:餓了么平臺需要從中協(xié)調用戶(hù)、餐廳、騎手并兼顧配送效率。這其中包括訂單指派與路徑規劃。訂單指派是指將訂單分給附近合適的騎手,而路徑規劃是指給騎手推薦合理的取送路徑,此路徑需要同時(shí)考慮騎手配送距離和訂單超時(shí)風(fēng)險。
下圖即為大家日常在餓了么上面點(diǎn)外賣(mài)的時(shí)候能夠看到的信息,其中配送時(shí)間就是我們履約時(shí)間預估模型計算出的。Estimated Time of Arrival (ETA)即“預估送達時(shí)間”,一般預估的是從出發(fā)地到目的地的時(shí)間,打車(chē)場(chǎng)景中的預估送達時(shí)間即為一類(lèi)典型的ETA問(wèn)題。
本文提出的外賣(mài)履約時(shí)間預估模型,預估的是從用戶(hù)下單開(kāi)始到騎手將餐品送達用戶(hù)手中所花的時(shí)間,用戶(hù)在餓了么點(diǎn)了外賣(mài)以后,訂單在平臺開(kāi)始流轉的過(guò)程如下圖所示。
外賣(mài)履約時(shí)間預估相比預估送達時(shí)間而言更為特殊,主要體現在以下兩方面:
1 需要考慮更多影響因素
一般的預估送達時(shí)間問(wèn)題僅需考慮天氣、交通狀況,時(shí)空信息及路徑信息等,而外賣(mài)履約時(shí)間預估問(wèn)題除了考慮此類(lèi)信息外,還需考慮餐廳的地理位置,餐廳訂單備餐時(shí)間以及調度系統派單等信息。
2 無(wú)法獲取關(guān)鍵信息
用戶(hù)下單成功時(shí)餓了么已經(jīng)為用戶(hù)預估出預計送達時(shí)間,而此時(shí)訂單并未被騎手接單,騎手需要被系統指派才能開(kāi)始取餐和配送,因此我們無(wú)法提前獲取騎手的信息及其實(shí)際的配送路徑。
以上兩方面的差異給外賣(mài)履約時(shí)間預估問(wèn)題的準確性帶來(lái)J大的挑戰。
外賣(mài)履約時(shí)間預測一般需要哪些特征
為了建模外賣(mài)履約時(shí)間,一般需要充分利用與訂單信息相關(guān)的數據,具體包括:
空間特征:包括大量id類(lèi)特征,例如用戶(hù)所在區域id,餐廳id,城市id及網(wǎng)格id等。
時(shí)間特征:包括小時(shí)時(shí)刻,當天是否工作日等,如下圖(a)。
描述訂單大小的特征:包括訂單對應的菜品數量以及訂單價(jià)格等。
大家應該會(huì )好奇訂單價(jià)格會(huì )對外賣(mài)時(shí)間長(cháng)短造成什么影響?當用戶(hù)下單的金額較G時(shí)通常餐品對應的重量或體積較大,比如用戶(hù)預訂了蛋糕或者集體點(diǎn)了很多杯奶茶,這種總金額G的訂單對于騎手而言屬于難配送訂單,因此需要花費較長(cháng)的履約時(shí)間。下圖(b)展示出了這種相關(guān)性,可以看到訂單價(jià)格的G低在一定程度上可以刻畫(huà)出訂單是否難配送的隱含信息。
供需關(guān)系對履約時(shí)長(cháng)的影響
從平臺角度看,用戶(hù)下單量和餐廳接單量不同時(shí)刻都在發(fā)生劇烈變化,這種供需維度上的變化對實(shí)際配送時(shí)長(cháng)會(huì )造成J大影響。
在介紹供需特征構造的工作前,先為大家介紹外賣(mài)配送中“波次”的概念:對于騎手身上的一組訂單,對給定的一組訂單取送順序進(jìn)行分組,保證每組中所有相關(guān)訂單的取和送行為都在該組中,該分組則為騎手當前配送的波次。針對供需變化,我們構造了基于時(shí)段的供需比和完成率等特征。當供需比越G時(shí)波次的平均長(cháng)度會(huì )變長(cháng),此時(shí)履約時(shí)間越長(cháng)。
另一方面當完成率越G時(shí)可以推斷出騎手完成配送的訂單越多,此時(shí)騎手可以繼續承接系統接下來(lái)分派的訂單。
此外,我們通過(guò)餐廳當前待取餐單量(餐廳接單后等待騎手來(lái)取的訂單數)來(lái)刻畫(huà)餐廳的繁忙程度,當餐廳接單數變多而產(chǎn)能受限時(shí)會(huì )導致訂單積壓,此時(shí)如果騎手已經(jīng)到達餐廳則需要花費較長(cháng)的等待時(shí)間才能取到餐品,相應的當餐廳變繁忙時(shí),模型預估的履約時(shí)間將變長(cháng)。
餐廳的出餐時(shí)間
訂單的出餐時(shí)間是外賣(mài)履約時(shí)間預估模型的一個(gè)重要影響因素,這個(gè)特征我們是通過(guò)聚合餐廳的歷史出餐時(shí)間得到的。但目前存在的難點(diǎn)問(wèn)題對出餐時(shí)間計算的準確性帶來(lái)J大考驗,主要包括:
餐廳在備餐完成后缺乏人力來(lái)逐單點(diǎn)擊出餐按鈕,導致我們平臺不能完全搜集到餐廳出餐的真實(shí)值,因此我們目前主要依靠系統采集的騎手點(diǎn)擊出餐數據來(lái)標記餐廳的真實(shí)出餐時(shí)間。
餓了么平臺目前主要計算的是餐廳在餓了么App產(chǎn)生的訂單,缺乏餐廳在其他渠道產(chǎn)生的訂單或堂食訂單數據,因此較難獲取餐廳的實(shí)際供需情況。
餐廳的真實(shí)出餐時(shí)間具有較大的隨機性。例如餐廳針對某些餐品可能會(huì )提前進(jìn)行備餐,這部分提前備好的餐品可以立即出餐。而對于用戶(hù)下單時(shí)餐廳需要現做的餐品,騎手到達餐廳后可能需要等待一段時(shí)間才能取到餐,這部分現做的訂單真實(shí)出餐時(shí)間將會(huì )偏長(cháng)。
訂單的先后順序不一定表示餐廳出餐的先后順序。由于餐廳灶臺數量有限,相應的灶臺只會(huì )處理固定的菜品,因此在一批訂單中如果出現相同的菜品,后廚會(huì )選擇一起做,這種情況下部分訂單的出餐時(shí)間會(huì )明顯偏短。
在實(shí)際運用時(shí),我們是根據商家接單時(shí)間到騎手實(shí)際點(diǎn)擊取餐時(shí)間來(lái)計算商戶(hù)的真實(shí)出餐時(shí)間,而這其中存在一部分噪音數據:
騎手接單后即刻點(diǎn)擊到達餐廳
騎手接單后即刻點(diǎn)擊取餐按鈕
此外,對于一部分訓練樣本,我們認為騎手在取到餐品時(shí)實(shí)際上餐廳已經(jīng)備餐完成,例如騎手晚取餐或騎手同時(shí)點(diǎn)擊取多餐。針對這些數據我們在計算餐廳出餐時(shí)間特征時(shí)進(jìn)行了一定比例的剔除。
如何合理利用騎手信息
餓了么從平臺角度出發(fā),將每個(gè)城市劃分成了以“網(wǎng)格”為小單元的不同區域,每個(gè)蜂鳥(niǎo)配送站點(diǎn)內的騎手會(huì )服務(wù)于站點(diǎn)周邊范圍內固定的若干個(gè)網(wǎng)格,騎手對站點(diǎn)輻射的網(wǎng)格內的商圈或者小區的熟悉程度決定了其配送效率。從下圖大家可以看到,因為騎手對餐廳所在位置、用戶(hù)所在小區都比較熟悉,因此在取餐或者配送的過(guò)程中并沒(méi)有發(fā)生繞路的情況。
而用戶(hù)下單成功時(shí)餓了么App會(huì )立刻為用戶(hù)顯示外賣(mài)預估履約時(shí)間,此時(shí)訂單指派給具體哪位騎手來(lái)配送是未知的。為了充分利用與騎手相關(guān)的影響因素,我們根據騎手取餐距離、騎手當前接了多少訂單等特征來(lái)表征訂單可能被接單的每一位騎手,然后將可能接單的騎手序列進(jìn)行特征編碼傳入外賣(mài)履約時(shí)間預估模型中,隨后利用注意力機制提取騎手序列信息,以此來(lái)增強模型的預測能力。
多維度相似訂單的配送段 ETA
配送段ETA指的是預估騎手到達目的地(用戶(hù)所在位置)附近下車(chē)后將餐品送到用戶(hù)手中所花的時(shí)間,是騎手配送的終環(huán)節。
為了估算配送段ETA,我們理論上可以直接采用回歸模型來(lái)學(xué)習,但是常用的回歸模型通常將輸入轉化為一系列的特征,并且通過(guò)有監督學(xué)習找到這些影響因素和輸出目標之間的關(guān)系,為了方便學(xué)習和提G模型泛化能力通;谏窠(jīng)網(wǎng)絡(luò )和集成樹(shù)模型將這些關(guān)系參數化為一個(gè)平滑的函數,但這種平滑假設的缺點(diǎn)是無(wú)法很好的處理長(cháng)尾不規律case,可能會(huì )影響用戶(hù)體驗。例如當騎手送餐需要乘坐G層電梯時(shí),如果遇上G峰期,可能需要等待很長(cháng)的時(shí)間,而系統很難做到這種實(shí)時(shí)的預判。從下圖可以看出,騎手送餐時(shí)在樓內花了7.6分鐘。
為了部分緩解這種問(wèn)題,我們借鑒了近期基于記憶的語(yǔ)言模型[1]的思想,將歷史訂單作為配送段時(shí)間預估的語(yǔ)料,通過(guò)構造多維特征來(lái)表征每個(gè)歷史訂單,當新的訂單產(chǎn)生時(shí)我們基于K近鄰來(lái)搜索出與新訂單相似的若干個(gè)歷史訂單,然后對這若干個(gè)相似單的真實(shí)配送段時(shí)間做加權平均,以此作為新訂單的預估配送段時(shí)間。終我們將基于K近鄰搜索出的預估配送段時(shí)間作為特征輸入外賣(mài)履約時(shí)間預估模型中。
針對長(cháng)尾數據如何解決
時(shí)間預估本質(zhì)上屬于回歸問(wèn)題,在訓練模型的過(guò)程中我們發(fā)現模型收斂較慢且交叉驗證的表現偏離預期,通過(guò)分析原因我們發(fā)現模型擬合的數據分布與真實(shí)履約時(shí)間的分布發(fā)生了偏移,真實(shí)的履約時(shí)間實(shí)際上是一個(gè)右偏長(cháng)尾的分布,相當于有一小部分訂單真實(shí)的配送時(shí)間偏長(cháng)而模型沒(méi)有學(xué)習到,針對此問(wèn)題在本文中我們提出了一個(gè)新穎的后處理神經(jīng)網(wǎng)絡(luò )算子,針對外賣(mài)履約時(shí)間預估模型的擬合結果進(jìn)行縮放和變換,用于改善模型的收斂速度和準確度。此后處理算子可描述為:
![]() |
機器人招商 Disinfection Robot 機器人公司 機器人應用 智能醫療 物聯(lián)網(wǎng) 機器人排名 機器人企業(yè) 機器人政策 教育機器人 迎賓機器人 機器人開(kāi)發(fā) 獨角獸 消毒機器人品牌 消毒機器人 合理用藥 地圖 |