李廣儒,張 新,朱慶輝
(大連海事大學(xué) 航海學(xué)院,大連 遼寧 116026)
港口吞吐量體現(xiàn)港口的作業(yè)規(guī)模和經(jīng)營成果,是衡量港口建設(shè)發(fā)展的重要指標(biāo)。通過對港口吞吐量的預(yù)測,實(shí)現(xiàn)對港口未來短期及長期作業(yè)量的感知,可指導(dǎo)港口企業(yè)提前部署港口作業(yè)設(shè)施,有效銜接碼頭裝卸和堆場作業(yè),減少貨物在港周轉(zhuǎn)時間。隨著港口智能化水平的不斷升級,港口作業(yè)更加高效,對港口吞吐量預(yù)測的準(zhǔn)確度提出了更高的要求。
目前,針對港口貨物吞吐量的預(yù)測模型有很多,如灰色預(yù)測模型[1]、時間序列模型[2]、回歸預(yù)測模型[3]、Logistic生長預(yù)測模型等。同時,由于神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的非線性擬合能力,有學(xué)者亦將神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于港口吞吐量的預(yù)測。例如,劉枚蓮等[4]使用BP神經(jīng)網(wǎng)絡(luò)對廣西北部灣港口吞吐量進(jìn)行預(yù)測;劉長儉等[5]通過基于時間序列的BP神經(jīng)網(wǎng)絡(luò),對天津港集裝箱吞吐量進(jìn)行了預(yù)測;李季濤等[6]通過RBF神經(jīng)網(wǎng)絡(luò)算法對大連港的吞吐量進(jìn)行預(yù)測。以上各類方法雖采取了不同的預(yù)測模型,但均是將預(yù)測問題轉(zhuǎn)化為靜態(tài)建模問題求解,具有一定的局限性。
針對港口貨物吞吐量基于時間序列動態(tài)變化的數(shù)據(jù)特點(diǎn),楊珩等[7]采用Elman神經(jīng)網(wǎng)絡(luò)對港口貨物吞吐量進(jìn)行預(yù)測,取得了一定的預(yù)測效果。但由于Elman神經(jīng)網(wǎng)絡(luò)通常使用梯度下降法作為學(xué)習(xí)規(guī)則,導(dǎo)致進(jìn)行模型訓(xùn)練和預(yù)測時,容易出現(xiàn)收斂過程不穩(wěn)定、收斂速度慢、陷入局部最優(yōu)值[8]等缺陷,導(dǎo)致預(yù)測誤差增大。Adaboost算法將多個弱預(yù)測器組合形成強(qiáng)預(yù)測器,通過對弱預(yù)測器設(shè)置不同的權(quán)重,能夠?qū)㈩A(yù)測誤差大的樣本分離出來,從而更加重視對誤差較大的數(shù)據(jù)的訓(xùn)練,達(dá)到更高的精度。筆者將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器,進(jìn)行港口吞吐量的預(yù)測,同時選擇Adaboost算法將多個弱預(yù)測器組成Elman-Adaboost強(qiáng)預(yù)測器模型。然后采用該方法對寧波-舟山港的港口吞吐量進(jìn)行預(yù)測,并將預(yù)測結(jié)果與相同數(shù)據(jù)及構(gòu)建方式下的BP、BP-Adaboost以及Elman神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果進(jìn)行比較。
Elman神經(jīng)網(wǎng)絡(luò)是J.L.ElMAN[9]在1990年提出的。Elman模型在前饋式網(wǎng)絡(luò)的隱含層中加入了一個承接層作為一步延時的算子,以達(dá)到記憶目的,這使系統(tǒng)能更好適應(yīng)時變特性,從而具有反映動態(tài)過程系統(tǒng)特性的能力。Elman神經(jīng)網(wǎng)絡(luò)由輸入層、隱含層、承接層和輸出層共4層組成,如圖1。相比于BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu),Elman的承接層用于記憶隱含層單元前一時間的輸出值,能夠表達(dá)輸入和輸出間的時間延遲[10]。
圖1 Elman神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
Adaboost算法是“Adaptive Boosting”(自適應(yīng)增強(qiáng))的縮寫,由Yoav Freund和Robert Schapire在1995年提出,屬于一種迭代算法。算法通過合并多個“弱”分類器的輸出,將訓(xùn)練數(shù)據(jù)樣本進(jìn)行有效分類。Adaboost算法首先給出弱學(xué)習(xí)算法和數(shù)據(jù)樣本,在開始訓(xùn)練時,對每組數(shù)據(jù)樣本賦予相同的權(quán)重,通過弱學(xué)習(xí)算法運(yùn)算T次后,將運(yùn)算結(jié)果分類并調(diào)整權(quán)重分布。對于預(yù)測誤差大的樣本,賦予其更大的權(quán)重,在下一次迭代運(yùn)算時,系統(tǒng)將更加關(guān)注這些樣本。在新的樣本分布下,對弱分類器再次進(jìn)行訓(xùn)練。經(jīng)過T次反復(fù)迭代后,能夠得到T個弱分類器,把這T個弱分類器加權(quán)疊加,得到最終的強(qiáng)分類函數(shù)[11-13]。
Elman-Adaboost強(qiáng)預(yù)測器模型首先將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器,用Elman神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)樣本進(jìn)行訓(xùn)練、預(yù)測,并使用Adaboost算法優(yōu)化多個基于Elman的弱預(yù)測器,從而組成強(qiáng)預(yù)測器。由此構(gòu)造的Elman-Adaboost強(qiáng)預(yù)測器港口吞吐量預(yù)測模型如圖2。
圖2 基于Elman-Adaboost的強(qiáng)預(yù)測器港口吞吐量預(yù)測模型
Elman-Adaboost強(qiáng)預(yù)測器的算法步驟如下:
1)選擇數(shù)據(jù)、處理數(shù)據(jù)
選擇原始的訓(xùn)練數(shù)據(jù),對數(shù)據(jù)進(jìn)行歸一化處理。初始化測試數(shù)據(jù)的分布權(quán)值Dt(i)=1/m,根據(jù)數(shù)據(jù)樣本的輸入輸出維數(shù),確定神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),初始化Elman神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值。
2)弱預(yù)測器預(yù)測
訓(xùn)練第t個弱預(yù)測器時,用訓(xùn)練數(shù)據(jù)訓(xùn)練Elman神經(jīng)網(wǎng)絡(luò)并且預(yù)測訓(xùn)練數(shù)據(jù)輸出,能得到預(yù)測序列g(shù)(t)的預(yù)測誤差之和et,計算如式(1):
et=∑iDi(i),i=1,2…,m。且(g(t)≠y)
(1)
式中:g(t)是預(yù)測分類結(jié)果;y是期望分類的結(jié)果。
3)計算預(yù)測序列的權(quán)重
根據(jù)預(yù)測序列g(shù)(t)的預(yù)測誤差et計算預(yù)測序列的權(quán)重at,如式(2):
(2)
4)調(diào)整測試數(shù)據(jù)權(quán)重
根據(jù)預(yù)測序列的權(quán)重at,設(shè)置下一輪訓(xùn)練樣本的權(quán)重,如式(3):
(3)
式中:Bt是歸一化因子,目的在于使分布權(quán)值在權(quán)重比例不變的情況下和為1,即:
(4)
5)構(gòu)建強(qiáng)預(yù)測函數(shù)
訓(xùn)練T輪后可以得到T個弱預(yù)測函數(shù)f(gt,at),組合得到強(qiáng)預(yù)測函數(shù)h(x),如式(5):
(5)
寧波-舟山港是中國第一大港口,是國內(nèi)重要的鐵礦石中轉(zhuǎn)、液體化工儲運(yùn)基地和原油轉(zhuǎn)運(yùn)基地、及華東地區(qū)重要的煤炭、糧食儲運(yùn)基地。2017年,港口年貨物吞吐量完成10.1×108t,是突破10×108t的超級大港。筆者以中國港口網(wǎng)數(shù)據(jù)為數(shù)據(jù)來源,收集整理2011年1月—2017年8月共計80 m的寧波-舟山港港口月吞吐量數(shù)據(jù),數(shù)據(jù)按照時間順序排列。在進(jìn)行Elman神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時,筆者使用連續(xù)6 m的吞吐量數(shù)據(jù),遞歸預(yù)測下一個月的數(shù)據(jù)方式構(gòu)建樣本數(shù)據(jù),即神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點(diǎn)數(shù)為6,輸出節(jié)點(diǎn)數(shù)為1。以2015年的寧波—舟山港貨物月吞吐量為例,原始數(shù)據(jù)如表1,構(gòu)建形成的數(shù)據(jù)樣本如表2。經(jīng)過上述方法處理,可將原始的80 m的數(shù)據(jù)轉(zhuǎn)換為74組數(shù)據(jù)樣本。將前69組數(shù)據(jù)作為Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型的訓(xùn)練數(shù)據(jù),后6組(2017年4月~8月)的數(shù)據(jù)作為Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型的測試數(shù)據(jù)。為更好適應(yīng)該模型,所有數(shù)據(jù)在輸入Elman神經(jīng)網(wǎng)絡(luò)前,均進(jìn)行數(shù)據(jù)歸一化處理。
表1 2015年寧波-舟山港的貨物月吞吐量
表2 樣本數(shù)據(jù)示例
使用MATLAB進(jìn)行Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型仿真,根據(jù)港口吞吐量數(shù)據(jù)特點(diǎn),確定模型隱層節(jié)點(diǎn)的個數(shù)和弱預(yù)測器的個數(shù)。經(jīng)過多次試驗(yàn),最終采用的Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)為6-7-1,即Elman神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù)為6個,輸出層節(jié)點(diǎn)數(shù)為1個,隱含層節(jié)點(diǎn)數(shù)為7個;訓(xùn)練生成的Elman弱預(yù)測器的數(shù)目設(shè)置為10個,即Adaboost算法中弱預(yù)測器數(shù)目K=10。
筆者選取絕對百分比誤差最大值tMAX、平均絕對誤差tMAE、平均絕對百分比誤差tMAPE以及均方根誤差tRMSE,作為檢驗(yàn)?zāi)P皖A(yù)測結(jié)果的標(biāo)準(zhǔn)[14-15]:
(6)
(7)
(8)
(9)
式中:dfi是Elman-Adaboost強(qiáng)預(yù)測器的預(yù)測值;dmi是港口吞吐量的真實(shí)值。
上述4項評價指標(biāo)值越小,則預(yù)測的精度越高。
為驗(yàn)證Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型的有效性,將預(yù)測結(jié)果與相同構(gòu)建方式下的單一BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型、單一Elman神經(jīng)網(wǎng)絡(luò)預(yù)測模型以及BP-Adaboost強(qiáng)預(yù)測器預(yù)測模型的預(yù)測結(jié)果進(jìn)行比較分析。
首先用整理好的訓(xùn)練數(shù)據(jù)(69組)分別對以上4種預(yù)測模型進(jìn)行訓(xùn)練,然后用訓(xùn)練好的預(yù)測模型對寧波—舟山港2017年4~8月的港口貨物吞吐量進(jìn)行預(yù)測,將各模型預(yù)測結(jié)果與真實(shí)值進(jìn)行誤差分析。4種預(yù)測模型得到的預(yù)測結(jié)果如圖3,各預(yù)測模型對測試數(shù)據(jù)的預(yù)測結(jié)果的誤差評價指標(biāo)如表3、表4。
圖3 4種預(yù)測模型的預(yù)測值與真實(shí)值
表3 4種預(yù)測模型的港口吞吐量預(yù)測值與預(yù)測誤差
表4 四種預(yù)測模型的誤差評價指標(biāo)值
由表3和表4的各預(yù)測模型的預(yù)測結(jié)果及評價指標(biāo)分析比較可知,使用Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型、BP-Adaboost強(qiáng)預(yù)測器預(yù)測模型、Elman神經(jīng)網(wǎng)絡(luò)預(yù)測模型、BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型進(jìn)行港口貨物吞吐量的預(yù)測,均可以實(shí)現(xiàn)不同程度的預(yù)測效果。相比較而言,Elman-Adaboost模型的預(yù)測值的平均絕對誤差、平均絕對百分比誤差以及均方根誤差最小,預(yù)測值與真實(shí)值的數(shù)據(jù)擬合程度更高,預(yù)測結(jié)果的相對誤差最大值1.91%,最小值0.06%,可以將預(yù)測誤差控制在2%以下,預(yù)測模型具有更好的精度。
1)使用Adaboost算法優(yōu)化Elman神經(jīng)網(wǎng)絡(luò)構(gòu)建Elman-Adaboost強(qiáng)預(yù)測器預(yù)測模型,并應(yīng)用于港口貨物吞吐量的預(yù)測,預(yù)測值的擬合效果好,預(yù)測精度高。
2)通過Elman-Adaboost強(qiáng)預(yù)測器模型與BP、Elman、BP-Adaboost模型的預(yù)測結(jié)果的百分比誤差最大值、平均絕對誤差、平均百分比絕對誤差以及均方根誤差的對比,發(fā)現(xiàn)Elman-Adaboost強(qiáng)預(yù)測器模型的預(yù)測結(jié)果的相對誤差最大值1.91%,最小值0.06%,可以將預(yù)測誤差控制在2%以下,預(yù)測模型具有更好的精度。
3)港口實(shí)際生產(chǎn)作業(yè)及發(fā)展規(guī)劃中,使用該模型預(yù)測時,應(yīng)結(jié)合各港口吞吐量數(shù)據(jù)的實(shí)際情況對模型進(jìn)行訓(xùn)練,以達(dá)到更好的預(yù)測效果。