趙振強 張立濤 王文釗 胡子博(山東理工大學管理學院 山東 淄博 255000)
生鮮農產品作為人們日常生活中的必需品,其品質和安全一直受到高度重視。為了減少生鮮農產品的損耗,保證質量,需要在庫存、配送等環節不斷改進。伴隨著新零售的提出,新技術的發展,出現了一種前置倉模式,前置倉模式具有合理庫存、短距離配送的優勢,能夠提高配送效率,保證生鮮品質,減少損耗。在前置倉模式的探索中,以線上線下一體化布局的盒馬鮮生和專注生鮮電商的每日優鮮最為突出。盒馬鮮生建立集餐飲、超市、物流為一體的體驗店,每日優鮮打造“前置微倉”,兩者都是利用大數據、新技術讓商品盡可能地縮小與消費者的距離。這種多級倉儲、多級配送模式,即前置倉模式,將成為生鮮行業配送發展的新出路。在前置倉模式的實施中,如何選址是關鍵所在。從目前的研究來看,更多集中在模式探討方面,缺乏具體的實施方案,僅有部分文獻提及了依靠訂單密度、靠近用戶集中區等因素。從前置倉要實現的功能價值來看,顧客需求量是影響前置倉選址的重要因素,根據顧客需求來確立前置倉的數量和位置,既能提高顧客滿意度又能為生鮮電商節省運營成本。因此本文構建了一個基于顧客需求量分布的前置倉選址模型,為前置倉選址提供借鑒和參考。
前置倉模式以分布式倉儲代替傳統中心倉,選址主要以靠近消費者為主,形成半徑3 km的圓形覆蓋網。中心倉按照智能倉儲系統的指示通過冷藏車為前置倉補貨,前置倉負責一定范圍內用戶訂單即時配送。張靖宜等[1]提出前置倉模式的構想,打造多級分倉的網絡體系和多級配送的模式,把商品提前放到離消費者最近的倉庫或門店,實現最合理的庫存。吳勇毅[2]指出由于消費者對物流及時性和便利性的要求越來越高,電商逐步演進出以“店倉一體(含前置微倉)”為核心的物流配送模式。貨品并不需要從電商的中央倉庫里發貨,而是從最靠近消費者的實體店發貨,以實現“分鐘級”的即時配送。關于選址設想,高慧[3]認為前置倉的科學設置,應該在參照數據預測的同時考慮與當地實體門店進行合作。邢惠淳[4]分析案例后指出,盒馬鮮生的線下門店大都布局核心商圈,每日優鮮基于訂單密度設立“前置微倉”。
通過文獻分析發現前置倉模式配送相比配送中心配送更具有及時性和便利性,省去了配送中心到自提點的配送環節,同時也更加注重顧客需求。前置倉的建立主要根據消費者需求量分布,參照顧客需求量預測,布局訂單密度核心區域,但是相比于生鮮農產品配送中心和自提點具體的選址模型的研究較少。
關于生鮮農產品的選址研究,李鵬[5]采用GM(1,1)預測算法對各個區域的生鮮食品需求量進行預測,確定候選配送中心地址,然后構建模型從運輸成本、固定建設成本、生鮮損耗成本等方面確定最佳選址。梁海紅[6]通過線性規劃理論,基于系統成本最小化對生鮮農產品物流配送中心進行優化選址模型構建,并應用啟發式算法求得最優解,展開算例分析。Orjuela-Castro等[7]針對易腐食品農業供應鏈設施選址問題,提出一種混合線性規劃模型,除考慮總成本最小外同時考慮顧客地理區域及需求能力進行模型的構建求解。Drezner等[8]提出了一個結合庫存和位置決策的模型解決易腐產品配送中心選址問題,最小化的總成本包括從配送中心到銷售點的運輸成本以及銷售點的庫存相關成本。肖建華等[9]構建了基于非等覆蓋半徑的生鮮農產品配送中心選址優化模型,并采用遺傳算法進行求解。周翔等[10]根據顧客點的分布設計網格動態密度聚類算法,確定自提點的選址數量和備選位置;然后建立以顧客滿意度和最大覆蓋為雙目標的自提點逐漸覆蓋選址模型來實現自提點選址。陳義友等[11]為解決自提點選址問題,基于逐漸覆蓋理論,用凹凸函數刻畫消費者的滿意度,構建了基于逐漸覆蓋的自提點選址模型。齊艷等[12]從顧客對生鮮農產品配送具有較強時效性的要求角度出發,結合生鮮農產品對時間極其敏感的特征,建立了基于顧客時間滿意度的多目標配送中心選址模型。
從上述文獻中可以看出,學者們在研究生鮮農產品選址模型時,主要集中在兩個方面,一是以最小成本為目標的配送中心規劃選址,二是以顧客最大滿意度為目標的自提點覆蓋選址。同時,為了考慮生鮮農產品的時效性,有的學者加入了時間影響因素。這些選址方案雖然已很成熟,但不太適合前置倉的選址要求。
前置倉作為一個靠近消費者最近的配送站,相比單一的自提點建設成本較高,不適合考慮最大覆蓋度的選址模型。相比于傳統的配送中心由于配送距離較近,可以忽略配送過程中的損耗問題,并且前置倉有明顯的配送范圍,一個需求點將僅有一個前置倉負責配送。因此,除前置倉固定成本建設成本外,運輸成本為前置倉選址成本的主要因素,運輸成本由顧客需求量和配送距離決定,因此本文建立基于需求量聚類的多重心選址方法。
本文采用了兩個階段對前置倉選址進行研究。第一階段采用改進的DBSCAN聚類算法和K-means算法二次聚類確定前置倉建設數量,為了節省成本聚類算法求得孤立點將不再設置前置倉,可以采用第三方物流配送的方式,孤立點由第三方物流配送可以節省冷鏈配送的成本;第二階段建立以最小成本為目標的多重心法來實現生鮮農產品前置倉的選址,對每個聚類區域進行重心法求解,求得前置倉坐標位置和最小成本。最后通過算例驗證算法和模型的有效性。
在使用多重心法進行選址時,需要先將需求點分成多個子區域,在每個區域中使用重心法選址。由于要考慮需求量的分布,因此在劃分區域時采用改進的DBSCAN聚類算法,將需求量加入算法中實現聚類。需求量在實際中是動態變化的,本文在進行改進的DBSCAN聚類算法中僅僅考慮一定時段的需求量,由于前置倉配送范圍有限,DBSCAN聚類算法所劃分的區域有的會過大超出配送范圍,需要K-means算法二次聚類重新劃分范圍較大的區域。在構建重心法選址模型時,因為前置倉的建設成本為固定成本,不再加入目標函數中,也不考慮實際中不同地段的建設成本差異。
基于需求量聚類的多重心選址方法選址步驟:
(1) 數據的收集與處理。確定好需求點的橫坐標和縱坐標,預測估算需求點的需求量。
(2) 改進的DBSCAN聚類分區。運行基于My-Eclipse的JAVA程序,將數據代入處理,輸出結果。
(3) 將輸出結果用MATLAB繪制聚類效果圖。為每個點分類編號。
(4) 去除孤立點,將聚類區域超出前置倉配送范圍的區域使用SPASS進行K-means算法二次聚類,將所有需要設置前置倉的區域用MATLAB繪制聚類效果圖。
(5) 重心法程序分別求各聚類區域選址坐標,計算最小成本。
(6) MATLAB繪制各區域選址結果圖。得到最終選址方案。
基于需求量聚類的多重心選址方法的選址流程框架如圖1所示。

