自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

時效準(zhǔn)確率提升之承運(yùn)商路由網(wǎng)絡(luò)挖掘

網(wǎng)絡(luò) 通信技術(shù)
得物履約場景中,主要的階段包括倉庫內(nèi)生產(chǎn)和第三方承運(yùn)商配送。在用戶支付時,得物會根據(jù)倉庫的生產(chǎn)情況和運(yùn)配資源,給用戶一個承諾時效。

1、引子

履約時長是電商的生命線,直接關(guān)系到用戶的消費(fèi)體驗。新華網(wǎng)[5]2022年雙十一的報告顯示,37.4%的受訪者希望次日達(dá),29.91%希望當(dāng)日達(dá)。相較于其他物品,受訪者對手機(jī)、電腦、數(shù)碼產(chǎn)品的物流時效要求更高,更希望當(dāng)日或1-2天內(nèi)能收到貨。

得物履約場景中,主要的階段包括倉庫內(nèi)生產(chǎn)和第三方承運(yùn)商配送。在用戶支付時,得物會根據(jù)倉庫的生產(chǎn)情況和運(yùn)配資源,給用戶一個承諾時效。

1.1 為什么要預(yù)測承運(yùn)商的線路時效

在履約過程中,得物需要監(jiān)控訂單的流轉(zhuǎn),及時的發(fā)現(xiàn)可能超時的訂單(與和用戶承諾時效相比),這里包含倉庫生產(chǎn)的監(jiān)控和三方配送的監(jiān)控。在實際過程中我們發(fā)現(xiàn):配送節(jié)點發(fā)生變更時,承運(yùn)商給的預(yù)測偏保守的。下面例子中,到了營業(yè)部承運(yùn)商才給到比較精準(zhǔn)的預(yù)計送達(dá)時間,故在分揀中心使用承運(yùn)商的預(yù)計送達(dá)時間容易出現(xiàn)誤報。


網(wǎng)點

離開時間

承運(yùn)商預(yù)計送達(dá)

xxx網(wǎng)點

2022-12-02 07:05:47

2022-12-10 22:00:00

A集貨分揀中心

2022-12-02 14:09:19

2022-12-10 22:00:00

B集貨分揀中心

2022-12-04 07:42:03

2022-12-10 22:00:00

C散貨分揀中心

2022-12-05 04:58:28

2022-12-09 22:00:00

D營業(yè)部

2022-12-05 08:47:58

2022-12-05 15:00:00

下圖是承運(yùn)商接口返回的預(yù)計送達(dá)時效的寬松指數(shù),可以看到在接近目的地時,承諾時效才比較準(zhǔn)確。

圖片

2、承運(yùn)商網(wǎng)絡(luò)是如何運(yùn)作的

在構(gòu)建承運(yùn)商網(wǎng)絡(luò)之前,需要先了解承運(yùn)商網(wǎng)絡(luò)是如何工作的。下面是從A網(wǎng)點到E網(wǎng)點的配送示意圖,分為以下內(nèi)容:

(1)節(jié)點,包含的攬收和派送網(wǎng)點以及分揀中心。

(2)線路,包括干線和支線。例如從網(wǎng)點到分揀中心屬于支線,從分揀中心到分揀中心屬于干線。

(3)班次:承運(yùn)商為了平衡成本和時效,會設(shè)置生產(chǎn)班次。到分揀中心之后,需要根據(jù)目的地進(jìn)行分揀,當(dāng)?shù)竭_(dá)一定量的貨物之后,會從分揀中心出發(fā),前往下一個節(jié)點。承運(yùn)商在設(shè)置班次的時候,會考慮單量,兼顧運(yùn)輸?shù)某杀疽约皶r效。

圖片

上圖中:以紫色為例,在A網(wǎng)點,早上8點截單,即8點之前交接給承運(yùn)商的貨物,會在8點20左右完成封車,然后從網(wǎng)點出發(fā),前往B分揀中心,到達(dá)B分揀中心的時間是11點40,這個時候趕上了B分揀中心截單時間為12點的班次,B分揀中心會在12:30完成分揀并前往下一個分揀中心,以此類推完成整個配送過程。

在構(gòu)建承運(yùn)商的網(wǎng)絡(luò)時,需要進(jìn)行建模。除了節(jié)點、線路和班次之外,核心還包括以下兩個模型:

(5)成品線,即從A網(wǎng)點到E網(wǎng)點經(jīng)過所有節(jié)點。上圖中:A網(wǎng)點-B分揀中心-C分揀中心-D分揀中心-E網(wǎng)點構(gòu)成了一條成品線。

(6)成品線波次:因為節(jié)點存在波次,所以成品線也存在波次,實際上成品線波次和第一個節(jié)點的波次數(shù)一樣。

3、如何構(gòu)建承運(yùn)商網(wǎng)絡(luò)

