李 瓊 陳 佳 徐 斌
(大連海事大學(xué)航運(yùn)經(jīng)濟(jì)與管理學(xué)院 遼寧 大連 116026)
制造業(yè)的生產(chǎn)活動(dòng)作為零部件輸入、產(chǎn)品輸出的動(dòng)態(tài)過(guò)程,為下游分銷(xiāo)商銷(xiāo)售提供生產(chǎn),同時(shí)其采購(gòu)量又與上游供應(yīng)商供應(yīng)量緊密相關(guān)。絕大多數(shù)制造企業(yè)通常同一系列下生產(chǎn)多種型號(hào)產(chǎn)品,同一時(shí)間段內(nèi)多型號(hào)產(chǎn)品各自處于生命周期的不同階段時(shí),在內(nèi)外各種影響因素條件下,多型號(hào)產(chǎn)品之間的需求難免不會(huì)產(chǎn)生相互制約影響作用。
在供應(yīng)鏈環(huán)境中企業(yè)的生產(chǎn)能力、市場(chǎng)需求量通常有限情況下,與短生命周期類(lèi)產(chǎn)品缺乏歷史訂單數(shù)據(jù),產(chǎn)品價(jià)值迅速衰退等特點(diǎn)不同,本文研究的座椅產(chǎn)品等耐用品具有歷史訂單數(shù)據(jù)可靠、生命周期形態(tài)理想等特點(diǎn)。盡可能精準(zhǔn)地預(yù)測(cè)產(chǎn)品的市場(chǎng)需求,為企業(yè)更好地提供決策管理,這對(duì)于制造業(yè)乃至整條供應(yīng)鏈都具有重要意義。
目前關(guān)于需求預(yù)測(cè)的研究多集中在供應(yīng)鏈環(huán)境中結(jié)合制造企業(yè)環(huán)境對(duì)產(chǎn)品需求量的影響,很少關(guān)注同一系列下多型號(hào)產(chǎn)品之間相互制約對(duì)各自需求的影響。傳統(tǒng)的時(shí)間序列預(yù)測(cè)方法[1-3],根據(jù)歷史數(shù)據(jù)隨時(shí)間變化規(guī)律進(jìn)行需求預(yù)測(cè),在自回歸滑動(dòng)平均模型的基礎(chǔ)上,發(fā)展了向量自回歸模型[4]、自回歸積分滑動(dòng)平均模型[5]等變體模型。石海波[6]利用支持向量機(jī)進(jìn)行回歸預(yù)測(cè)研究,此類(lèi)方法針對(duì)樣本數(shù)據(jù)的時(shí)序性可進(jìn)行有效研究,但不能有效捕捉各影響因素之間存在的非線性關(guān)系,對(duì)于同系列的產(chǎn)品總需求量可達(dá)到好的預(yù)測(cè)效果,但對(duì)多型號(hào)產(chǎn)品具體的需求量不能精準(zhǔn)預(yù)測(cè)。此外,由于存在多重共線性、誤差序列相關(guān)等缺點(diǎn),時(shí)間序列預(yù)測(cè)方法難免出現(xiàn)丟失信息量、模擬效果不佳等問(wèn)題。
近年逐漸興起的人工智能算法,通過(guò)復(fù)雜的非線性函數(shù)對(duì)映射關(guān)系描述,可充分挖掘?qū)W習(xí)數(shù)據(jù)中的特征,將數(shù)據(jù)轉(zhuǎn)換為更高層次的表達(dá),擬合和預(yù)測(cè)效果較好。基礎(chǔ)的BP神經(jīng)網(wǎng)絡(luò)方法被逐漸用于預(yù)測(cè)研究,在需求預(yù)測(cè)方面顯示出獨(dú)有優(yōu)勢(shì)。Guo等[7]通過(guò)SVR預(yù)測(cè)模型和BP神經(jīng)網(wǎng)絡(luò)模型對(duì)同一組需求樣本數(shù)據(jù)進(jìn)行訓(xùn)練、測(cè)試和對(duì)比分析,發(fā)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)誤差更低,精確度更高。竇云杰等[8]研究總訓(xùn)練時(shí)間、訓(xùn)練強(qiáng)度、天氣和技術(shù)熟練程度等影響因素,建立BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)備件需求量。阮翔[9]研究用主成分分析法對(duì)材料價(jià)格、訂單價(jià)格、合格率、訂單量、實(shí)際成本等多個(gè)影響因素二次篩選剩下主要成分,改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)模型需求預(yù)測(cè)結(jié)果誤差更小。組合預(yù)測(cè)是一種有效的預(yù)測(cè)方法,其預(yù)測(cè)效果優(yōu)于單一模型,能夠降低使用單一模型的誤差。郝雪梅等[10]針對(duì)企業(yè)產(chǎn)品銷(xiāo)售量這類(lèi)非平穩(wěn)變化序列,采用回歸分析法和神經(jīng)網(wǎng)絡(luò)方法組合預(yù)測(cè)能夠提升預(yù)測(cè)精度。針對(duì)BP神經(jīng)網(wǎng)絡(luò)容易陷入局部最優(yōu)從而導(dǎo)致預(yù)測(cè)誤差較大的問(wèn)題。畢建濤等[11]結(jié)合主成分分析法和粒子群優(yōu)化算法對(duì)樣本質(zhì)量和初始權(quán)值兩方面進(jìn)行改進(jìn)。丁紅衛(wèi)等[12]使用Adam優(yōu)化算法代替?zhèn)鹘y(tǒng)隨機(jī)梯度下降算法,通過(guò)歷史數(shù)據(jù)對(duì)改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練,能夠明顯減少需求預(yù)測(cè)的誤差[12]。
關(guān)于多產(chǎn)品間存在的需求相互制約作用,文獻(xiàn)[13]建立模型通過(guò)描述多品牌創(chuàng)新擴(kuò)展,探討產(chǎn)品成長(zhǎng)過(guò)程具有影響作用的競(jìng)爭(zhēng)效應(yīng)。針對(duì)不同產(chǎn)品的生命周期特點(diǎn),文獻(xiàn)[14-16]通過(guò)建立Bass模型族,針對(duì)缺乏歷史數(shù)據(jù)、生命周期的形態(tài)不夠理想的短生命周期產(chǎn)品,結(jié)合總庫(kù)存成本、訂貨量、短缺拖后量和價(jià)格等影響因素近似預(yù)測(cè)需求。但對(duì)于具有一定生命周期的產(chǎn)品,還需要考慮在生命周期的不同時(shí)間段內(nèi)不同的需求形態(tài)。通過(guò)以上研究總結(jié)出,產(chǎn)品需求與零部件成本、生產(chǎn)提前期等供應(yīng)鏈環(huán)境,以及同行競(jìng)爭(zhēng)等外部不確定性因素相關(guān),產(chǎn)品需求量呈非線性特征。
神經(jīng)網(wǎng)絡(luò)由于自學(xué)習(xí)、自適應(yīng)、容錯(cuò)性等特點(diǎn)在預(yù)測(cè)中顯示出獨(dú)有優(yōu)勢(shì),但上述研究中均將每個(gè)數(shù)據(jù)樣本看作相互獨(dú)立的個(gè)體,無(wú)法考慮各數(shù)據(jù)樣本之間的時(shí)間關(guān)系,不能更好地處理序列性的數(shù)據(jù)樣本信息。吳培德等[17]應(yīng)用時(shí)間序列預(yù)測(cè)模式,嘗試將BP神經(jīng)網(wǎng)絡(luò)模型運(yùn)用到需求量的短期預(yù)測(cè),根據(jù)按時(shí)間排列的樣本數(shù)據(jù)前面幾期的采購(gòu)量來(lái)預(yù)測(cè)稍后一期的采購(gòu)量,但存在預(yù)測(cè)時(shí)間局限性、個(gè)別預(yù)測(cè)值相對(duì)誤差較大等問(wèn)題。
用戶需求隨著多產(chǎn)品相互制約作用以及外部因素等影響過(guò)程動(dòng)態(tài)變化與時(shí)間相互關(guān)聯(lián)。BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)作為傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)方法,無(wú)法考慮數(shù)據(jù)在時(shí)間上的相關(guān)性,若直接采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)和訓(xùn)練,將會(huì)產(chǎn)生較大的預(yù)測(cè)誤差。因此,需要在神經(jīng)網(wǎng)絡(luò)的隱藏層單元,將需求量在時(shí)間上的相關(guān)性考慮進(jìn)去。RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))[18]是一種專(zhuān)門(mén)為序列建模而設(shè)計(jì)的深度神經(jīng)網(wǎng)絡(luò),在基礎(chǔ)神經(jīng)網(wǎng)路模型中的每一層節(jié)點(diǎn)之間增加了連接,能記憶之前的信息,再應(yīng)用于當(dāng)前輸出計(jì)算。
供應(yīng)鏈作為一個(gè)企業(yè)節(jié)點(diǎn)環(huán)環(huán)緊扣的有機(jī)整體,終端客戶的產(chǎn)品需求與供應(yīng)鏈環(huán)境上游的產(chǎn)品零部件成本、價(jià)格、生產(chǎn)提前期等因素緊密相關(guān)。通常供應(yīng)鏈制造企業(yè)在人力、設(shè)備條件限制下生產(chǎn)能力有限,受客戶需求的影響下游市場(chǎng)容量也是一定的。在各影響因素相互影響下,同一系列下多種型號(hào)產(chǎn)品之間對(duì)各自的需求量會(huì)產(chǎn)生相互制約作用。
預(yù)測(cè)多型號(hào)產(chǎn)品相互制約條件下的產(chǎn)品需求,需要研究各種影響因素下需求數(shù)據(jù)的特征,統(tǒng)計(jì)分析時(shí)間序列下的數(shù)據(jù)樣本存在的特點(diǎn)與規(guī)律,據(jù)此設(shè)計(jì)具有針對(duì)性的建模方案進(jìn)行需求預(yù)測(cè)。GRU作為傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的一種改進(jìn)模型,針對(duì)制造企業(yè)產(chǎn)品的動(dòng)態(tài)歷史需求量數(shù)據(jù)處理具有優(yōu)勢(shì),它能夠考慮數(shù)據(jù)樣本的時(shí)間序列前后輸入關(guān)系,將隱含層的輸入層與序列的上一個(gè)元素隱含層的輸出共同作用到當(dāng)前隱藏層。在RNN模型結(jié)構(gòu)最重要的隱含層的節(jié)點(diǎn)之間建立連接,從而更好地捕獲數(shù)據(jù)特征。
本文考慮以真實(shí)產(chǎn)品歷史訂單數(shù)據(jù)為對(duì)象,研究同系列下多種型號(hào)產(chǎn)品間對(duì)各自需求的制約影響。但若僅考慮通過(guò)歷史訂單所反映出的數(shù)據(jù)特征,且只采用GRU網(wǎng)絡(luò)單一方法處理所有特征會(huì)降低預(yù)測(cè)精度。因此,考慮來(lái)自供應(yīng)鏈環(huán)境下的產(chǎn)品需求影響因素、多型號(hào)產(chǎn)品自身屬性所造成的需求差異,以及季節(jié)等外部環(huán)境的影響。通過(guò)BP神經(jīng)網(wǎng)絡(luò)模型將影響因素按屬性分類(lèi),做不同數(shù)據(jù)處理后作為神經(jīng)網(wǎng)絡(luò)的輸入變量,進(jìn)一步實(shí)現(xiàn)某型號(hào)產(chǎn)品在多影響因素制約影響作用下的需求預(yù)測(cè)。
目前絕大多數(shù)需求預(yù)測(cè)研究工作都是在單一時(shí)間尺度上進(jìn)行,很少考慮產(chǎn)品在生命周期中的不同時(shí)間段內(nèi)表現(xiàn)出不同的需求特征。在不同時(shí)間段內(nèi)影響因素的不同特征值下各型號(hào)產(chǎn)品呈現(xiàn)出不同的需求特征。比如產(chǎn)品價(jià)格變化與需求變化存在有效聯(lián)系,產(chǎn)品成熟期前降價(jià)較少,銷(xiāo)量逐漸下降進(jìn)入衰退期后,通過(guò)降價(jià)可刺激客戶影響需求量。諸如此類(lèi)多因素影響下,多型號(hào)產(chǎn)品之間存在相互制約作用,最終在同一時(shí)間段內(nèi)多型號(hào)產(chǎn)品呈現(xiàn)出不同的需求形態(tài)。
考慮多型號(hào)產(chǎn)品在生命周期下的某一段時(shí)間內(nèi)受某些因素影響,產(chǎn)品需求出現(xiàn)短期內(nèi)的需求上升、平穩(wěn)、下降等單一形態(tài)。一段時(shí)間內(nèi)的單一需求形態(tài)可能會(huì)在時(shí)間序列中重復(fù)出現(xiàn),呈現(xiàn)周期性需求波動(dòng)變化。最終各型號(hào)產(chǎn)品在各自的生命周期內(nèi),還可能會(huì)呈現(xiàn)出長(zhǎng)期的需求演化趨勢(shì)。
長(zhǎng)時(shí)間序列的樣本數(shù)據(jù)通常包括多種信息疊加,可通過(guò)分解時(shí)間序列抽取不同分量后分別進(jìn)行需求預(yù)測(cè)。所以本文考慮區(qū)別于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)在單一時(shí)間線上預(yù)測(cè)客戶需求,通過(guò)將生命周期內(nèi)的單一時(shí)間線分段,研究不同時(shí)間段內(nèi)的需求特征。鑒于供應(yīng)鏈環(huán)境下存在多個(gè)用戶需求影響因素的特點(diǎn),考慮采用時(shí)序分解和組合預(yù)測(cè)進(jìn)行研究。
RNN神經(jīng)網(wǎng)絡(luò)在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上考慮前后輸入關(guān)系,在隱含層的節(jié)點(diǎn)間建立連接,將隱含層的輸入層與序列中上一個(gè)元素隱含層的輸出共同作用到當(dāng)前的隱藏層。基本RNN結(jié)構(gòu)圖按時(shí)間展開(kāi)如圖1所示,t時(shí)刻神經(jīng)元的輸入包含了返回的t-1時(shí)刻的狀態(tài)ht-1,將捕捉到的歷史信息一并作為輸入。權(quán)重矩陣W就是隱藏層上一次的值作為這一次的輸入的權(quán)重,輸入層到隱含層,隱含層到輸出層的權(quán)重矩陣U、V均不變。
圖1 基本RNN結(jié)構(gòu)圖按時(shí)間展開(kāi)圖
RNN中采用BPTT反向傳播算法,其基本思想是沿著需要優(yōu)化的參數(shù)的負(fù)梯度方向不斷尋找更優(yōu)的點(diǎn)直至收斂,本質(zhì)與BP神經(jīng)網(wǎng)絡(luò)相同,還是梯度下降算法。隨著隱含層數(shù)目的增多,傳統(tǒng)RNN存在梯度消失問(wèn)題[19-20],不能有效捕獲長(zhǎng)時(shí)間的依賴,學(xué)者提出長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)[21]和門(mén)控循環(huán)單元(GRU)[22]來(lái)解決這一問(wèn)題。
區(qū)別于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò),GRU采用門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)代替簡(jiǎn)單的tanh等函數(shù)作為神經(jīng)元模塊組成鏈?zhǔn)侥P汀RU作為RNN一種改進(jìn)模型,解決了RNN梯度消失問(wèn)題。GRU將LSTM中遺忘門(mén)和輸入門(mén)合并為更新門(mén),將原來(lái)三個(gè)“門(mén)”結(jié)構(gòu)組合優(yōu)化成兩個(gè)“門(mén)”,保持了LSTM預(yù)測(cè)效果基礎(chǔ)上,訓(xùn)練參數(shù)更少。單神經(jīng)元的內(nèi)部詳細(xì)結(jié)構(gòu)如圖2所示。其中:zt表示更新門(mén),用于控制前一時(shí)刻的狀態(tài)信息被帶入到當(dāng)前狀態(tài)中的程度,其值越大說(shuō)明前一時(shí)刻的狀態(tài)信息帶入越多;rt表示重置門(mén),用于控制忽略前一時(shí)刻的狀態(tài)信息的程度,其值越小說(shuō)明忽略得越多;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表示更新門(mén),通過(guò)上一個(gè)神經(jīng)元輸出ht-1與本次神經(jīng)元輸入xt相加后乘以更新門(mén)權(quán)重Wz,再使用Sigmoid函數(shù)運(yùn)算。更新門(mén)zt取值越大,當(dāng)前神經(jīng)元保留信息越多,而上一個(gè)神經(jīng)元保留信息越少。更新門(mén)模型如圖3所示。
圖3 更新門(mén)模型
rt=σ(Wr·[ht-1,xt])
(2)
式中:rt表示重置門(mén),通過(guò)上一個(gè)神經(jīng)元輸出ht-1與本次神經(jīng)元輸入xt相加后乘以重置門(mén)權(quán)重Wr,再使用Sigmoid函數(shù)運(yùn)算。重置門(mén)rt取值為0,表示拋棄上一個(gè)神經(jīng)元傳來(lái)的某些無(wú)用信息只取當(dāng)前神經(jīng)元的輸入作為輸入。重置門(mén)模型如圖4所示。
圖4 重置門(mén)模型
(3)
圖5 待定輸入值模型
(4)
圖6 輸出值模型
每個(gè)神經(jīng)元都在決策每次信息的輸出量使得各神經(jīng)元之間存在依賴關(guān)系,重置門(mén)對(duì)于短距離學(xué)習(xí)會(huì)比較活躍,更新門(mén)對(duì)于長(zhǎng)距離學(xué)習(xí)會(huì)比較活躍。
通過(guò)研究不同時(shí)間序列下數(shù)據(jù)變化規(guī)律,可捕獲到不同時(shí)序條件下的需求數(shù)據(jù)特征,在不同時(shí)間序列方面分別建立GRU神經(jīng)網(wǎng)絡(luò)模型,可同時(shí)訓(xùn)練,協(xié)同性強(qiáng),最后再將三組預(yù)測(cè)結(jié)果加權(quán)得到最終預(yù)測(cè)結(jié)果Y1、Y2、Y3、Y4、Y5。
針對(duì)同一種型號(hào)產(chǎn)品,在GRU模型的預(yù)測(cè)基礎(chǔ)上,再結(jié)合其他環(huán)境影響因素,進(jìn)一步實(shí)現(xiàn)某型號(hào)產(chǎn)品需求的精準(zhǔn)預(yù)測(cè)。通過(guò)GRU和BP組合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,最終得出同系列多型號(hào)產(chǎn)品各自的需求量。圖7為本文建立的預(yù)測(cè)模型架構(gòu)圖。
圖7 預(yù)測(cè)模型架構(gòu)
數(shù)據(jù)集選取某銷(xiāo)售商2013年至2018年Lily系列下A、B、C、D、E共5種型號(hào)座椅產(chǎn)品歷史訂單。首先處理原數(shù)據(jù),去除包含缺失值與異常值的數(shù)據(jù)樣本,保證數(shù)據(jù)集內(nèi)無(wú)稀疏記錄與無(wú)效記錄。選取穩(wěn)定長(zhǎng)生命周期的各型號(hào)產(chǎn)品按周統(tǒng)計(jì)的銷(xiāo)售數(shù)據(jù)共計(jì)5 120條,表1為5種型號(hào)產(chǎn)品2016年部分歷史訂單數(shù)據(jù)。
表1 2016年5種型號(hào)產(chǎn)品銷(xiāo)售數(shù)據(jù)
產(chǎn)品在完整生命周期內(nèi)會(huì)大致呈現(xiàn)需求增長(zhǎng)、成熟穩(wěn)定、衰退三種需求形態(tài)。圖8在長(zhǎng)時(shí)間序列跨度中選取了部分歷史需求數(shù)據(jù),可以看出5種型號(hào)產(chǎn)品在各自的生命周期內(nèi)不是呈現(xiàn)單一的增長(zhǎng)等需求形態(tài),而是在不同時(shí)間段內(nèi)呈現(xiàn)出不同的需求波動(dòng)。某一固定時(shí)間段內(nèi),5種型號(hào)產(chǎn)品呈現(xiàn)出不同的需求形態(tài)。
圖8 5種型號(hào)產(chǎn)品需求數(shù)據(jù)圖
各型號(hào)產(chǎn)品在某一短時(shí)間段內(nèi)呈現(xiàn)上升、穩(wěn)定、下降的單一需求形態(tài)。抽取產(chǎn)品D某一短期序列,圖9中x軸表示時(shí)間間隔,y軸表示時(shí)間間隔下產(chǎn)品需求的比值。隨著時(shí)間間隔增加,用戶需求比值呈現(xiàn)正相關(guān)變化,時(shí)間間隔越小,用戶需求相關(guān)性越強(qiáng)。由此可驗(yàn)證用戶短期內(nèi)的需求存在依賴關(guān)系。
圖9 短期需求數(shù)據(jù)分析圖
短時(shí)間內(nèi)形成的單一需求波動(dòng)會(huì)重復(fù)出現(xiàn),如圖10所示,在長(zhǎng)時(shí)間序列下產(chǎn)品D大約以兩周為周期波動(dòng)呈現(xiàn)。不同的周期時(shí)間段上,每次波動(dòng)變化的需求數(shù)據(jù)存在明顯的波峰值,但是每次波動(dòng)的波峰波谷值不相同。
圖10 產(chǎn)品D周期性需求數(shù)據(jù)分析圖
從長(zhǎng)跨度的時(shí)間序列中能夠看出,由于受某些因素影響,在不同的時(shí)間序列段中產(chǎn)品需求表現(xiàn)出一定的周期性,但總體還是會(huì)呈現(xiàn)出長(zhǎng)期需求的大致演化趨勢(shì)。圖8中,產(chǎn)品B和產(chǎn)品D雖然在某些時(shí)間段內(nèi)呈現(xiàn)需求上升過(guò)程,但是它的整體需求還是處于下降趨勢(shì);產(chǎn)品E初始階段總體需求量較少,但能夠看出總體需求水平還是處于上升趨勢(shì)。圖11為產(chǎn)品D的需求長(zhǎng)期演化趨勢(shì)。
圖11 產(chǎn)品D長(zhǎng)期性需求數(shù)據(jù)分析圖
時(shí)間序列數(shù)據(jù)包括了多種信息的疊加,通過(guò)對(duì)樣本數(shù)據(jù)特點(diǎn)分析,可在短時(shí)間序列、周期序列、長(zhǎng)時(shí)間序列三個(gè)方面研究用戶需求的數(shù)據(jù)特征。
時(shí)間序列可將作用于不同時(shí)序條件下的影響因素實(shí)現(xiàn)數(shù)據(jù)分離,短時(shí)間序列可將一條時(shí)間序列上呈現(xiàn)的多型號(hào)產(chǎn)品的多種需求形態(tài),轉(zhuǎn)化為捕獲到在同一短時(shí)間段內(nèi)多型號(hào)產(chǎn)品呈現(xiàn)出單一需求形態(tài)。周期性時(shí)間序列可捕獲到長(zhǎng)時(shí)間序列上的需求數(shù)據(jù)的周期性波動(dòng)信息。長(zhǎng)時(shí)間序列能捕獲某型號(hào)產(chǎn)品在自身生命周期下的需求長(zhǎng)期演化趨勢(shì)。
通過(guò)研究5種型號(hào)產(chǎn)品歷史訂單數(shù)據(jù)所反映的需求特點(diǎn),統(tǒng)計(jì)分析用戶在不同時(shí)間段上的需求數(shù)據(jù)變化特點(diǎn)與規(guī)律,據(jù)此設(shè)計(jì)具有針對(duì)性的建模方案。
采用離散傅里葉變換DFT及離散傅里葉逆變換IDFT,可從需求時(shí)間序列中捕獲所隱含的周期信息和頻域特征。離散傅里葉變換DFT通對(duì)一個(gè)時(shí)域非周期的信號(hào)x(n)作變換,非周期的信號(hào)x(n)經(jīng)過(guò)周期延拓得到一個(gè)周期信號(hào)xtilde(n)。離散傅里葉變換可將離散的時(shí)間序列變換為一組不同振幅、相位和頻率的正弦信號(hào)疊加,完成時(shí)間序列由時(shí)域分析轉(zhuǎn)換到頻域分析。
離散傅里葉變換定義為:
(5)
式中:一個(gè)具有N個(gè)序列值的離散時(shí)間信號(hào)x(n)(n=1,2,…,N),N表示樣本個(gè)數(shù);j2=-1;k為頻域中的頻率點(diǎn)。
逆變換定義為:
(6)
時(shí)間序列的采樣周期為T(mén),采樣頻率f=(1/T),對(duì)應(yīng)幅頻圖橫軸上具有N個(gè)頻率點(diǎn),前后頻率點(diǎn)的頻率間隔△f=(1/T)。第k個(gè)頻率點(diǎn)對(duì)應(yīng)時(shí)域周期信號(hào)的周期為:
(7)
短期內(nèi)的單一需求形態(tài)是一個(gè)平穩(wěn)時(shí)間序列,不含明顯周期性。將分離出單一的短期需求時(shí)間序列進(jìn)行離散傅里葉變換可得到對(duì)應(yīng)幅頻圖,提取出幅值較大的頻率點(diǎn)后進(jìn)行離散傅里葉逆變換,可得到時(shí)間序列中所隱含的周期特征。
在產(chǎn)品短時(shí)間內(nèi)的單一需求形態(tài)上通過(guò)DFT得到的幅頻圖,以產(chǎn)品D為例,由于采樣點(diǎn)過(guò)于密集顯示效果不好,圖12只顯示了54組數(shù)據(jù),x軸表示頻率點(diǎn),y軸表示振幅值。
圖12 頻率圖
從產(chǎn)品需求時(shí)間序列中進(jìn)一步分離出周期性特征,如圖13所示,對(duì)于產(chǎn)品D,將p(周期)設(shè)置為兩周,將t(長(zhǎng)期)設(shè)置為一月。
圖13 周期圖
通常大多數(shù)制造企業(yè),生產(chǎn)的某一系列產(chǎn)品下具有多種型號(hào)產(chǎn)品。通過(guò)同一系列下多種型號(hào)產(chǎn)品各自歷史訂單量作為影響因素,研究同一系列下多種型號(hào)產(chǎn)品之間的相互制約影響??紤]針對(duì)具有時(shí)序性的多年歷史訂單數(shù)據(jù),采用GRU網(wǎng)絡(luò)建模,研究多型號(hào)產(chǎn)品之間的數(shù)據(jù)內(nèi)部動(dòng)態(tài)變化規(guī)律,學(xué)習(xí)序列數(shù)據(jù)中的潛在特征,實(shí)現(xiàn)同一系列下不同型號(hào)產(chǎn)品各自的需求量的預(yù)測(cè)。
步驟1樣本數(shù)據(jù)預(yù)處理,通過(guò)sklearn的preprocessing.MinMaxScaler()對(duì)輸入數(shù)據(jù)預(yù)處理,使其能被模型有效識(shí)別。本文選取將原始數(shù)據(jù)歸一到指定的最小最大數(shù)[0,1]之間,利用式(8)對(duì)數(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種型號(hào)產(chǎn)品,第j種產(chǎn)品特征。
矩陣表示每種型號(hào)產(chǎn)品在t時(shí)刻的歷史訂單量,可按時(shí)間序列順序拼接,設(shè)置利用前三周的歷史訂單數(shù)據(jù)來(lái)預(yù)測(cè)第四周的產(chǎn)品需求量。
步驟2對(duì)輸入矩陣數(shù)據(jù)統(tǒng)計(jì)分析,分別利用生命周期下呈現(xiàn)出的短期、周期、長(zhǎng)期三種需求形態(tài),捕獲不同時(shí)序下的數(shù)據(jù)特征,分別建立GRU神經(jīng)網(wǎng)絡(luò)模型。
步驟3將以上三個(gè)GRU神經(jīng)網(wǎng)絡(luò)模型得到的預(yù)測(cè)結(jié)果w1、w2、w3賦予不同的權(quán)值φ1、φ2、φ3,加權(quán)求解得到GRU最終預(yù)測(cè)結(jié)果W。
企業(yè)業(yè)務(wù)活動(dòng)發(fā)生伴隨著來(lái)源于各地的不確定性,銷(xiāo)售活動(dòng)作為供應(yīng)鏈一個(gè)重要環(huán)節(jié),用戶產(chǎn)品需求與原材料成本的供應(yīng)商、采購(gòu)提前期的生產(chǎn)商等各個(gè)供應(yīng)鏈節(jié)點(diǎn)企業(yè)相關(guān)。從供應(yīng)鏈全局角度分析,將影響產(chǎn)品需求的相關(guān)主體簡(jiǎn)化歸結(jié)為零部件供應(yīng)商、制造企業(yè)和分銷(xiāo)商三類(lèi),其中包含的需求影響因素有零部件供應(yīng)量、采購(gòu)提前期、訂單量、訂單總額、全年銷(xiāo)售百分比、市場(chǎng)需求量等,如圖14所示。
圖14 供應(yīng)鏈用戶需求影響因素
此外,季節(jié)性等非線性因素往往對(duì)該類(lèi)產(chǎn)品市場(chǎng)需求量有一定的影響,該類(lèi)特征內(nèi)部潛在規(guī)律并不明顯,一般的時(shí)間序列無(wú)法基于此類(lèi)影響因子進(jìn)行合理預(yù)測(cè),模擬效果不佳,不適合作為GRU神經(jīng)網(wǎng)絡(luò)輸入。采用BP神經(jīng)網(wǎng)絡(luò)方法能有效處理這些外在因素對(duì)預(yù)測(cè)結(jié)果的影響,從中學(xué)習(xí)該類(lèi)特征與需求的關(guān)系,能以任意精度逼近任意復(fù)雜的非線性映射,提高預(yù)測(cè)精度。
選取BP神經(jīng)網(wǎng)絡(luò)輸入變量主要考慮兩點(diǎn):(1) 能夠?qū)敵鲎兞坑绊懘蟮臄?shù)值變量。(2) 各個(gè)輸入變量之間互不相關(guān)或相關(guān)性很小。
鑒于供應(yīng)商與制造商長(zhǎng)期穩(wěn)定合作,所以供應(yīng)商等級(jí)、品牌效應(yīng)因素不作重點(diǎn)考慮。同一系列下多型號(hào)產(chǎn)品的零部件耗費(fèi)量不同,與之相關(guān)的零部件價(jià)格以及采購(gòu)涉及的人力物力成本都會(huì)影響各型號(hào)產(chǎn)品原材料總成本。綜合統(tǒng)計(jì)各型號(hào)產(chǎn)品耗用數(shù)據(jù),在供應(yīng)商端選取原材料總成本作為需求影響因素之一。
制造商的產(chǎn)品生產(chǎn)消耗各型號(hào)產(chǎn)品的零部件、組件不同,零部件采購(gòu)提前期會(huì)對(duì)產(chǎn)品的生產(chǎn)周期以及及時(shí)供應(yīng)產(chǎn)生影響,所以選取各型號(hào)產(chǎn)品零部件的采購(gòu)提前期作為需求影響因素之一。
產(chǎn)品定價(jià)在考慮零部件總成本基礎(chǔ)上,綜合考慮了各種不同型號(hào)的產(chǎn)品在生產(chǎn)工藝流程上存在的差異,以及工藝生產(chǎn)中所耗費(fèi)的物流、時(shí)間、人力等成本,產(chǎn)品定價(jià)在其各因素相互制約影響下不同,最終影響客戶的購(gòu)買(mǎi)力,所以將產(chǎn)品價(jià)格作為需求影響因素之一。
制造商產(chǎn)品生產(chǎn)的訂單量、訂單總額、分銷(xiāo)商的銷(xiāo)售額、銷(xiāo)售百分比都與產(chǎn)品需求量、產(chǎn)品價(jià)格緊密相關(guān),此類(lèi)相關(guān)因素不作重復(fù)考慮。
多型號(hào)的座椅類(lèi)產(chǎn)品其自身屬性,針對(duì)不同的用戶特征也會(huì)造成需求差異,其承重量、面料材質(zhì)、是否可升降折疊等因素都是用戶選購(gòu)的考慮因素。
此外,考慮季節(jié)對(duì)分銷(xiāo)商的影響,季節(jié)影響因子通過(guò)向銷(xiāo)售、管理人員進(jìn)行調(diào)查分析方式確定,范圍0~1之間,其大小表示該因素對(duì)該座椅產(chǎn)品銷(xiāo)售的影響大小。產(chǎn)品銷(xiāo)售量影響因素匯總?cè)绫?所示。
表2 產(chǎn)品銷(xiāo)售量影響因素
在研究同一系列多型號(hào)產(chǎn)品對(duì)各自需求預(yù)測(cè)基礎(chǔ)上,針對(duì)某一種型號(hào)產(chǎn)品,選取上步GRU預(yù)測(cè)出的需求量,再選取供應(yīng)鏈環(huán)境中包含的原材料總成本、采購(gòu)提前期、產(chǎn)品價(jià)格、季節(jié)影響因素業(yè)作為輸入變量,進(jìn)一步構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)某型號(hào)產(chǎn)品需求量。
對(duì)于供應(yīng)鏈環(huán)境下的影響因素原材料總成本、采購(gòu)提前期等信息從制造業(yè)和銷(xiāo)售報(bào)表中獲取,產(chǎn)品價(jià)格、型號(hào)和承重量從產(chǎn)品詳細(xì)信息單中獲取。數(shù)據(jù)樣本詳細(xì)記錄了每種型號(hào)產(chǎn)品的數(shù)據(jù)特征,該類(lèi)連續(xù)性的屬性可通過(guò)式(8)對(duì)數(shù)據(jù)歸一化處理后直接作為神經(jīng)網(wǎng)絡(luò)的輸入變量。
對(duì)于面料材質(zhì)、是否可升降等一般離散屬性,做One-Hot編碼處理;產(chǎn)品型號(hào)屬于ID離散屬性,采用One-Hot方式編碼后輸入到不同嵌入層[23],把高維向量映射為低維向量做降維處理后再作為輸入變量。
將多個(gè)影響因素屬性值數(shù)據(jù)處理后連接,作為BP神經(jīng)網(wǎng)絡(luò)的輸入變量。神經(jīng)網(wǎng)絡(luò)輸出層表示系統(tǒng)所要實(shí)現(xiàn)的功能目標(biāo),輸出層節(jié)點(diǎn)個(gè)數(shù)匹配目標(biāo)的維度。本文神經(jīng)網(wǎng)絡(luò)的輸出變量選取本月5種型號(hào)產(chǎn)品各自的需求量,設(shè)置輸出層神經(jīng)元個(gè)數(shù)為5。
表3抽取了產(chǎn)品D不同時(shí)間序列中的各個(gè)影響因素需求量、原材料總成本、采購(gòu)提前期、產(chǎn)品價(jià)格、季節(jié)影響因子作為神經(jīng)網(wǎng)絡(luò)輸入變量的值。
表3 某些時(shí)刻影響因素值
實(shí)驗(yàn)環(huán)境在硬件配置為CPU型號(hào)Intel酷睿i73 610QM、CPU主頻2.4 GHz、內(nèi)存容量4 GB(4 GB×1)DDR31 600 MHz、操作系統(tǒng)為Windows 8的PC機(jī)上進(jìn)行。
本文使用Python 3.7構(gòu)建實(shí)驗(yàn)?zāi)P?,使用包括Pybrain、Numpy等Python庫(kù)。GRU模型基于Python的Keras包實(shí)現(xiàn),Keras以TensorFlow或Theano作為后端,是一個(gè)非常方便的深度學(xué)習(xí)框架。Keras對(duì)RNN模型進(jìn)行封裝,在layers包的recurrent模塊中實(shí)現(xiàn)RNN相關(guān)層模型支持,并在wrapper模型中實(shí)現(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,隨機(jī)分配批量梯度下降,每一批樣本用來(lái)優(yōu)化損失函數(shù)。樣本分批后,一次epoch就是用完所有批次的樣本用來(lái)梯度下降。樣本分為100批,優(yōu)化時(shí)需要做100次參數(shù)更新。每一個(gè)epoch參數(shù)更新100次,共10個(gè)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ù)說(shuō)明:
units: RNN輸出維度,匹配輸出結(jié)果設(shè)置為5。
activation: 激活函數(shù),默認(rèn)為tanh。
dropout:控制輸入線性變換的神經(jīng)元失活的比例,0~1之間的浮點(diǎn)數(shù),設(shè)置為0.5。
recurrent_dropout:控制循環(huán)狀態(tài)的線性變換的神經(jīng)元失活比例,0~1之間的浮點(diǎn)數(shù)。
return_sequences:用于stack兩個(gè)層,F(xiàn)alse返回輸出序列最后一個(gè)輸出。
timesteps:表示認(rèn)為每個(gè)輸入數(shù)據(jù)與前多少個(gè)連續(xù)輸入數(shù)據(jù)有關(guān)。
本文利用TensorFlow[24-25]提供的訓(xùn)練模型的Adam優(yōu)化算法[26]進(jìn)行參數(shù)優(yōu)化,它是一個(gè)尋找全局最優(yōu)點(diǎn)的優(yōu)化算法,優(yōu)點(diǎn)主要在于經(jīng)過(guò)偏置校正后,每一次迭代學(xué)習(xí)率都有個(gè)確定范圍,使得參數(shù)比較平穩(wěn)。相比于基礎(chǔ)隨機(jī)梯度下降(SGD)算法,不容易陷于局部?jī)?yōu)點(diǎn),而且速度更快。經(jīng)過(guò)校正后最終Adam算法的更新為:
(9)
計(jì)算損失函數(shù)直接調(diào)用Keras自帶的loss函數(shù)MSE:
(10)
采用GRU神經(jīng)網(wǎng)絡(luò)模型來(lái)預(yù)測(cè)Lily系列下5種型號(hào)產(chǎn)品的需求,數(shù)據(jù)樣本選取了2013年至2018年的歷史訂單。在每一輪神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,實(shí)驗(yàn)設(shè)置通過(guò)前3個(gè)數(shù)據(jù)樣本預(yù)測(cè)第4個(gè)。選取該數(shù)據(jù)集的前80%作為訓(xùn)練集,用于神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)訓(xùn)練,剩下的20%作為測(cè)試集,測(cè)試訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)是否具有良好的泛化能力,設(shè)置學(xué)習(xí)率為0.000 1。圖15-圖19為5種型號(hào)產(chǎn)品的測(cè)試集的預(yù)測(cè)值與真實(shí)值對(duì)比圖。
圖15 A型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖16 B型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖17 C型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖18 D型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖19 E型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
在GRU預(yù)測(cè)基礎(chǔ)上,針對(duì)某一種型號(hào)產(chǎn)品選取對(duì)應(yīng)型號(hào)產(chǎn)品的原材料成本、采購(gòu)提前期、產(chǎn)品價(jià)格、季節(jié)影響因子,作為BP神經(jīng)網(wǎng)絡(luò)的輸入變量,圖20-圖24為輸出5種型號(hào)產(chǎn)品的測(cè)試集預(yù)測(cè)值與真實(shí)值對(duì)比圖。
圖20 A型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖21 B型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖22 C型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖23 D型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
圖24 E型號(hào)產(chǎn)品預(yù)測(cè)結(jié)果對(duì)比
5種型號(hào)產(chǎn)品兩次預(yù)測(cè)結(jié)果誤差統(tǒng)計(jì)分析如表4所示,與單一的GRU預(yù)測(cè)結(jié)果比較,在加入了外部環(huán)境影響因素后,產(chǎn)品需求的在預(yù)測(cè)精度上有很大改善,其平均絕對(duì)百分比誤差由29.11%減少到了11.59%,最大誤差百分比最少可達(dá)到11.61%。
表4 5種型號(hào)產(chǎn)品兩次預(yù)測(cè)結(jié)果誤差 %
從樣本數(shù)據(jù)中隨機(jī)抽取A型號(hào)產(chǎn)品第13至第37周歷史需求數(shù)據(jù),對(duì)預(yù)測(cè)模型進(jìn)行檢驗(yàn)得到預(yù)測(cè)結(jié)果與實(shí)際值對(duì)比如圖25所示。
圖25 A型號(hào)產(chǎn)品抽取需求測(cè)試結(jié)果
本文使用均方根誤差(RMSE)和平均絕對(duì)誤差(MAE)作為預(yù)測(cè)模型的評(píng)價(jià)指標(biāo):
(11)
(12)
為驗(yàn)證本文建立的組合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型的有效性,建立一般BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型和普通循環(huán)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型(RNN)以及單獨(dú)的GRU預(yù)測(cè)模型作為對(duì)照組以更好比較預(yù)測(cè)結(jié)果,模型預(yù)測(cè)結(jié)果如表5所示。
表5 多種預(yù)測(cè)模型預(yù)測(cè)結(jié)果評(píng)價(jià)
通過(guò)真實(shí)值與預(yù)測(cè)值的對(duì)比可以得出,本文構(gòu)建的GRU-BP組合模型的能夠?qū)τ脩粜枨筮M(jìn)行有效預(yù)測(cè),其次針對(duì)用戶需求時(shí)序特點(diǎn)的三方面分解進(jìn)行預(yù)測(cè)也是有效的,說(shuō)明本文構(gòu)建的預(yù)測(cè)模型能夠較好地對(duì)用戶需求特征進(jìn)行提取并充分利用。
針對(duì)產(chǎn)品需求的增長(zhǎng)期、成熟穩(wěn)定期、衰退期這三種生命周期內(nèi)劃分的不同時(shí)間序列段上的產(chǎn)品需求形態(tài),在企業(yè)產(chǎn)能、市場(chǎng)容量受限情況下,再結(jié)合供應(yīng)鏈和外部環(huán)境下的影響因素,通過(guò)GRU與BP神經(jīng)網(wǎng)絡(luò)組合神經(jīng)網(wǎng)絡(luò),將長(zhǎng)時(shí)間序列的多產(chǎn)品多需求形態(tài)轉(zhuǎn)化為捕獲同一時(shí)間段上多型號(hào)產(chǎn)品分布的各自單一需求形態(tài),同時(shí)劃分出的不同時(shí)間序列的循環(huán)神經(jīng)網(wǎng)絡(luò)模型可同時(shí)訓(xùn)練,協(xié)同性強(qiáng)。在基于時(shí)序分解的循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,再考慮其他影響因素,達(dá)到對(duì)某型號(hào)產(chǎn)品需求的全面預(yù)測(cè)。GRU-BP組合模型疊加各個(gè)子序列獲得最終預(yù)測(cè)結(jié)果,效果優(yōu)于單一時(shí)間序列的預(yù)測(cè),能降低各個(gè)模型的預(yù)測(cè)誤差。