圖1 選址流程
聚類分析技術是一項廣泛應用于信息匹配、數據挖掘和圖像處理等領域的分析數據方法,基于密度的 DBSCAN 聚類算法因不僅能識別任意形狀、大小和數量的簇,而且對噪聲和數據的輸入次序不敏感等特點而被廣泛應用[13]。為了能夠識別噪聲點和不受初始值的影響,本文首先采用DBSCAN 聚類算法確定需設前置倉的聚類區域。DBSCAN算法是一種密度聚類算法,本文在原有的基礎上除坐標外加上一個新的變量需求量,密度值用范圍內點需求量的和代替范圍內點的個數。使算法可以根據顧客需求量的分布進行聚類。
算法的設計思路:根據需求點的位置坐標來確定數據對象,通過每個數據對象的鄰域來尋找類別。如果一個數據對象p的鄰域包含的數據點的需求量之和不小于Minpts(最小密度),則創建1個數據點為p的核心對象。然后使用該方法反復尋找從這些核心對象直接密度可達的對象,當沒有新的數據對象添到任何類別的時候,聚類過程結束。
3.1.1算法定義
(1) 鄰域:給定數據對象p以r為半徑的區域。
(2) 密度:DBSCAN聚類算法將數據對象的個數作為密度值,本文將數據對象個數的需求量之和作為密度值。
(3) 核心對象:一個數據對象p的鄰域包含的數據點的需求量之和不小于Minpts。
(4) 直接密度可達:對象p為核心對象,對象q在對象p鄰域內,則對象q是對象p直接密度可達的。
(5) 密度可達:對象q是對象p直接密度可達的,對象o是對象q直接密度可達的,則對象o是對象p密度可達的。
(6) 噪聲點:一個對象不在任何一個類別,稱為孤立點數據,即噪聲點。
3.1.2數據初始化
(1) 設置屬性:r為半徑參數;MinPts為鄰域密度閾值;Cluster為聚類值;Noise為噪聲點;IsVisit為是否已訪問。其中:Cluster的初始值為0,Noise的初始值為False,IsVisit的初始值為False。
(2) 設置需求點屬性:編號,橫坐標,縱坐標,需求量。橫坐標和縱坐標為需求點的坐標,根據坐標確定需求點數據對象位置。
3.1.3算法步驟
算法的具體步驟如下:
(1) 輸入各個需求點的屬性值,各個需求點為未被訪問。輸入設立的半徑參數r和鄰域密度閾值MinPts。
(2) 從編號第一個需求點p1開始判斷,IsVisit屬性修改為True,判斷其半徑為r的鄰域的需求點的需求量之和是否超過閾值,未超過,Noise修改為True,為噪聲點,否則Cluster修改為1,為第一個聚類集,p1即是核心對象。
(3) 遍歷p1鄰域的點,若未被訪問,則IsVisit屬性修改為True,同樣判斷各點鄰域的需求量之和是否超過閾值,若為超過將其歸為p1的聚類集,若超過閾值,重復上述判斷,直到不能添加新的數值加入為止。
(4) 對未被訪問的需求點,即IsVisit為False的點,重復步驟(2)和步驟(3)判斷聚類集的過程,依次生成新的聚類集,直到將所有點訪問完成。
(5) 算法結束,得到多個聚類區域和幾個噪聲點。
一個前置倉的配送范圍是有限的,在進行DBSCAN聚類的時候,會出現一些較大的區域,可采用K-means聚類算法進行二次聚類,來確定需要設立前置倉的數量。算法步驟如下:
(1) 確定前置倉的覆蓋半徑r及其配送范圍。
(2) 根據每個聚類區域的跨度和前置倉配送范圍確定該區域設置的前置倉個數。
(3) 根據每個聚類區域前置倉的個數,確定K-means聚類算法k的值,k的值就是前置倉的個數,因為K-means聚類算法受初始點的影響較大[14],為了保證劃分更加精確,令每個聚類區域需求量大的分散的點為初始點。
(4) 對每個聚類區域進行K-means算法二次聚類,獲得多個聚類區域。
(5) 算法結束,可以得到需要設立前置倉的個數及其所在的區域。
通過兩次聚類結果便可得到需要設立前置倉的多個區域,對每個區域進行前置倉的選址求解。根據前文對前置倉的介紹,前置倉由于距消費者較近可以忽略配送中的損耗成本,在構建選址模型時雖然實際中前置倉的建設成本為重要成本但因是固定成本,不影響選址位置的選擇,便不再加入目標函數中,選址成本主要考慮運輸成本,運輸成本由配送距離和需求量決定,所以前置倉的選址采用重心法選址模型來解決。
重心法是一種模擬方法,它將物流系統中的需求點和資源點看成是分布在某一平面范圍內的物流系統,各點的需求量和資源量看作是物體的重量,物體系統的重心作為物流網點的最佳位置點,利用求重心的方法來確定物流網點的位置[15]。重心法一般應用于一元網點布局,但是在現實中往往需要建立多個網點,因此采用多重心法進行選址,先劃分區域,再逐個區域進行重心法選址。本文在建立多重心法模型時加入了一個判斷需求點是否為該前置倉配送的參量,用以排除超出某前置倉配送范圍的需求點。
在生鮮農產品前置倉選址決策模型中作如下假設:
點對多點的傳輸模式實現了雷達鏈路的備份、同時雷達數據可以同時傳送至多個網絡中的目標用戶、可以進行服務器間的合理切換,極大的加強了了雷達數據的安全保障。
(1) 各個前置倉可以滿足所覆蓋配送需求點的需求量。
(2) 各個需求點的生鮮農產品需求量、地理位置已知。
(3) 一個需求點僅由一個前置倉提供配送服務。
(4) 不考慮配送過程中生鮮農產品的損耗。
(5) 不考慮前置倉的建設成本。
i為需求點;
j為前置倉;
N={1,2,…,n}是需求點的集合;
P={1,2,…,p}為前置倉的集合;
S為前置倉覆蓋半徑;
Wi表示需求點i的生鮮食品的需求量;
dij表示從需求點i到為其提供配送服務的前置倉j的距離;
Ci為單位距離所需的運費;
H為總成本;