在了解承運(yùn)商網(wǎng)絡(luò)如何工作后,需要著手構(gòu)建承運(yùn)商的網(wǎng)絡(luò)。承運(yùn)商會將軌跡信息推送到得物,內(nèi)容類似以下的文本。

[
{
"code":"180",
"desc":"快件到達(dá)【xxx營業(yè)部】",
"location":{
"city":"xxx市",
"district":"xxx縣",
"point":{
"latitude":xxx,
"longitude":xxx
},
"province":"xxx"
},
"node":"已攬收",
"opeTitle":"站點裝箱",
"time":"2022-09-04 17:29:27"
},
{
"code":"xxx",
"desc":"收取快件",
"location":{
"city":"xxx",
"district":"xxx",
"point":{
"latitude":28.65,
"longitude":120.07
},
"province":"xx"
},
"node":"已攬收",
"opeTitle":"配送員完成攬收",
"time":"2022-09-04 17:29:27"
}
]

3.1 結(jié)構(gòu)化清洗

軌跡的文本,需要經(jīng)過結(jié)構(gòu)化的清洗之后,才能獲取軌跡的含義。對于每一個運(yùn)單,它的軌跡會經(jīng)過很多個節(jié)點,而每個節(jié)點的數(shù)據(jù)類型如下:

1. waybill_no 表示運(yùn)單號,同一個運(yùn)單號會有多條節(jié)點記錄
2. station_index 表示當(dāng)前這個節(jié)點的下標(biāo)
3. station_enum 表示這個節(jié)點的類型,是分揀中心還是攬派網(wǎng)點
4. station_name 表示節(jié)點的名稱,例如上面例子里的xxx營業(yè)部
5. station_status 表示這個節(jié)點的狀態(tài),例如是進(jìn)入還是離開
6. operate_time 表示當(dāng)前節(jié)點的操作時間

3.2 軌跡里面是否真的有班次信息

承運(yùn)商網(wǎng)絡(luò)工作原理提到了承運(yùn)商會按班次進(jìn)行生產(chǎn),從軌跡的結(jié)果里面是否能找到班次生產(chǎn)的證據(jù)呢。通過分析,我們猜想:相同流向(例如從A分揀中心開往B分揀中心)離開某個分揀中心(例如離開A分揀中心)的時間應(yīng)該是相對集中的。

實時上通過一些簡單的聚類方法,證實了我們的猜想。下面圖中,橫軸表示的是出分揀中心的小時,每一個點表示歷史上的某一個運(yùn)單,縱軸沒有業(yè)務(wù)含義,只是為了方便顯示。

圖片

繪制上述圖時使用的是kmeans聚類算法,kmeans聚類算法需要指定聚類的個數(shù)。故需要使用Knee/Elbow這類的算法進(jìn)行聚類數(shù)檢測,同時它對異常值敏感,故在實現(xiàn)時最終使用的DBSCAN。

圖片

3.3 聚類參數(shù)該如何選取

DBSCAN雖然不需要指定聚類的個數(shù),但是需要指定點之間的距離以及點的密度,通過反復(fù)調(diào)整,最終確定這兩個核心的參數(shù)如下:

clustering = DBSCAN(eps=0.25, min_samples=max(5, int(x.size * 0.02)), metric=metric).fit(x_after_reshape)

其中eps為0.25,即15分鐘。點密度為5和總數(shù)的2%的最大值。

3.4 如何解決跨天的問題

從上面聚類圖看,同一個波次的點可能出現(xiàn)跨天的情況,即有些點出分撥中心的時間可能是23:50,有些分撥中心的點可能是00:10。這兩個點的歐式距離比較大,故需要重寫距離的metrics函數(shù)。

def metric(x, y):
ret = abs(x[0] - y[0])
if ret > 12:
ret = abs(24 - ret)
return ret

3.5 線路是如何串聯(lián)的

分析節(jié)點的生產(chǎn)班次和線路的班次是不夠的,還需要將它們進(jìn)行串聯(lián),得到成品線班次,這樣才能在售前或者售中進(jìn)行應(yīng)用。這里在處理的時候進(jìn)行了一些簡化,一方面是分揀中心的分揀波次是沒有辦法識別到的,另外一方面其實可以不用關(guān)注分揀中心的分揀波次。

實際上,串聯(lián)成品線班次的過程是這樣的:

圖片

核心的代碼如下:

for (int i = 1; i < tmp.getResourceList().size(); ++i) {
List<NetworkResourceWaveDTO>
next = tmp.getResourceList().get(i)
.getWaveList();
next.sort(Comparator.comparing(NetworkResourceWaveDTO::getOffTime));
boolean match = false;
for (NetworkResourceWaveDTO nextWave : next) {
if (nextWave.getOffTime() > p.getEndTime()) {
match = true;
duration += nextWave.getDurationDay();
p = nextWave;
break;
}
}
if (!match) {
duration += next.get(0).getDurationDay() + 1;
p = next.get(0);
}
productLineWave.add(p);
}

