高春雷,安 泰,向 兵,董 杰,梁羅希,范訓(xùn)禮
(1.國電南瑞科技股份有限公司,江蘇南京 001111;2.西北大學(xué)信息科學(xué)與技術(shù)學(xué)院,陜西西安 710127)
指數(shù)平滑方法是時(shí)間序列分析的重要方法,在經(jīng)濟(jì)預(yù)測、電力計(jì)量設(shè)備需求預(yù)測、能源節(jié)約等方面有著廣泛的應(yīng)用。平滑系數(shù)是指數(shù)平滑算法中的重要參數(shù)之一,其取值可在[0,1]范圍內(nèi)確定,它的選擇決定預(yù)測的準(zhǔn)確性。傳統(tǒng)方法中平滑系數(shù)是由人工指定,其缺點(diǎn)表現(xiàn)在依賴人工經(jīng)驗(yàn)、不具有動(dòng)態(tài)性。因此很多學(xué)者對平滑系數(shù)進(jìn)行了研究,尋求平滑系數(shù)的自動(dòng)優(yōu)化算法,并取得了顯著的成果。常用的平滑系數(shù)自動(dòng)優(yōu)化算法有:黃金分割法、Fibonacci法、切線法、二分法等[9]。這些自動(dòng)優(yōu)化算法可以在短時(shí)間內(nèi)求出平滑系數(shù)的較優(yōu)值,但僅限于平滑系數(shù)取值為單極值的情況,當(dāng)平滑系數(shù)取值為多極值時(shí),這些算法不能保證求出的值收斂于最優(yōu)平滑系數(shù)。因此,要對平滑系數(shù)進(jìn)行更加深入的研究,以便找到更好的自動(dòng)優(yōu)化算法。
本文采群智能算法之一的粒子群算法來求解指數(shù)平滑算法中的平滑系數(shù),充分利用群智能算法全局尋優(yōu)的特點(diǎn),求解平滑系數(shù)的最優(yōu)值。實(shí)踐證明,改進(jìn)的粒子群算法求出的平滑系數(shù)可以使指數(shù)平滑算法預(yù)測的數(shù)據(jù)更加的準(zhǔn)確,同時(shí)可以避免在平滑系數(shù)取值為多極值的情況下一維搜索算法不能找到最值的情況。
指數(shù)平滑法是對預(yù)測對象的全部歷史序列數(shù)據(jù)通過加權(quán)平均從而進(jìn)行預(yù)測的一種方法。所有的指數(shù)平滑法都是要更新上一時(shí)間步長的計(jì)算結(jié)果,并使用當(dāng)前時(shí)間步長的數(shù)據(jù)中包含的新信息。新的數(shù)據(jù)是通過新舊信息的“通信”得到的,新舊信息所占比例是由平滑系數(shù)來控制的,可見平滑系數(shù)對預(yù)測值的影響至關(guān)重要。本文采用二次平滑算法對數(shù)據(jù)進(jìn)行預(yù)測,也就是在一次平滑的基礎(chǔ)上進(jìn)一步平滑,調(diào)整預(yù)測值。二次指數(shù)平滑模型如下:
由最后得到的平滑值S(1)t和S(2)t計(jì)算得出。式(2)中的 ^Xt+T表示對第t+T個(gè)值進(jìn)行預(yù)測,T=1時(shí)就代表對樣本序列之后的第一個(gè)數(shù)據(jù)進(jìn)行預(yù)測。
通過上面的模型可以看出,預(yù)測值的影響因素有:①平滑系數(shù)α的確定。α值的大小,直接反映出了不同時(shí)間段數(shù)據(jù)的變化趨勢。②初值S0的確定。根據(jù)大量實(shí)驗(yàn)證明,在指數(shù)平滑預(yù)測過程中,如果已知的時(shí)間序列值較多,則初始值S0對后期預(yù)測結(jié)果的影響相對較小,但當(dāng)時(shí)間數(shù)列項(xiàng)數(shù)較少時(shí),其影響亦不能忽視[2]。
在確定預(yù)測模型后,還需要確定預(yù)測模型的精度評價(jià)指標(biāo),在相同精度評價(jià)指標(biāo)下,利用算法對不同取值的平滑系數(shù)進(jìn)行求解,選出評價(jià)指標(biāo)最好值對應(yīng)的平滑系數(shù)作為當(dāng)前預(yù)測序列的最優(yōu)值。本文采用最小預(yù)測誤差平方和(SSE)[11]作為評價(jià)指標(biāo),來求解平滑系數(shù),在并此基礎(chǔ)上利用指數(shù)平滑算法對下一時(shí)間序列的數(shù)據(jù)進(jìn)行預(yù)測。
粒子群算法PSO(partical swarm optimization),是近年來發(fā)展起來的一種新的進(jìn)化算法,由Eberhart博士和Kennedy博士于1995年提出,其源于對鳥群捕食的行為研究[12]。所有的粒子都有一個(gè)由被優(yōu)化的函數(shù)決定的適應(yīng)值(fitness value),每個(gè)粒子還有一個(gè)速度決定他們運(yùn)行的方向和距離,然后粒子們就不斷的向當(dāng)前的最優(yōu)粒子在解空間中的位置趨近。在每一次迭代中,粒子通過兩個(gè)“極值”的位置來更新自己在解空間中的位置,其中一個(gè)就是粒子本身所找到的最優(yōu)解,這個(gè)解叫做局部極值pBest,另一個(gè)極值是整個(gè)種群目前找到的最優(yōu)解,這個(gè)極值是全局極值gBest。再根據(jù)下式來更新粒子的速度和位置。
其中:V是粒子的速度;Present是粒子的當(dāng)前位置;p Best為局部最優(yōu)值;g Best為全局最優(yōu)值;rand()是產(chǎn)生(0,1)之間的隨機(jī)數(shù)的函數(shù);c1和c2被稱作學(xué)習(xí)因子,一般的取值為:c1=c2=2;w是加權(quán)系數(shù)(慣性權(quán)重),取值在0.1到0.9之間。粒子通過兩個(gè)最優(yōu)值的位置來更新,在更新過程中粒子每一維的最大速率限制為Vmax,如果某一維更新后的速度超過設(shè)定的Vmax,那么這一維的速度就被限定為Vmax,最終飛至解空間中最優(yōu)解所在的位置,搜索過程結(jié)束。最后輸出全局最優(yōu)解g Best。
粒子群算法對于求解平滑系數(shù)可以看作粒子在一維的空間中進(jìn)行搜索,由于平滑系數(shù)的取值在0與1之間,則空間的范圍為[0,1],為了更加準(zhǔn)確地找到空間中的最優(yōu)解取粒子的速度范圍為[0.05,0.1],根據(jù)大量的實(shí)驗(yàn)證明,空間中的粒子數(shù)取值在10~20間時(shí),粒子可以更好地找出解空間的最優(yōu)值,因此,對于平滑系數(shù)的求解我們也把解空間分為10段,每段隨機(jī)地取一個(gè)值作為初始值,使用二次平滑算法進(jìn)行預(yù)測計(jì)算,求出預(yù)測值與實(shí)際值的誤差平方和,把由這些平滑系數(shù)計(jì)算出的誤差平方和最小的那個(gè)對應(yīng)的平滑系數(shù)作為本次運(yùn)算最好值。利用粒子群算法的基本公式不斷進(jìn)行迭代,當(dāng)?shù)螖?shù)達(dá)到給定值或達(dá)到預(yù)期給定的精度值時(shí)迭代結(jié)束,輸出最優(yōu)解。
對于基本的粒子群算法求解平滑系數(shù),在α的解空間為單極值時(shí)基本粒子群算法和一維搜索算法都可以很好地找到空間中趨近最優(yōu)解的值。但是,當(dāng)α的解空間中存在多極值時(shí)基本粒子群算法可以比一維搜索算法以更高的概率找到空間中趨近最優(yōu)解的值,也就是說基本粒子算法也不能保證每次找到收斂到最優(yōu)解附近的值,因此要對基本的粒子群算法進(jìn)行改進(jìn),以便算法更加準(zhǔn)確地找到趨近最優(yōu)平滑系數(shù)的值。
基本的粒子群算法在搜索的過程中,每個(gè)粒子都不斷在當(dāng)前粒子歷史最優(yōu)位置和全局粒子歷史最優(yōu)位置的影響下向同一點(diǎn)趨近,當(dāng)α的解空間存在多極值的情況下,搜索粒子可能趨向的位置只是極值并不是最值,這樣粒子就陷入了局部最優(yōu)即陷入“早熟”。為了解決這一問題,很多學(xué)者進(jìn)行了研究,文獻(xiàn)[13]中提出了對基本粒子群算法進(jìn)行變異的思想,其基本思想為:在粒子搜索的過程中,如果全局粒子最優(yōu)位置連續(xù)m次沒有改變,則要對粒子的全局最優(yōu)位置進(jìn)行一次變異,避免其陷入局部最優(yōu)。這種變異算法不足在于迭代次數(shù)不能太少,迭代數(shù)次太少則算法的變異時(shí)機(jī)m取值太小,從而導(dǎo)致算法失去了變異的能力,不能達(dá)到預(yù)測的效果,迭代次數(shù)太多則影響算法執(zhí)行的效率。本文借鑒文獻(xiàn)[14]中提出的限制作用域的思想,并綜合黃金分割法的思想,對基本粒子群算法速度更新公式進(jìn)行改進(jìn),改進(jìn)后的速度更新公式如下
注:當(dāng)隨機(jī)概率大于0.5時(shí),η為正;否則,η為負(fù)。
改進(jìn)的粒子群算法思想為:把平滑系數(shù)的解空間分為10段,每段初始化2個(gè)粒子,依變異概率Pm選擇一個(gè)粒子進(jìn)行變異,變異的粒子按公式(5)改變其運(yùn)行速度,并限制粒子的運(yùn)行空間,使粒子在其作用域當(dāng)中不斷的根據(jù)歷史最優(yōu)點(diǎn)來更新自己的位置,另一個(gè)粒子則按原始公式(4)改變其運(yùn)行速度,不斷向全局最優(yōu)解趨近,最后對比變異粒子與普通粒子的預(yù)測誤差平方和,找出最趨近全局最優(yōu)解的值,作為最優(yōu)平滑系數(shù)輸出。這樣既保證了粒子搜索的全局性又不會(huì)讓粒子陷入局部最優(yōu)。
算法描述如下:
Step1 選定初始值S0及10個(gè)空間段中的20 個(gè)初始平滑系數(shù) αi(i=0,1,2,…,20),每段隨機(jī)出兩個(gè)粒子;
Step2 依概率Pm選擇各段中一個(gè)粒子作為變異粒子,利用二次指數(shù)平滑法對所有粒子,在特定平滑系數(shù)α下計(jì)算預(yù)測值,并計(jì)算預(yù)測值與實(shí)際值間的誤差平方和,對于各段中未選中的粒子,同樣把它們對應(yīng)的平滑系數(shù)作為初始局部最優(yōu)解pBest1,同時(shí)還要對比它們計(jì)算出的預(yù)測值與實(shí)際值間的誤差平方和,把誤差平方和最小值對應(yīng)的平滑系數(shù)作為全局最優(yōu)解gBest1;對于各段中選定的變異粒子,把其對應(yīng)的平滑系數(shù)作為初始局部最優(yōu)解pBest2;
Step3 對于各段中未選中的粒子,按式(3,4)更新粒子的位置,并計(jì)算誤差平方和,根據(jù)誤差平方和的優(yōu)劣更新粒子的局部最優(yōu)解pBest1和全局最優(yōu)解gBest1;對于各段中選中的變異粒子,按式(4,5)更新粒子的位置,并計(jì)算誤差平方和,根據(jù)誤差平方和的優(yōu)劣更新粒子的局部最優(yōu)解pBest2;
Step4 當(dāng)?shù)螖?shù)達(dá)到預(yù)定的迭代次數(shù)時(shí)轉(zhuǎn)下一步;否則,轉(zhuǎn)Step3繼續(xù)循環(huán);
Step5 求解各段中變異粒子的最優(yōu)解pBest2的預(yù)測誤差平方和并進(jìn)行比較,選出全局最優(yōu)解 gBest2,對比兩個(gè)全局最優(yōu)解gBest1和gBest2,選出預(yù)測誤差平方和值較小的那個(gè)作為全局最優(yōu)解輸出,并利用全局最優(yōu)解預(yù)測給定時(shí)間序列的下一數(shù)據(jù)值輸出。
本文采用的數(shù)據(jù)分別來自天拓咨詢統(tǒng)計(jì)的2010年到2012年全社會(huì)電量數(shù)據(jù)表(原數(shù)據(jù)見:http://www.tianinfo.com/news/news4116.html)、中國產(chǎn)業(yè)洞察網(wǎng)統(tǒng)計(jì)的各行業(yè)單月用電量數(shù)據(jù)表(原 數(shù) 據(jù) 見:http://www.51report.com/free/3014608.html)、中電聯(lián)長江證券研究部統(tǒng)計(jì)的重點(diǎn)行業(yè)用電產(chǎn)業(yè)表(原數(shù)據(jù)見:http://pg.jrj.com.cn/acc/Res/CN-RES/INDUS/2013/4/21/29a1cc75-cb6c-4028-8d9c-421f62f1b881.pdf)等,這些數(shù)據(jù)都是權(quán)威網(wǎng)站的統(tǒng)計(jì)數(shù)據(jù),具有事實(shí)說服力。
以中國產(chǎn)業(yè)洞察網(wǎng)統(tǒng)計(jì)的各行業(yè)2010年、2011年單月用電量數(shù)據(jù)為預(yù)測的歷史數(shù)據(jù),2012年單月用電量作為預(yù)測數(shù)據(jù),分別用典型的一維自動(dòng)尋優(yōu)算法黃金分割法、文獻(xiàn)[12]中提出的改進(jìn)粒子群算法以及本文提出的改進(jìn)粒子群算法進(jìn)行數(shù)據(jù),并與實(shí)際數(shù)據(jù)相比較得到如下的對比圖。
圖1 各產(chǎn)業(yè)單月用電情況及預(yù)測值Fig.1 Mon thly electricity consumption in various industries and predictive value
從以上不同算法求出的平滑系數(shù)進(jìn)行預(yù)測的值與實(shí)際值對比的折線圖可以看出,在相同迭代次數(shù)下,改進(jìn)的粒子群算法要比基本粒子群算法、一維黃金分割法以及文獻(xiàn)[12]中提出的變異粒子群算法預(yù)測的數(shù)據(jù)更為準(zhǔn)確。
本文針對指數(shù)平滑算法的典型問題之一的平滑系數(shù)如何確定的問題進(jìn)行了研究,采用群智能算法之一的粒子群算法,并針對現(xiàn)有算法及基本粒子群算法求解平滑系數(shù)的不足之處進(jìn)行了改進(jìn),同時(shí)避免了文獻(xiàn)[12]中變異粒子群的缺陷。通過編程及對實(shí)際數(shù)據(jù)的仿真實(shí)驗(yàn),得出本文提出的改進(jìn)粒子群算法可以比一般算法更加準(zhǔn)確地求出收斂于最優(yōu)平滑系數(shù)的值,且可以避免算法中的“早熟”現(xiàn)象,本文研究成果已應(yīng)用在“計(jì)劃模型軟件”系統(tǒng)中,用于基于歷史數(shù)據(jù)的電力計(jì)量裝置需求預(yù)測,取得良好的應(yīng)用效果。
[1] 徐大江.預(yù)測模型參數(shù)的指數(shù)平滑估計(jì)法及其應(yīng)用的進(jìn)一步研究[J].系統(tǒng)工程理論與實(shí)踐,1999(2):25-30.
[2] 吳德會(huì).動(dòng)態(tài)指數(shù)平滑預(yù)測方法及其應(yīng)用[J].系統(tǒng)管理學(xué)報(bào),2008(4):151-155.
[3] GOODELL B R.Smoothing forecasting and predition of discrete time series[M].Englewood:Pretice-Hall,2004:3-24.
[4] 張忠平.指數(shù)平滑法[M].北京:中國統(tǒng)計(jì)出版社,1996:36-49.
[5] 金旭星,盛奎川.指數(shù)平滑參數(shù)與初值的選取研究[J].江南大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,4(3):316-319.
[6] 唐炎森.指數(shù)平滑預(yù)測公式與平滑系數(shù)[J].統(tǒng)計(jì)與信息論壇,1998(1):38-43.
[7] 黎鎖平,劉坤會(huì).平滑系數(shù)自適應(yīng)的二次指數(shù)平滑模型及其應(yīng)用[J].系統(tǒng)工程理論與實(shí)踐,2004(2):95-99.
[8] 盧永芳,程志磊,王曉衛(wèi),等.基于時(shí)序指數(shù)平滑法的風(fēng)電場功率預(yù)測研究[J].工礦自動(dòng)化,2012(8):75-78.
[9]吳奕.溫特斯季節(jié)指數(shù)平滑模型預(yù)測電力峰荷的方法[J].硅谷,2011(23):179-180.
[10]李穎.時(shí)間序列指數(shù)平滑算法的改進(jìn)研究[D].遼寧工程技術(shù)大學(xué),2009.
[11] ARMSTRONG,J S.Findings from evidence-based forecasting:Methods for reducing forecast error[J].International Journal of Forecasting,2006,22:583-598.
[12] KENNEDY J,EBERHART R.Particle swarm optimization[C].IEEE International Conference on Neural Networks(Perth,Australia),Piscataway:IEEE Service Center,1942-1948,1995.
[13]王海峰,劉晶晶.全局最優(yōu)位置變異粒子群優(yōu)化算法[J].青島理工大學(xué)學(xué)報(bào),2009(5):93-97.
[14]龐淑萍.有限作用域的混沌粒子群優(yōu)化算法[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(12):39-42.