李 瓊 陳 佳 徐 斌
(大連海事大學(xué)航運經(jīng)濟與管理學(xué)院 遼寧 大連 116026)
制造業(yè)的生產(chǎn)活動作為零部件輸入、產(chǎn)品輸出的動態(tài)過程,為下游分銷商銷售提供生產(chǎn),同時其采購量又與上游供應(yīng)商供應(yīng)量緊密相關(guān)。絕大多數(shù)制造企業(yè)通常同一系列下生產(chǎn)多種型號產(chǎn)品,同一時間段內(nèi)多型號產(chǎn)品各自處于生命周期的不同階段時,在內(nèi)外各種影響因素條件下,多型號產(chǎn)品之間的需求難免不會產(chǎn)生相互制約影響作用。
在供應(yīng)鏈環(huán)境中企業(yè)的生產(chǎn)能力、市場需求量通常有限情況下,與短生命周期類產(chǎn)品缺乏歷史訂單數(shù)據(jù),產(chǎn)品價值迅速衰退等特點不同,本文研究的座椅產(chǎn)品等耐用品具有歷史訂單數(shù)據(jù)可靠、生命周期形態(tài)理想等特點。盡可能精準(zhǔn)地預(yù)測產(chǎn)品的市場需求,為企業(yè)更好地提供決策管理,這對于制造業(yè)乃至整條供應(yīng)鏈都具有重要意義。
目前關(guān)于需求預(yù)測的研究多集中在供應(yīng)鏈環(huán)境中結(jié)合制造企業(yè)環(huán)境對產(chǎn)品需求量的影響,很少關(guān)注同一系列下多型號產(chǎn)品之間相互制約對各自需求的影響。傳統(tǒng)的時間序列預(yù)測方法[1-3],根據(jù)歷史數(shù)據(jù)隨時間變化規(guī)律進行需求預(yù)測,在自回歸滑動平均模型的基礎(chǔ)上,發(fā)展了向量自回歸模型[4]、自回歸積分滑動平均模型[5]等變體模型。石海波[6]利用支持向量機進行回歸預(yù)測研究,此類方法針對樣本數(shù)據(jù)的時序性可進行有效研究,但不能有效捕捉各影響因素之間存在的非線性關(guān)系,對于同系列的產(chǎn)品總需求量可達到好的預(yù)測效果,但對多型號產(chǎn)品具體的需求量不能精準(zhǔn)預(yù)測。此外,由于存在多重共線性、誤差序列相關(guān)等缺點,時間序列預(yù)測方法難免出現(xiàn)丟失信息量、模擬效果不佳等問題。
近年逐漸興起的人工智能算法,通過復(fù)雜的非線性函數(shù)對映射關(guān)系描述,可充分挖掘?qū)W習(xí)數(shù)據(jù)中的特征,將數(shù)據(jù)轉(zhuǎn)換為更高層次的表達,擬合和預(yù)測效果較好。基礎(chǔ)的BP神經(jīng)網(wǎng)絡(luò)方法被逐漸用于預(yù)測研究,在需求預(yù)測方面顯示出獨有優(yōu)勢。Guo等[7]通過SVR預(yù)測模型和BP神經(jīng)網(wǎng)絡(luò)模型對同一組需求樣本數(shù)據(jù)進行訓(xùn)練、測試和對比分析,發(fā)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測誤差更低,精確度更高。竇云杰等[8]研究總訓(xùn)練時間、訓(xùn)練強度、天氣和技術(shù)熟練程度等影響因素,建立BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測備件需求量。阮翔[9]研究用主成分分析法對材料價格、訂單價格、合格率、訂單量、實際成本等多個影響因素二次篩選剩下主要成分,改進后的BP神經(jīng)網(wǎng)絡(luò)模型需求預(yù)測結(jié)果誤差更小。組合預(yù)測是一種有效的預(yù)測方法,其預(yù)測效果優(yōu)于單一模型,能夠降低使用單一模型的誤差。郝雪梅等[10]針對企業(yè)產(chǎn)品銷售量這類非平穩(wěn)變化序列,采用回歸分析法和神經(jīng)網(wǎng)絡(luò)方法組合預(yù)測能夠提升預(yù)測精度。針對BP神經(jīng)網(wǎng)絡(luò)容易陷入局部最優(yōu)從而導(dǎo)致預(yù)測誤差較大的問題。畢建濤等[11]結(jié)合主成分分析法和粒子群優(yōu)化算法對樣本質(zhì)量和初始權(quán)值兩方面進行改進。丁紅衛(wèi)等[12]使用Adam優(yōu)化算法代替?zhèn)鹘y(tǒng)隨機梯度下降算法,通過歷史數(shù)據(jù)對改進的BP神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練,能夠明顯減少需求預(yù)測的誤差[12]。
關(guān)于多產(chǎn)品間存在的需求相互制約作用,文獻[13]建立模型通過描述多品牌創(chuàng)新擴展,探討產(chǎn)品成長過程具有影響作用的競爭效應(yīng)。針對不同產(chǎn)品的生命周期特點,文獻[14-16]通過建立Bass模型族,針對缺乏歷史數(shù)據(jù)、生命周期的形態(tài)不夠理想的短生命周期產(chǎn)品,結(jié)合總庫存成本、訂貨量、短缺拖后量和價格等影響因素近似預(yù)測需求。但對于具有一定生命周期的產(chǎn)品,還需要考慮在生命周期的不同時間段內(nèi)不同的需求形態(tài)。通過以上研究總結(jié)出,產(chǎn)品需求與零部件成本、生產(chǎn)提前期等供應(yīng)鏈環(huán)境,以及同行競爭等外部不確定性因素相關(guān),產(chǎn)品需求量呈非線性特征。
神經(jīng)網(wǎng)絡(luò)由于自學(xué)習(xí)、自適應(yīng)、容錯性等特點在預(yù)測中顯示出獨有優(yōu)勢,但上述研究中均將每個數(shù)據(jù)樣本看作相互獨立的個體,無法考慮各數(shù)據(jù)樣本之間的時間關(guān)系,不能更好地處理序列性的數(shù)據(jù)樣本信息。吳培德等[17]應(yīng)用時間序列預(yù)測模式,嘗試將BP神經(jīng)網(wǎng)絡(luò)模型運用到需求量的短期預(yù)測,根據(jù)按時間排列的樣本數(shù)據(jù)前面幾期的采購量來預(yù)測稍后一期的采購量,但存在預(yù)測時間局限性、個別預(yù)測值相對誤差較大等問題。
用戶需求隨著多產(chǎn)品相互制約作用以及外部因素等影響過程動態(tài)變化與時間相互關(guān)聯(lián)。BP神經(jīng)網(wǎng)絡(luò)預(yù)測作為傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)預(yù)測方法,無法考慮數(shù)據(jù)在時間上的相關(guān)性,若直接采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)和訓(xùn)練,將會產(chǎn)生較大的預(yù)測誤差。因此,需要在神經(jīng)網(wǎng)絡(luò)的隱藏層單元,將需求量在時間上的相關(guān)性考慮進去。RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))[18]是一種專門為序列建模而設(shè)計的深度神經(jīng)網(wǎng)絡(luò),在基礎(chǔ)神經(jīng)網(wǎng)路模型中的每一層節(jié)點之間增加了連接,能記憶之前的信息,再應(yīng)用于當(dāng)前輸出計算。
供應(yīng)鏈作為一個企業(yè)節(jié)點環(huán)環(huán)緊扣的有機整體,終端客戶的產(chǎn)品需求與供應(yīng)鏈環(huán)境上游的產(chǎn)品零部件成本、價格、生產(chǎn)提前期等因素緊密相關(guān)。通常供應(yīng)鏈制造企業(yè)在人力、設(shè)備條件限制下生產(chǎn)能力有限,受客戶需求的影響下游市場容量也是一定的。在各影響因素相互影響下,同一系列下多種型號產(chǎn)品之間對各自的需求量會產(chǎn)生相互制約作用。
預(yù)測多型號產(chǎn)品相互制約條件下的產(chǎn)品需求,需要研究各種影響因素下需求數(shù)據(jù)的特征,統(tǒng)計分析時間序列下的數(shù)據(jù)樣本存在的特點與規(guī)律,據(jù)此設(shè)計具有針對性的建模方案進行需求預(yù)測。GRU作為傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的一種改進模型,針對制造企業(yè)產(chǎn)品的動態(tài)歷史需求量數(shù)據(jù)處理具有優(yōu)勢,它能夠考慮數(shù)據(jù)樣本的時間序列前后輸入關(guān)系,將隱含層的輸入層與序列的上一個元素隱含層的輸出共同作用到當(dāng)前隱藏層。在RNN模型結(jié)構(gòu)最重要的隱含層的節(jié)點之間建立連接,從而更好地捕獲數(shù)據(jù)特征。
本文考慮以真實產(chǎn)品歷史訂單數(shù)據(jù)為對象,研究同系列下多種型號產(chǎn)品間對各自需求的制約影響。但若僅考慮通過歷史訂單所反映出的數(shù)據(jù)特征,且只采用GRU網(wǎng)絡(luò)單一方法處理所有特征會降低預(yù)測精度。因此,考慮來自供應(yīng)鏈環(huán)境下的產(chǎn)品需求影響因素、多型號產(chǎn)品自身屬性所造成的需求差異,以及季節(jié)等外部環(huán)境的影響。通過BP神經(jīng)網(wǎng)絡(luò)模型將影響因素按屬性分類,做不同數(shù)據(jù)處理后作為神經(jīng)網(wǎng)絡(luò)的輸入變量,進一步實現(xiàn)某型號產(chǎn)品在多影響因素制約影響作用下的需求預(yù)測。
目前絕大多數(shù)需求預(yù)測研究工作都是在單一時間尺度上進行,很少考慮產(chǎn)品在生命周期中的不同時間段內(nèi)表現(xiàn)出不同的需求特征。在不同時間段內(nèi)影響因素的不同特征值下各型號產(chǎn)品呈現(xiàn)出不同的需求特征。比如產(chǎn)品價格變化與需求變化存在有效聯(lián)系,產(chǎn)品成熟期前降價較少,銷量逐漸下降進入衰退期后,通過降價可刺激客戶影響需求量。諸如此類多因素影響下,多型號產(chǎn)品之間存在相互制約作用,最終在同一時間段內(nèi)多型號產(chǎn)品呈現(xiàn)出不同的需求形態(tài)。
考慮多型號產(chǎn)品在生命周期下的某一段時間內(nèi)受某些因素影響,產(chǎn)品需求出現(xiàn)短期內(nèi)的需求上升、平穩(wěn)、下降等單一形態(tài)。一段時間內(nèi)的單一需求形態(tài)可能會在時間序列中重復(fù)出現(xiàn),呈現(xiàn)周期性需求波動變化。最終各型號產(chǎn)品在各自的生命周期內(nèi),還可能會呈現(xiàn)出長期的需求演化趨勢。
長時間序列的樣本數(shù)據(jù)通常包括多種信息疊加,可通過分解時間序列抽取不同分量后分別進行需求預(yù)測。所以本文考慮區(qū)別于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)在單一時間線上預(yù)測客戶需求,通過將生命周期內(nèi)的單一時間線分段,研究不同時間段內(nèi)的需求特征。鑒于供應(yīng)鏈環(huán)境下存在多個用戶需求影響因素的特點,考慮采用時序分解和組合預(yù)測進行研究。
RNN神經(jīng)網(wǎng)絡(luò)在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上考慮前后輸入關(guān)系,在隱含層的節(jié)點間建立連接,將隱含層的輸入層與序列中上一個元素隱含層的輸出共同作用到當(dāng)前的隱藏層。基本RNN結(jié)構(gòu)圖按時間展開如圖1所示,t時刻神經(jīng)元的輸入包含了返回的t-1時刻的狀態(tài)ht-1,將捕捉到的歷史信息一并作為輸入。權(quán)重矩陣W就是隱藏層上一次的值作為這一次的輸入的權(quán)重,輸入層到隱含層,隱含層到輸出層的權(quán)重矩陣U、V均不變。