基于假設條件和參數變量,可以設立目標函數為:
(1)

式(1)的約束條件為:dij≤S,S已知;Zij={0,1},i∈N,j∈P。
模型的求解步驟如下:
(1) 確定各個需求點的坐標、需求量、單位運輸費、前置倉設置的數量。
(2) 對前置倉的橫縱坐標求偏導函數,令兩個偏導函數的值為0,求得前置倉坐標表達式為:
(2)
(3)
(3) 令d=1,根據坐標表達式,求出前置倉坐標的初始點px0、py0。
(4) 根據初始點px0、py0,計算出d,比例系數暫不考慮。
(5) 根據修正的px、py重新計算d。
(6) 重復步驟(4)和步驟(5),直到px、py變動小于預定的誤差范圍。
(7) 求得各個前置倉的最佳坐標值及總的運輸成本。
通過算例檢驗本文算法和模型的有效性。使用Windows 10系統筆記本,應用JAVA語言在MyEclipse 10編寫改進DBSCAN聚類算法,應用MATLAB將其可視化呈現,再使用SPASS軟件將面積超出前置倉覆蓋面積的聚類區域進行K-means算法二次聚類,應用MATLAB將其可視化呈現。最后使用MATLAB編寫重心法模型求解出選址坐標和最小成本。算例來源是某地區的生鮮農產品年度需求歷史數據,選取的需求點為該區域生鮮農產品主要需求點,坐標值由百度地圖坐標抓取獲得,各個位置的需求量由歷史數據進行預測計算獲得,為需求點一定范圍內的需求量,在模型運用中假定需求點的需求量在一定時間段保持不變。需求點信息如表1所示。