3.6 四級地址與攬派網(wǎng)點的關(guān)系是如何建立的

從應(yīng)用的角度,輸入條件是買家的四級地址,但承運(yùn)商網(wǎng)絡(luò)的終點是派送站點,故需要建立承運(yùn)商派送站點和四級地址的映射關(guān)系。映射關(guān)系的建立比較簡單,取過去一段時間負(fù)責(zé)派送該四級地址的站點中,派送該地址單量最多的那個。

4、工程落地的挑戰(zhàn)

Part 3更像是一個理論家的滔滔不絕,那如何在工程上進(jìn)行落地呢?這里面包含了ODPS SQL的開發(fā)、UDF的開發(fā)以及DDD,總之需要十八般武藝。

4.1 如何在ODPS進(jìn)行簡單的機(jī)器學(xué)習(xí)

在班次分析的過程中,使用到DBSCAN的聚類算法。如果在odps上使用這些算法呢?實際上python里面已經(jīng)實現(xiàn)了DBSCAN算法,而odps支持使用python編寫UDF。只是目前odps的運(yùn)行環(huán)境并沒有安裝DBSCAN相關(guān)的包,故需要手動進(jìn)行安裝,安裝的教程可以參考阿里云的官方文檔

圖片

4.2 在線服務(wù)化的問題

上述清洗過程需要每天或者至少一周運(yùn)行一次,選取過去一個時間窗口的數(shù)據(jù)進(jìn)行訓(xùn)練,得到承運(yùn)商的網(wǎng)絡(luò),這樣才能及時的感知承運(yùn)商網(wǎng)絡(luò)的變化。這意味著會定時的更新成品線、成品線波次以及節(jié)點波次的信息,在在線服務(wù)化的過程中,我們是直接將數(shù)據(jù)這些數(shù)據(jù)存放在redis里面。為了不占用太多的內(nèi)存,通過使用hash數(shù)據(jù)結(jié)構(gòu)對內(nèi)存進(jìn)行了一些優(yōu)化,當(dāng)然hash的一個缺點是無法為field設(shè)置超時時間,這意味著某個key的某個field數(shù)據(jù)實際已經(jīng)是過期數(shù)據(jù)了,但是它不會被刪除,進(jìn)而造成泄漏,但這種泄漏可以通過其他技術(shù)手段解決。

5、進(jìn)展與規(guī)劃

目前我們已經(jīng)構(gòu)建了第三方承運(yùn)商網(wǎng)絡(luò),首網(wǎng)點預(yù)測的準(zhǔn)確率在65%左右,末分揀預(yù)測的準(zhǔn)確率在85%左右。未來持續(xù)優(yōu)化點包括:班次聚合(對于一些數(shù)據(jù)比較稀疏線路,需要做班次的聚合)、時間衰減(清洗數(shù)據(jù)需要選取過去一段時間的數(shù)據(jù),對于太久遠(yuǎn)的數(shù)據(jù),應(yīng)該進(jìn)行衰減,使得它在結(jié)果中的貢獻(xiàn)小一些)等,相信準(zhǔn)確率能有進(jìn)一步提升。

圖片

圖片

6、參考文獻(xiàn)

[1]. Knee/Elbow Point Detection

[2]. arvkevi/kneed

[3].https://datascience.stackexchange.com/questions/46106/kmeans-vs-dbscan

[4]. https://redis.io/docs/management/optimization/memory-optimization/

[5]. 用戶調(diào)研:今年11.11消費(fèi)者最關(guān)注“確定性” 京東是八成用戶首選-新華每日電訊

責(zé)任編輯:武曉燕 來源: 得物技術(shù)
相關(guān)推薦

2022-04-13 10:31:04

微軟Jigsaw大型語言模型

2020-04-26 15:35:49

神經(jīng)網(wǎng)絡(luò)決策樹ImageNet

2022-09-25 17:07:27

訓(xùn)練圖像

2021-05-23 09:51:29

代碼開發(fā)Facebook

2022-02-17 10:34:21

神經(jīng)網(wǎng)絡(luò)識別驗證碼

2023-10-14 17:24:49

2024-06-06 10:08:32

2021-10-11 17:27:50

框架計算機(jī)開發(fā)

2020-10-18 12:27:35

人工智能人臉識別技術(shù)

2018-06-08 15:51:56

CNN皮膚癌人工智能

2018-11-14 10:01:30

谷歌開源機(jī)器學(xué)習(xí)

2019-01-29 10:27:27

量子計算機(jī)芯片超算

2024-03-01 13:31:21

2025-04-08 09:00:00

AI模型數(shù)據(jù)

2024-09-12 13:50:00

模型訓(xùn)練

2023-10-26 08:40:15

模型隱私推理

2024-12-26 15:30:00

模型深度學(xué)習(xí)AI

2020-10-09 08:31:00

AI

2011-05-23 09:21:42

2024-11-21 10:21:06

點贊
收藏

51CTO技術(shù)棧公眾號