圖1 基本RNN結(jié)構(gòu)圖按時間展開圖
RNN中采用BPTT反向傳播算法,其基本思想是沿著需要優(yōu)化的參數(shù)的負(fù)梯度方向不斷尋找更優(yōu)的點直至收斂,本質(zhì)與BP神經(jīng)網(wǎng)絡(luò)相同,還是梯度下降算法。隨著隱含層數(shù)目的增多,傳統(tǒng)RNN存在梯度消失問題[19-20],不能有效捕獲長時間的依賴,學(xué)者提出長短期記憶網(wǎng)絡(luò)(LSTM)[21]和門控循環(huán)單元(GRU)[22]來解決這一問題。
區(qū)別于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò),GRU采用門控循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)代替簡單的tanh等函數(shù)作為神經(jīng)元模塊組成鏈?zhǔn)侥P汀RU作為RNN一種改進模型,解決了RNN梯度消失問題。GRU將LSTM中遺忘門和輸入門合并為更新門,將原來三個“門”結(jié)構(gòu)組合優(yōu)化成兩個“門”,保持了LSTM預(yù)測效果基礎(chǔ)上,訓(xùn)練參數(shù)更少。單神經(jīng)元的內(nèi)部詳細(xì)結(jié)構(gòu)如圖2所示。其中:zt表示更新門,用于控制前一時刻的狀態(tài)信息被帶入到當(dāng)前狀態(tài)中的程度,其值越大說明前一時刻的狀態(tài)信息帶入越多;rt表示重置門,用于控制忽略前一時刻的狀態(tài)信息的程度,其值越小說明忽略得越多;x表示神經(jīng)元的輸入值。