表1 需求點信息
需求點的分布位置如圖2所示。

圖2 需求點分布位置
由前文前置倉模式介紹可知前置倉的覆蓋半徑為3 km,為保證選取的前置倉位置能夠覆蓋到所負責區域的每個點,令聚類區域的跨度不超過3 km。因為核心對象鄰域半徑r和最小密度值Minpts的選取對聚類結果影響較大,r取值太小會使孤立點過多,r取值太大則會將所有需求點聚為一類,所以應該結合實際情況,慎重決定鄰域半徑r和最小密度值Minpts。這里設鄰域半徑r為覆蓋半徑的一半即1.5 km,根據地理可知本區域經度差1度距離約為89 km,緯度差1度距離約為111 km,所以坐標上r約為0.015。最小密度值設為總需求的平均值求得為1840 t。通過Java編寫算法求解結果,使用MATLAB可視化如圖3所示。
可以看出地點1、地點5、地點46為孤立點,這三個位置不設前置倉,采用第三方物流配送。其余需求量被分為了5類,聚類5面積超過了單個前置倉配送范圍,需要進行K-means算法二次聚類,聚類1、聚類2、聚類3、聚類4聚類面積未超過單個前置倉配送范圍,各設立1個前置倉,在這之中聚類1即地點43雖然只有一個需求點,但需求量較大,仍被聚為一類。
根據聚類5的區域跨度和前置倉覆蓋范圍,二次聚類劃分為6個區域,所以k=6,初始點選擇需求量大的分散的6個需求點,分別為地點4、地點6、地點14、地點26、地點32、地點44。采用SPASS進行二次聚類分析,得到聚類結果如表2所示。結合前面求得需求點的聚類情況,利用MATLAB可視化如圖4所示。

