【竞赛总结】新冠期间饿了么骑士行为预估
智慧物流挑戰賽
賽題介紹
餓了么擁有幾十萬外賣員,幾百萬商家,每天外賣訂單幾千萬,服務幾億用戶。具體統計每天餓了么外賣員(藍騎士)行駛的距離累計可以繞地球400圈以上,這就是阿里巴巴本地生活今天的服務規模。
面對新型肺炎疫情,餓了么和廣大商家一起,全力組織防護用品供給,平抑價格,增加騎士運力,持續實施最高等級的衛生安全舉措,對騎手、餐箱、配送車輛、站點等消毒措施已全面升級,并進行專項督查。
在這些騎士背后,有一套智能調度系統,采用大數據平衡算法,實現自動化派單。阿里巴巴本地生活聚焦新冠疫情期間的騎士行為,邀請開發者為提高平臺的物流運營效率貢獻一份力量。
賽題獎勵
Top5選手將獲得天池獎牌、證書,以及精美禮品。
一等獎:1名,機械鍵盤
二等獎:2名,Kindle閱讀器
三等獎:2名,天貓精靈
阿里校招綠色通道:初復賽TOP20團隊有機會直投簡歷,簡歷直投郵箱。
外賣員綠色通道:優秀的參賽選手可體驗當地騎士工作。
賽題任務
在餓了么的配送場景下,騎士在外賣配送中的決策行為主要分為到店取單,到用戶處送單兩種行為。騎士在某一時刻會接收到分配給他的配送訂單,同時騎士身上也背負著之前分配給他還未完成的訂單。騎士會根據當前身上背負所有訂單狀態和自己所處的位置來決策下一步的任務。本項比賽的任務就是需要根據騎士歷史的決策信息,結合當前騎士所處的狀態來預測騎士的下一步決策行為。
在餓了么的業務場景下,商圈內的訂單和騎士都是相互獨立的,不會有重疊。每一輪的調度中,可以將所有訂單都進行分配,也可以根據需要將部分訂單保留至下一輪進行調度。
本次比賽的任務就是對訂單進行調度,分配給最合適的騎士,并預測騎士的后續行為及每個行為事件發生的具體時間。另外,選手可以對歷史訂單數據做挖掘,為調度提供有用的信息。
賽題數據
賽題會提供一部分歷史訂單數據,選手可以選擇是否利用這部分數據做挖掘。此部分數據包括訂單時間、訂單預期時間、訂單起始經緯度和訂單結束經緯度。
賽題評測是一個交互的過程,選手提交代碼,評測系統會下發訂單并使用選手代碼進行調度,并進行評分。由于賽題數據比較復雜,初賽與復賽的任務還有差異,為節約篇幅,詳細的數據介紹見比賽官網:
https://tianchi.aliyun.com/competition/entrance/231777/information
在初賽需要滿足取餐在送餐之前, 調度系統評測需要同時評測行為與時間的準確性,兩者進行加權求和。復賽調度系統評估指標為訂單平均配送時長和超時率的綜合指標,
第1名:成都-楓亭
第2名:新冠天敵
第3名:嗨多磨!
初賽的目標是對騎手的下一個動作和下一個動作完成的時間做預測。很明顯,存在兩個不同的目標:預測動作和預測時間。并且存在著邏輯先后關系:先有動作,再有時間。在這里我主要分享一下我們組對于第一個小任務:預測騎手動作的思路,因為預測時間相對來說更簡單一些。
首先,我們認為,判定一個動作,僅僅通過這個動作本身的相關屬性是遠遠不夠的,需要對所有的候選項通盤考量。也就是說,我們認為這個任務的重點是分析與提取某一個動作候選項與其他動作候選項(context)的關系。其中,context中可能有不定多個條目(動作候選項),并且,我們還希望獲得一個對context的條目順序無關的表示。
我們從一下兩個方面去解決該難題
我們的總體的解決思想是將一個動作與一個動作之間的關系轉化為一個排序問題:我們對每個動作進行打分,這個分值代表著這個動作的緊急程度,我們希望騎手選擇的動作的分值盡量比其他動作的分值要大并且盡量擴大這個間隔。
我們對context進行化簡:將context的大小化簡為1,徹底消除順序問題。具體講,我們選擇地理上離當前動作目標地點最近的動作作為context,因為我們認為騎手在規劃訂單的時候,會比較多地考慮一i個訂單和附近進的訂單。
基于排序以及context化簡的思想,我們的模型闡述如下:我們的模型基本結構是一個mlp模型,候選動作與其context疊加后送入共享參數的mlp模型進行打分。打分完成后,經過softmax對其進行歸一化,并使用negative log loss 進行優化,negative log loss可以極大化正確選項的得分并且極小化不正確選項的得分,從而達到排序效果。
復賽我們采用的是簡單貪心派單策略,總體pipeline如圖3所示
根據騎手-訂單(組)生成訂單對
按照cost從小到大排序,依次模擬派單
原因是該方法比較迅速,在一個復雜度為主要限制的情況下,可以給算法的其他部分留下充足的時間。一些更加全面的方法都有一定的應用局限性或者復雜度較高,比如:二分圖最有匹配算法,計算騎手與訂單的整體cost最小的匹配。
第4名:一鳴驚人
初賽目標:預測騎手的下一步動作(挑選后續動作中騎手最可能做的動作)
將行動與之后的行動兩兩組合在一起,如果是緊接著的行動,則結果為True,否則為False;
根據業務規則,排除不可能連續的行動,如5、6為同一個訂單的取餐和送餐,則5還沒發生,6必然不可能發生,故1 6、2 6等等都是不可能的,排除;(背單上限后不能再取餐、訂單還沒開始等都是不合理的)
按上一個行動分組,如果后續可選擇動作只有1個,故沒有比較的參考價值,排除;
同理,預測集中已完成的行動也可用同樣的方法生成訓練集;
而預測集中需要預測的那一個節點,用同樣的過濾方法生成預測集;
提取特征
行為類型、距離、新老騎手、騎士速度、背單能力、天氣、
離期望時間(預計取餐時間或送達時間)相差時間 即剩余時間、
離開始時間(分配時間或取餐時間)相差時間 即已開始時間、
及在所有待選擇行動里的相對距離和相對剩余時間
(還可以考慮更多如:背單數等)
帶入模型
用五折lgb分類模型預測待選擇行動中概率最高的一個為下一個行為
提取所有正樣本用五折lgb回歸模型預測這個行為所需要消耗的時間,加上上一個行動時間即為預測時間
復賽目標:合理安排騎手,平均配送時長盡可能短、超時運單數盡可能少;思路:優先滿足盡可能多的運單準時送達;策略:先分配能準時送達的運單,再分配無法準時送達的運單。
遍歷所有騎手與未分配運單,通過窮舉所有行動方式判斷該騎手增加該運單后,能否準時送達;
最優先運單:能準時送達的騎手數最少;
在能準時送達的騎手里隨機挑選一個;
重新計算分配的騎手能否完成之前可以準時送達的運單;
不能準時送達的放在行動鏈最后面;
將在行動開始時間在下一個調度周期前的行動記錄下來,若是最后一輪,則全部行動記錄下來,準備發送給服務器;只有當運單的相關行為被記錄下來,才認為該運單已分配;
窮舉路徑
每個騎手分配的運單不能過多,過多的運單將導致復雜度激增;
只需要找到一條可行的路線,則終止窮舉返回;
盡早的發現路線的不可行,每進行一步,都需要判斷
取了餐的運單 -> 當前時間 小于 送達時間
未取餐的運單 -> 當前時間 小于 送達時間 減 取餐到送餐所需要花費的時間
未超出背單上限;
大量重復的數據可提前算好,如送餐所需時間等;
記錄騎手無法完成的運單,以免重復計算;
到店行為和取餐行為可以放在一起;
第5名:北京科技大學
初賽騎手在面臨行為決策時,存在多個待取訂單和多個待送訂單,我們團隊將騎手行為預測問題分為兩個階段進行解決。
階段一:騎手決策時,先考慮從多個需要取的訂單中選出最有可能取的訂單,和從多個需要送的訂單中選出最有可能送的訂單,稱之為“選單階段”
階段二:騎手在經過階段一的選單后,進行取單還是送單的決策,確定最終的行為,稱之為“決策階段”
復賽主要思路,讓騎士盡可能在一個小范圍商家區域內取單,每個只取用戶距離比較相近的單子,取完一些訂單后,在統一進行送單。這樣騎士就盡可能在起點終點兩點直線配送。
因此需要對商圈內的商家進行聚類,以及商家對應的用戶進行聚類。同時,由于不同的商家,訂單產生量在時間上有差異,比如有的是賣早餐,有的賣午餐,用戶群體不同,學生,上班白領,用餐時間也有差異。因此引入時間變量,不同時間段內單獨進行聚類。整體方案由動態區域劃分的規則模型和調度模型構成,詳細思路如下圖所示。
第6名:正方形的園
比賽完整分享,請訪問http://coggle.club
或點擊閱讀原文,直達分享鏈接!
總結
以上是生活随笔為你收集整理的【竞赛总结】新冠期间饿了么骑士行为预估的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NLP】ACL2020 | 词向量性别
- 下一篇: 【深度学习】从零开始 Mask RCNN