圖2 單神經(jīng)元內(nèi)部結(jié)構(gòu)
將GRU神經(jīng)網(wǎng)絡(luò)中的內(nèi)部詳細(xì)結(jié)構(gòu)逐步分解:
zt=σ(Wz·[ht-1,xt])
(1)
式中:zt表示更新門,通過上一個神經(jīng)元輸出ht-1與本次神經(jīng)元輸入xt相加后乘以更新門權(quán)重Wz,再使用Sigmoid函數(shù)運算。更新門zt取值越大,當(dāng)前神經(jīng)元保留信息越多,而上一個神經(jīng)元保留信息越少。更新門模型如圖3所示。

圖3 更新門模型
rt=σ(Wr·[ht-1,xt])
(2)
式中:rt表示重置門,通過上一個神經(jīng)元輸出ht-1與本次神經(jīng)元輸入xt相加后乘以重置門權(quán)重Wr,再使用Sigmoid函數(shù)運算。重置門rt取值為0,表示拋棄上一個神經(jīng)元傳來的某些無用信息只取當(dāng)前神經(jīng)元的輸入作為輸入。重置門模型如圖4所示。

圖4 重置門模型

(3)

圖5 待定輸入值模型

(4)


圖6 輸出值模型
每個神經(jīng)元都在決策每次信息的輸出量使得各神經(jīng)元之間存在依賴關(guān)系,重置門對于短距離學(xué)習(xí)會比較活躍,更新門對于長距離學(xué)習(xí)會比較活躍。
通過研究不同時間序列下數(shù)據(jù)變化規(guī)律,可捕獲到不同時序條件下的需求數(shù)據(jù)特征,在不同時間序列方面分別建立GRU神經(jīng)網(wǎng)絡(luò)模型,可同時訓(xùn)練,協(xié)同性強,最后再將三組預(yù)測結(jié)果加權(quán)得到最終預(yù)測結(jié)果Y1、Y2、Y3、Y4、Y5。
針對同一種型號產(chǎn)品,在GRU模型的預(yù)測基礎(chǔ)上,再結(jié)合其他環(huán)境影響因素,進一步實現(xiàn)某型號產(chǎn)品需求的精準(zhǔn)預(yù)測。通過GRU和BP組合神經(jīng)網(wǎng)絡(luò)預(yù)測模型,最終得出同系列多型號產(chǎn)品各自的需求量。圖7為本文建立的預(yù)測模型架構(gòu)圖。