表2 K-means聚類結果

圖4 最終聚類結果
可以看出共有10個聚類區域。因此,確立設立前置倉個數為10,分別分布在各個聚類區域。
由聚類分析求得算例設立前置倉的數量后,將按照多重心法模型求解各個前置倉選址坐標。各需求點坐標、需求量已知,將其代入模型,因為單位距離運費不影響坐標的選取所以為了簡化問題本文選擇數值為1 t生鮮坐標單位距離運費為1 000元。利用MATLAB進行編寫求解得聚類1的前置倉坐標即為地點43的坐標:(118.072 400,36.888 000);聚類2的前置倉坐標:(118.026 8,36.870 7);聚類3的前置倉坐標:(118.035 9,36.850 7);聚類4的前置倉坐標:(118.061 7,36.848 8);聚類5的前置倉坐標:(118.007 9,36.847 3);聚類6的前置倉坐標:(118.020 0,36.812 9);聚類7的前置倉坐標:(118.028 8,36.783 2);聚類8的前置倉坐標:(118.048 7,36.823 5);聚類9的前置倉坐標:(118.056 5,36.797 7);聚類10的前置倉坐標:(118.074 9,36.806 6),總的最小成本H=77.49萬元。選址位置如圖5所示,圖中圓圈即為10個前置倉的選址位置。

圖5 選址位置
算例的計算結果符合算法和模型的實驗的預期,改進的DBSCAN聚類和K-means算法二次聚類有效地實現了對需求點的聚類,確定了前置倉設立的數量和孤立點位置,并為孤立點提供了新的配送方案。多重心法前置倉選址模型也為各個聚類區域找到了前置倉選址位置。因此,這個基于顧客需求量分布的生鮮農產品前置倉選址模型是合理的、有效的,對生鮮電商前置倉的選址具有實際的參考意義。
本文在新零售前置倉模式配送的背景下,以顧客需求量分布為基礎,從前置倉數量確定以及前置倉選址位置確定兩個方面進行前置倉選址問題研究。首先利用改進的DBSCAN聚類和K-means算法二次聚類確立前置倉數量,為了將顧客需求量因素放入到聚類算法中使其根據需求量分布進行聚類,將DBSCAN聚類算法的密度值改進為范圍內顧客需求量的和。并對聚類產生的孤立點提供其他配送方案。然后考慮前置倉的特性,建立多重心法選址模型,對所需設立前置倉的區域進行具體選址坐標確定。最后,通過算例驗證算法和模型的有效性,通過結果可知,本文方法能夠實現前置倉數量和選址位置的功能。
本文還有需要進一步研究的內容。首先,改進的DBSCAN聚類的核心對象鄰域r的確定主觀性較強,在后續的研究中,需要找到更加科學的確定方法。其次,文中僅僅為一個區域主要的需求點分布且需求量為某一時間段的預測值,但實際情況中需求點及需求量是動態變化的,如何將這些因素加入到算法和模型當中,將是下一步研究的方向。