圖7 預(yù)測模型架構(gòu)
數(shù)據(jù)集選取某銷售商2013年至2018年Lily系列下A、B、C、D、E共5種型號座椅產(chǎn)品歷史訂單。首先處理原數(shù)據(jù),去除包含缺失值與異常值的數(shù)據(jù)樣本,保證數(shù)據(jù)集內(nèi)無稀疏記錄與無效記錄。選取穩(wěn)定長生命周期的各型號產(chǎn)品按周統(tǒng)計的銷售數(shù)據(jù)共計5 120條,表1為5種型號產(chǎn)品2016年部分歷史訂單數(shù)據(jù)。

表1 2016年5種型號產(chǎn)品銷售數(shù)據(jù)
產(chǎn)品在完整生命周期內(nèi)會大致呈現(xiàn)需求增長、成熟穩(wěn)定、衰退三種需求形態(tài)。圖8在長時間序列跨度中選取了部分歷史需求數(shù)據(jù),可以看出5種型號產(chǎn)品在各自的生命周期內(nèi)不是呈現(xiàn)單一的增長等需求形態(tài),而是在不同時間段內(nèi)呈現(xiàn)出不同的需求波動。某一固定時間段內(nèi),5種型號產(chǎn)品呈現(xiàn)出不同的需求形態(tài)。

圖8 5種型號產(chǎn)品需求數(shù)據(jù)圖
各型號產(chǎn)品在某一短時間段內(nèi)呈現(xiàn)上升、穩(wěn)定、下降的單一需求形態(tài)。抽取產(chǎn)品D某一短期序列,圖9中x軸表示時間間隔,y軸表示時間間隔下產(chǎn)品需求的比值。隨著時間間隔增加,用戶需求比值呈現(xiàn)正相關(guān)變化,時間間隔越小,用戶需求相關(guān)性越強。由此可驗證用戶短期內(nèi)的需求存在依賴關(guān)系。

圖9 短期需求數(shù)據(jù)分析圖
短時間內(nèi)形成的單一需求波動會重復(fù)出現(xiàn),如圖10所示,在長時間序列下產(chǎn)品D大約以兩周為周期波動呈現(xiàn)。不同的周期時間段上,每次波動變化的需求數(shù)據(jù)存在明顯的波峰值,但是每次波動的波峰波谷值不相同。

圖10 產(chǎn)品D周期性需求數(shù)據(jù)分析圖
從長跨度的時間序列中能夠看出,由于受某些因素影響,在不同的時間序列段中產(chǎn)品需求表現(xiàn)出一定的周期性,但總體還是會呈現(xiàn)出長期需求的大致演化趨勢。圖8中,產(chǎn)品B和產(chǎn)品D雖然在某些時間段內(nèi)呈現(xiàn)需求上升過程,但是它的整體需求還是處于下降趨勢;產(chǎn)品E初始階段總體需求量較少,但能夠看出總體需求水平還是處于上升趨勢。圖11為產(chǎn)品D的需求長期演化趨勢。

圖11 產(chǎn)品D長期性需求數(shù)據(jù)分析圖
時間序列數(shù)據(jù)包括了多種信息的疊加,通過對樣本數(shù)據(jù)特點分析,可在短時間序列、周期序列、長時間序列三個方面研究用戶需求的數(shù)據(jù)特征。
時間序列可將作用于不同時序條件下的影響因素實現(xiàn)數(shù)據(jù)分離,短時間序列可將一條時間序列上呈現(xiàn)的多型號產(chǎn)品的多種需求形態(tài),轉(zhuǎn)化為捕獲到在同一短時間段內(nèi)多型號產(chǎn)品呈現(xiàn)出單一需求形態(tài)。周期性時間序列可捕獲到長時間序列上的需求數(shù)據(jù)的周期性波動信息。長時間序列能捕獲某型號產(chǎn)品在自身生命周期下的需求長期演化趨勢。
通過研究5種型號產(chǎn)品歷史訂單數(shù)據(jù)所反映的需求特點,統(tǒng)計分析用戶在不同時間段上的需求數(shù)據(jù)變化特點與規(guī)律,據(jù)此設(shè)計具有針對性的建模方案。
采用離散傅里葉變換DFT及離散傅里葉逆變換IDFT,可從需求時間序列中捕獲所隱含的周期信息和頻域特征。離散傅里葉變換DFT通對一個時域非周期的信號x(n)作變換,非周期的信號x(n)經(jīng)過周期延拓得到一個周期信號xtilde(n)。離散傅里葉變換可將離散的時間序列變換為一組不同振幅、相位和頻率的正弦信號疊加,完成時間序列由時域分析轉(zhuǎn)換到頻域分析。
離散傅里葉變換定義為:
(5)
式中:一個具有N個序列值的離散時間信號x(n)(n=1,2,…,N),N表示樣本個數(shù);j2=-1;k為頻域中的頻率點。
逆變換定義為:
(6)

時間序列的采樣周期為T,采樣頻率f=(1/T),對應(yīng)幅頻圖橫軸上具有N個頻率點,前后頻率點的頻率間隔△f=(1/T)。第k個頻率點對應(yīng)時域周期信號的周期為:
(7)
短期內(nèi)的單一需求形態(tài)是一個平穩(wěn)時間序列,不含明顯周期性。將分離出單一的短期需求時間序列進行離散傅里葉變換可得到對應(yīng)幅頻圖,提取出幅值較大的頻率點后進行離散傅里葉逆變換,可得到時間序列中所隱含的周期特征。
在產(chǎn)品短時間內(nèi)的單一需求形態(tài)上通過DFT得到的幅頻圖,以產(chǎn)品D為例,由于采樣點過于密集顯示效果不好,圖12只顯示了54組數(shù)據(jù),x軸表示頻率點,y軸表示振幅值。

圖12 頻率圖
從產(chǎn)品需求時間序列中進一步分離出周期性特征,如圖13所示,對于產(chǎn)品D,將p(周期)設(shè)置為兩周,將t(長期)設(shè)置為一月。

圖13 周期圖
通常大多數(shù)制造企業(yè),生產(chǎn)的某一系列產(chǎn)品下具有多種型號產(chǎn)品。通過同一系列下多種型號產(chǎn)品各自歷史訂單量作為影響因素,研究同一系列下多種型號產(chǎn)品之間的相互制約影響。考慮針對具有時序性的多年歷史訂單數(shù)據(jù),采用GRU網(wǎng)絡(luò)建模,研究多型號產(chǎn)品之間的數(shù)據(jù)內(nèi)部動態(tài)變化規(guī)律,學(xué)習(xí)序列數(shù)據(jù)中的潛在特征,實現(xiàn)同一系列下不同型號產(chǎn)品各自的需求量的預(yù)測。
步驟1樣本數(shù)據(jù)預(yù)處理,通過sklearn的preprocessing.MinMaxScaler()對輸入數(shù)據(jù)預(yù)處理,使其能被模型有效識別。本文選取將原始數(shù)據(jù)歸一到指定的最小最大數(shù)[0,1]之間,利用式(8)對數(shù)據(jù)預(yù)處理。
(8)
式中:歸一化后的數(shù)據(jù)矩陣X作為GRU神經(jīng)網(wǎng)絡(luò)的輸入變量;Xmin(axis=0)表示輸入矩陣中X的最小值;Xmax(axis=0)表示輸入矩陣中X的最大值,axis表示矩陣的逐行。矩陣X中的元素(i,j)表示第i種型號產(chǎn)品,第j種產(chǎn)品特征。
矩陣表示每種型號產(chǎn)品在t時刻的歷史訂單量,可按時間序列順序拼接,設(shè)置利用前三周的歷史訂單數(shù)據(jù)來預(yù)測第四周的產(chǎn)品需求量。
步驟2對輸入矩陣數(shù)據(jù)統(tǒng)計分析,分別利用生命周期下呈現(xiàn)出的短期、周期、長期三種需求形態(tài),捕獲不同時序下的數(shù)據(jù)特征,分別建立GRU神經(jīng)網(wǎng)絡(luò)模型。
步驟3將以上三個GRU神經(jīng)網(wǎng)絡(luò)模型得到的預(yù)測結(jié)果w1、w2、w3賦予不同的權(quán)值φ1、φ2、φ3,加權(quán)求解得到GRU最終預(yù)測結(jié)果W。
企業(yè)業(yè)務(wù)活動發(fā)生伴隨著來源于各地的不確定性,銷售活動作為供應(yīng)鏈一個重要環(huán)節(jié),用戶產(chǎn)品需求與原材料成本的供應(yīng)商、采購提前期的生產(chǎn)商等各個供應(yīng)鏈節(jié)點企業(yè)相關(guān)。從供應(yīng)鏈全局角度分析,將影響產(chǎn)品需求的相關(guān)主體簡化歸結(jié)為零部件供應(yīng)商、制造企業(yè)和分銷商三類,其中包含的需求影響因素有零部件供應(yīng)量、采購提前期、訂單量、訂單總額、全年銷售百分比、市場需求量等,如圖14所示。

圖14 供應(yīng)鏈用戶需求影響因素
此外,季節(jié)性等非線性因素往往對該類產(chǎn)品市場需求量有一定的影響,該類特征內(nèi)部潛在規(guī)律并不明顯,一般的時間序列無法基于此類影響因子進行合理預(yù)測,模擬效果不佳,不適合作為GRU神經(jīng)網(wǎng)絡(luò)輸入。采用BP神經(jīng)網(wǎng)絡(luò)方法能有效處理這些外在因素對預(yù)測結(jié)果的影響,從中學(xué)習(xí)該類特征與需求的關(guān)系,能以任意精度逼近任意復(fù)雜的非線性映射,提高預(yù)測精度。
選取BP神經(jīng)網(wǎng)絡(luò)輸入變量主要考慮兩點:(1) 能夠?qū)敵鲎兞坑绊懘蟮臄?shù)值變量。(2) 各個輸入變量之間互不相關(guān)或相關(guān)性很小。
鑒于供應(yīng)商與制造商長期穩(wěn)定合作,所以供應(yīng)商等級、品牌效應(yīng)因素不作重點考慮。同一系列下多型號產(chǎn)品的零部件耗費量不同,與之相關(guān)的零部件價格以及采購涉及的人力物力成本都會影響各型號產(chǎn)品原材料總成本。綜合統(tǒng)計各型號產(chǎn)品耗用數(shù)據(jù),在供應(yīng)商端選取原材料總成本作為需求影響因素之一。
制造商的產(chǎn)品生產(chǎn)消耗各型號產(chǎn)品的零部件、組件不同,零部件采購提前期會對產(chǎn)品的生產(chǎn)周期以及及時供應(yīng)產(chǎn)生影響,所以選取各型號產(chǎn)品零部件的采購提前期作為需求影響因素之一。
產(chǎn)品定價在考慮零部件總成本基礎(chǔ)上,綜合考慮了各種不同型號的產(chǎn)品在生產(chǎn)工藝流程上存在的差異,以及工藝生產(chǎn)中所耗費的物流、時間、人力等成本,產(chǎn)品定價在其各因素相互制約影響下不同,最終影響客戶的購買力,所以將產(chǎn)品價格作為需求影響因素之一。
制造商產(chǎn)品生產(chǎn)的訂單量、訂單總額、分銷商的銷售額、銷售百分比都與產(chǎn)品需求量、產(chǎn)品價格緊密相關(guān),此類相關(guān)因素不作重復(fù)考慮。
多型號的座椅類產(chǎn)品其自身屬性,針對不同的用戶特征也會造成需求差異,其承重量、面料材質(zhì)、是否可升降折疊等因素都是用戶選購的考慮因素。
此外,考慮季節(jié)對分銷商的影響,季節(jié)影響因子通過向銷售、管理人員進行調(diào)查分析方式確定,范圍0~1之間,其大小表示該因素對該座椅產(chǎn)品銷售的影響大小。產(chǎn)品銷售量影響因素匯總?cè)绫?所示。

表2 產(chǎn)品銷售量影響因素
在研究同一系列多型號產(chǎn)品對各自需求預(yù)測基礎(chǔ)上,針對某一種型號產(chǎn)品,選取上步GRU預(yù)測出的需求量,再選取供應(yīng)鏈環(huán)境中包含的原材料總成本、采購提前期、產(chǎn)品價格、季節(jié)影響因素業(yè)作為輸入變量,進一步構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測某型號產(chǎn)品需求量。
對于供應(yīng)鏈環(huán)境下的影響因素原材料總成本、采購提前期等信息從制造業(yè)和銷售報表中獲取,產(chǎn)品價格、型號和承重量從產(chǎn)品詳細(xì)信息單中獲取。數(shù)據(jù)樣本詳細(xì)記錄了每種型號產(chǎn)品的數(shù)據(jù)特征,該類連續(xù)性的屬性可通過式(8)對數(shù)據(jù)歸一化處理后直接作為神經(jīng)網(wǎng)絡(luò)的輸入變量。
對于面料材質(zhì)、是否可升降等一般離散屬性,做One-Hot編碼處理;產(chǎn)品型號屬于ID離散屬性,采用One-Hot方式編碼后輸入到不同嵌入層[23],把高維向量映射為低維向量做降維處理后再作為輸入變量。
將多個影響因素屬性值數(shù)據(jù)處理后連接,作為BP神經(jīng)網(wǎng)絡(luò)的輸入變量。神經(jīng)網(wǎng)絡(luò)輸出層表示系統(tǒng)所要實現(xiàn)的功能目標(biāo),輸出層節(jié)點個數(shù)匹配目標(biāo)的維度。本文神經(jīng)網(wǎng)絡(luò)的輸出變量選取本月5種型號產(chǎn)品各自的需求量,設(shè)置輸出層神經(jīng)元個數(shù)為5。
表3抽取了產(chǎn)品D不同時間序列中的各個影響因素需求量、原材料總成本、采購提前期、產(chǎn)品價格、季節(jié)影響因子作為神經(jīng)網(wǎng)絡(luò)輸入變量的值。

表3 某些時刻影響因素值
實驗環(huán)境在硬件配置為CPU型號Intel酷睿i73 610QM、CPU主頻2.4 GHz、內(nèi)存容量4 GB(4 GB×1)DDR31 600 MHz、操作系統(tǒng)為Windows 8的PC機上進行。
本文使用Python 3.7構(gòu)建實驗?zāi)P停褂冒≒ybrain、Numpy等Python庫。GRU模型基于Python的Keras包實現(xiàn),Keras以TensorFlow或Theano作為后端,是一個非常方便的深度學(xué)習(xí)框架。Keras對RNN模型進行封裝,在layers包的recurrent模塊中實現(xiàn)RNN相關(guān)層模型支持,并在wrapper模型中實現(xiàn)雙向RNN包裝器。采用Sigmoid函數(shù)作為激活函數(shù)處理神經(jīng)網(wǎng)絡(luò)模型的輸出結(jié)果。
GRU神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練集,設(shè)置batch-size=100,epochs=10,隨機分配批量梯度下降,每一批樣本用來優(yōu)化損失函數(shù)。樣本分批后,一次epoch就是用完所有批次的樣本用來梯度下降。樣本分為100批,優(yōu)化時需要做100次參數(shù)更新。每一個epoch參數(shù)更新100次,共10個epoch。以下是建立GRU神經(jīng)網(wǎng)絡(luò)的核心代碼:
def build_model(inputs):
y=recurrent.GRU(5, activation=‘sigmoid’, dropout=0.5, recurrent_dropout=0.0, return_sequences=False)(inputs)
model=Model(inputs, y)
model.compile(optimizer=‘a(chǎn)dam’,
loss=‘mse’)
return model
inputs=layers.Input(shape=(3, 5))
model=build_model(inputs)
model.summary()
GRU()參數(shù)說明:
units: RNN輸出維度,匹配輸出結(jié)果設(shè)置為5。
activation: 激活函數(shù),默認(rèn)為tanh。
dropout:控制輸入線性變換的神經(jīng)元失活的比例,0~1之間的浮點數(shù),設(shè)置為0.5。
recurrent_dropout:控制循環(huán)狀態(tài)的線性變換的神經(jīng)元失活比例,0~1之間的浮點數(shù)。
return_sequences:用于stack兩個層,F(xiàn)alse返回輸出序列最后一個輸出。
timesteps:表示認(rèn)為每個輸入數(shù)據(jù)與前多少個連續(xù)輸入數(shù)據(jù)有關(guān)。
本文利用TensorFlow[24-25]提供的訓(xùn)練模型的Adam優(yōu)化算法[26]進行參數(shù)優(yōu)化,它是一個尋找全局最優(yōu)點的優(yōu)化算法,優(yōu)點主要在于經(jīng)過偏置校正后,每一次迭代學(xué)習(xí)率都有個確定范圍,使得參數(shù)比較平穩(wěn)。相比于基礎(chǔ)隨機梯度下降(SGD)算法,不容易陷于局部優(yōu)點,而且速度更快。經(jīng)過校正后最終Adam算法的更新為:
(9)

計算損失函數(shù)直接調(diào)用Keras自帶的loss函數(shù)MSE:
(10)

采用GRU神經(jīng)網(wǎng)絡(luò)模型來預(yù)測Lily系列下5種型號產(chǎn)品的需求,數(shù)據(jù)樣本選取了2013年至2018年的歷史訂單。在每一輪神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,實驗設(shè)置通過前3個數(shù)據(jù)樣本預(yù)測第4個。選取該數(shù)據(jù)集的前80%作為訓(xùn)練集,用于神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)訓(xùn)練,剩下的20%作為測試集,測試訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)是否具有良好的泛化能力,設(shè)置學(xué)習(xí)率為0.000 1。圖15-圖19為5種型號產(chǎn)品的測試集的預(yù)測值與真實值對比圖。

圖15 A型號產(chǎn)品預(yù)測結(jié)果對比

圖16 B型號產(chǎn)品預(yù)測結(jié)果對比

圖17 C型號產(chǎn)品預(yù)測結(jié)果對比

圖18 D型號產(chǎn)品預(yù)測結(jié)果對比

圖19 E型號產(chǎn)品預(yù)測結(jié)果對比
在GRU預(yù)測基礎(chǔ)上,針對某一種型號產(chǎn)品選取對應(yīng)型號產(chǎn)品的原材料成本、采購提前期、產(chǎn)品價格、季節(jié)影響因子,作為BP神經(jīng)網(wǎng)絡(luò)的輸入變量,圖20-圖24為輸出5種型號產(chǎn)品的測試集預(yù)測值與真實值對比圖。

圖20 A型號產(chǎn)品預(yù)測結(jié)果對比

圖21 B型號產(chǎn)品預(yù)測結(jié)果對比

圖22 C型號產(chǎn)品預(yù)測結(jié)果對比

圖23 D型號產(chǎn)品預(yù)測結(jié)果對比

圖24 E型號產(chǎn)品預(yù)測結(jié)果對比
5種型號產(chǎn)品兩次預(yù)測結(jié)果誤差統(tǒng)計分析如表4所示,與單一的GRU預(yù)測結(jié)果比較,在加入了外部環(huán)境影響因素后,產(chǎn)品需求的在預(yù)測精度上有很大改善,其平均絕對百分比誤差由29.11%減少到了11.59%,最大誤差百分比最少可達到11.61%。

表4 5種型號產(chǎn)品兩次預(yù)測結(jié)果誤差 %
從樣本數(shù)據(jù)中隨機抽取A型號產(chǎn)品第13至第37周歷史需求數(shù)據(jù),對預(yù)測模型進行檢驗得到預(yù)測結(jié)果與實際值對比如圖25所示。

圖25 A型號產(chǎn)品抽取需求測試結(jié)果
本文使用均方根誤差(RMSE)和平均絕對誤差(MAE)作為預(yù)測模型的評價指標(biāo):
(11)

(12)

為驗證本文建立的組合神經(jīng)網(wǎng)絡(luò)預(yù)測模型的有效性,建立一般BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型和普通循環(huán)神經(jīng)網(wǎng)絡(luò)預(yù)測模型(RNN)以及單獨的GRU預(yù)測模型作為對照組以更好比較預(yù)測結(jié)果,模型預(yù)測結(jié)果如表5所示。

表5 多種預(yù)測模型預(yù)測結(jié)果評價
通過真實值與預(yù)測值的對比可以得出,本文構(gòu)建的GRU-BP組合模型的能夠?qū)τ脩粜枨筮M行有效預(yù)測,其次針對用戶需求時序特點的三方面分解進行預(yù)測也是有效的,說明本文構(gòu)建的預(yù)測模型能夠較好地對用戶需求特征進行提取并充分利用。
針對產(chǎn)品需求的增長期、成熟穩(wěn)定期、衰退期這三種生命周期內(nèi)劃分的不同時間序列段上的產(chǎn)品需求形態(tài),在企業(yè)產(chǎn)能、市場容量受限情況下,再結(jié)合供應(yīng)鏈和外部環(huán)境下的影響因素,通過GRU與BP神經(jīng)網(wǎng)絡(luò)組合神經(jīng)網(wǎng)絡(luò),將長時間序列的多產(chǎn)品多需求形態(tài)轉(zhuǎn)化為捕獲同一時間段上多型號產(chǎn)品分布的各自單一需求形態(tài),同時劃分出的不同時間序列的循環(huán)神經(jīng)網(wǎng)絡(luò)模型可同時訓(xùn)練,協(xié)同性強。在基于時序分解的循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,再考慮其他影響因素,達到對某型號產(chǎn)品需求的全面預(yù)測。GRU-BP組合模型疊加各個子序列獲得最終預(yù)測結(jié)果,效果優(yōu)于單一時間序列的預(yù)測,能降低各個模型的預(yù)測誤差。