高 帥, 胡紅萍, 李 洋, 白艷萍
(1. 中北大學(xué) 理學(xué)院, 山西 太原 030051; 2. 西安電子科技大學(xué) 電子工程學(xué)院, 陜西 西安 710071)
隨著經(jīng)濟(jì)建設(shè)和城市化的進(jìn)程日益加快, 人民的生活質(zhì)量日益提高, 但是能源大量消耗和污染物排放造成的空氣污染問題日趨嚴(yán)重, 霧霾天氣日漸增多, 嚴(yán)重影響著人們的日常生活和身心健康. 因此, 空氣質(zhì)量預(yù)測(cè)對(duì)指導(dǎo)人們生活和工作具有極其重要的意義. 空氣質(zhì)量指數(shù)(AQI)是衡量空氣質(zhì)量的重要依據(jù). 空氣質(zhì)量數(shù)據(jù)是高度復(fù)雜的非線性時(shí)間序列, 運(yùn)用傳統(tǒng)的線性方法難以取得良好的預(yù)測(cè)結(jié)果. 近年來, 智能優(yōu)化算法飛速發(fā)展并廣泛應(yīng)用于空氣質(zhì)量問題, 其強(qiáng)大的搜索能力, 易于尋找最優(yōu)解的特點(diǎn), 得到了眾多學(xué)者的青睞. 通常用于空氣質(zhì)量預(yù)測(cè)的智能優(yōu)化算法主要有支持向量機(jī)(Support Vector Machines, SVM)[1]、 遺傳算法(Genetic Algorithm, GA)[2]、 粒子群優(yōu)化算法(Particle Swarm Optimization, PSO)[3]、 人工魚群算法[4]等. 文獻(xiàn)[1]采用支持向量機(jī)空氣質(zhì)量預(yù)測(cè)時(shí), 預(yù)測(cè)精度提高但計(jì)算時(shí)間長(zhǎng), 懲罰函數(shù)c和核函數(shù)參數(shù)g難以尋優(yōu). 文獻(xiàn)[2]指出遺傳算法算法預(yù)測(cè)AQI時(shí), 雖然遺傳算子和交叉算子能快速收斂, 但在由于變異的不確定性, 極易陷入局部最優(yōu). 飛蛾撲火優(yōu)化算法作為一種新型的群智能優(yōu)化算法, 在工程方面的應(yīng)用還比較少. 文獻(xiàn)[5]嘗試用MFO算法優(yōu)化電力系統(tǒng)自動(dòng)控制器參數(shù), 雖然取得良好的效果, 但局部極值亟待解決.
本文針對(duì)飛蛾撲火優(yōu)化(MFO)算法容易陷入局部最優(yōu)、 支持向量機(jī)(SVM)懲罰函數(shù)c和核函數(shù)參數(shù)g難以尋優(yōu)問題, 借鑒支持向量機(jī)(SVM)所需樣本少和全局最優(yōu)的優(yōu)點(diǎn), 并結(jié)合飛蛾撲火優(yōu)化算法, 來提高SVM的性能, 同時(shí)避免飛蛾撲火優(yōu)化算法陷入局部最優(yōu).
蛾是一種奇特的昆蟲, 與蝴蝶家族非常相似[6-8]. 它們通過一種特殊的橫向定位機(jī)制進(jìn)行導(dǎo)航, 飛蛾在飛行中保持相對(duì)于月球的固定角度, 由于月球遠(yuǎn)離飛蛾, 這種機(jī)制可以保證飛蛾沿平直線飛行. 當(dāng)飛蛾看到人造光時(shí), 它們會(huì)試圖保持與光線相似的角度直線飛行, 但由于這樣的光線比月球的光線距離近很多, 因此與光源保持相似的角度會(huì)導(dǎo)致飛蛾無用的或致命的螺旋飛行路徑, 飛蛾最終會(huì)向光收斂. 通過對(duì)該行為建模, 提出Moth-Flame Optimization(MFO)算法[7].
MFO算法中, 假設(shè)候選解是飛蛾, 問題的變量是空間中飛蛾的位置. 因此, 通過改變其位置向量, 飛蛾可以在一維、 二維、 三維或超維空間中飛行. 由于MFO算法是基于群體的算法, 所以蛾的集合用矩陣M表示, 矩陣OM表示蛾的適應(yīng)度值, 另一個(gè)關(guān)鍵的要素是火焰, 類似于蛾矩陣, 火焰的集合用矩陣F表示, 矩陣OF表示火焰的適應(yīng)度值, 表示為
(1)
(2)
式中:n是飛蛾的數(shù)量;d是變量的數(shù)量(維數(shù)).
矩陣OM適應(yīng)度值是每個(gè)飛蛾的適應(yīng)度(目標(biāo))函數(shù)的返回值. 將每個(gè)蛾的位置矢量傳遞給適應(yīng)度函數(shù), 并將適應(yīng)度函數(shù)的輸出分配給相應(yīng)的蛾作為其適應(yīng)度值. 飛蛾是搜索空間移動(dòng)的實(shí)際搜索代理, 而火焰是迄今為止獲得的飛蛾的最佳位置. 因此, 每個(gè)飛蛾都會(huì)搜索一個(gè)旗幟(火焰), 并在找到更好的解決方案的情況下進(jìn)行更新. 通過這種機(jī)制, 飛蛾不會(huì)失去最好的解決方案.
MFO算法是一個(gè)三元組, 它近似于優(yōu)化問題的全局優(yōu)化, 定義為
MFO=(I,P,T),
(3)
I是一個(gè)產(chǎn)生隨機(jī)蛾數(shù)和相應(yīng)適應(yīng)度值的函數(shù). 該函數(shù)為
I∶φ={M,OM}.
(4)
作為主要作用的P函數(shù)將使蛾在搜索空間周圍移動(dòng). 該函數(shù)接收到M矩陣, 并最終返回其更新的矩陣.
P∶M→M.
(5)
如果滿足終止條件, 則T函數(shù)返回true, 如果終止標(biāo)準(zhǔn)不滿足, 則返回false.
T∶M→{true,false}.
(6)
函數(shù)I初始化后生成初始解, 并計(jì)算目標(biāo)函數(shù)值.P函數(shù)迭代運(yùn)行, 直到T函數(shù)返回true. 使用等式(7)更新每個(gè)飛蛾相對(duì)于火焰的位置.
Mi=S(Mi,Fj),
(7)
式中:Mi表示第i個(gè)飛蛾;Fj表示第j個(gè)火焰;S是螺旋功能. 本文選擇對(duì)數(shù)螺旋作為飛蛾的主要更新機(jī)制, 螺旋定義為
S(Mi,Fj)=Di·ebt·cos(2πt)+Fj,
(8)
式中:Di表示第j個(gè)火焰和第i個(gè)飛蛾的距離;b是用于定義對(duì)數(shù)螺旋形狀的常數(shù);t是[1,1]中的隨機(jī)數(shù).
Di=|Fj-Mi|,
(9)
方程(8)是模擬飛蛾螺旋飛行的路徑, 該等式中, 飛蛾的下一個(gè)位置是相對(duì)于火焰定義的. 螺旋方程中的t參數(shù)定義了蛾的下一個(gè)位置接近于火焰的程度(t=-1是火焰最近的位置, 而t=1表示最遠(yuǎn)). 每只蛾只需要使用方程(8)對(duì)一個(gè)火焰更新其位置, 每次迭代在更新火焰列表之后, 根據(jù)其適合度值對(duì)火焰進(jìn)行排序, 然后飛蛾更新它們相對(duì)于相應(yīng)火焰的位置. 第一個(gè)飛蛾總是更新它相對(duì)于最好的火焰的位置, 而最后一個(gè)飛蛾更新相對(duì)于列表中最差的火焰的位置. 搜索空間中相對(duì)于n個(gè)不同位置的飛蛾的位置更新可能降低對(duì)最有希望的解決方案的利用率. 為了解決這個(gè)問題, 提出了適應(yīng)機(jī)制的數(shù)量火焰. 在迭代過程中火焰的數(shù)量使用公式(10)自適應(yīng)地降低.
(10)
式中:L是當(dāng)前迭代次數(shù);N是火焰數(shù);T表示最大迭代次數(shù).P函數(shù)的執(zhí)行步驟如下:
用式(10)計(jì)算更新火焰數(shù)量
計(jì)算飛蛾的適應(yīng)度函數(shù)值
if 迭代次數(shù)為1
F=sort(M);
OF=sort(OM);
else
F=sort(Mt-1,Mt);
OF=sort(Mt-1,Mt);
end
fori=1∶n
forj=1∶d
更新r和t
用式(9)計(jì)算飛蛾與相應(yīng)火焰之間的距離
用式(7)和(8)更新飛蛾與相應(yīng)火焰之間的距離M(i,j)
end
end
如上所述, 執(zhí)行P函數(shù)直到T函數(shù)返回true.P函數(shù)終止后, 最佳飛蛾作為獲得的最佳近似值返回.
支持向量機(jī)[9-10]中懲罰函數(shù)參數(shù)c和核函數(shù)參數(shù)g對(duì)分類預(yù)測(cè)的準(zhǔn)確性有很大的影響, 但目前還沒有調(diào)整c和g的較好的算法. 通常采用的是網(wǎng)格法, 但是當(dāng)搜索范圍較大時(shí)這種網(wǎng)格法比較費(fèi)時(shí).
本文將c和g兩個(gè)參數(shù)作為MFO算法的優(yōu)化變量, 將SVM作為MFO的評(píng)估函數(shù), 提出了MFO-SVM算法. 將訓(xùn)練集在K-CV意義下的準(zhǔn)確率作為 MFO中的適應(yīng)度函數(shù), 利用MFO對(duì) SVM 參數(shù)進(jìn)行優(yōu)化的整體算法過程如圖 1 所示.
圖 1 運(yùn)用MFO優(yōu)化SVM參數(shù)的流程圖Fig.1 Flowchart for optimizing SVM parameters using MFO
MFO-SVM算法具體步驟如下:
1) 原始數(shù)據(jù)信息?;?, 每4天作為一個(gè)?;翱?, 采用三角模糊粒子作為隸屬度函數(shù), 找到每個(gè)窗口的最小值Low、 平均值R和最大值Up. 隸屬度函數(shù)為
(11)
式中:a為最小值Low;m為平均值R;b表示最大值Up.
2)考慮到數(shù)據(jù)的廣泛范圍, 對(duì)Low, R和Up歸一化, 以確保所有的變量的值在0和5之間變化. 歸一化如下
(12)
式中:P為樣本數(shù)據(jù);PN是P的歸一化值;Pmin是P的最小值;Pmax是P的最大值.
3) 確定適應(yīng)度函數(shù). 將訓(xùn)練集 K-CV 意義下的準(zhǔn)確率作為 MFO中的適應(yīng)度函數(shù);
4) 初始化. 創(chuàng)建第一個(gè)隨機(jī)的飛蛾群體;
5) 計(jì)算適應(yīng)度函數(shù)值, 判斷是否滿足終止條件(最大進(jìn)化代數(shù)), 如果滿足, 則執(zhí)行步驟7, 否則執(zhí)行步驟6;
6) 通過飛蛾排序、 更新火焰數(shù)量和更新飛蛾相對(duì)火焰位置找到最優(yōu)解;
7) 輸出最優(yōu)解(bestc, bestg);
8) 使用MFO-SVM算法訓(xùn)練數(shù)據(jù), 然后使用R2(平方相關(guān)系數(shù))和MAPE(相對(duì)誤差)評(píng)估算法.
(13)
(14)
實(shí)驗(yàn)數(shù)據(jù)來源于中華人民共和國環(huán)境保護(hù)部(http:∥datacenter.mep.gov.cn/index)發(fā)布的山西省太原市和大同市實(shí)時(shí)空氣質(zhì)量數(shù)據(jù), 采樣時(shí)間為2015年1月1日至2017年3月10日, 采樣頻率為每天一次, 數(shù)據(jù)各計(jì)800組. 根據(jù)最新頒布的 《環(huán)境空氣質(zhì)量標(biāo)準(zhǔn)》(GB 3095-2012), 本次空氣質(zhì)量預(yù)測(cè)將空氣質(zhì)量指數(shù)(AQI)、 細(xì)顆粒物(PM2.5)、 可吸入顆粒物(PM10)、 二氧化硫(SO2)、 一氧化碳(CO)、 二氧化氮(NO2)、 臭氧(O3)納入預(yù)測(cè)體系中[11-12].
本文選取上述第t天7個(gè)指標(biāo)作為輸入變量, 第t+1天的AQI作為輸出, 并把預(yù)測(cè)等級(jí)劃分I級(jí)(優(yōu)), II級(jí)(良), III級(jí)(輕度污染), IV級(jí)(中等污染), V級(jí)(重度污染), 第VI類(嚴(yán)重污染)六類. AQI由濃度劃分如表 1 所示.
表 1 空氣質(zhì)量指數(shù)范圍及等級(jí)分布Tab.1 Air quality index range and grade distribution
每個(gè)城市選取2015年1月1日至2017年3月10日共800組數(shù)據(jù)作為訓(xùn)練集, 其中每四天的作為一個(gè)?;翱?, 一共200個(gè)粒化窗口, 在實(shí)驗(yàn)中用2015年1月1日至2017年3月10日200個(gè)?;翱诘目諝赓|(zhì)量的7個(gè)指標(biāo)預(yù)測(cè)第201個(gè)?;翱?, 即2017年3月11日至2017年3月14日的AQI最小值, 平均值和最大值. 本文中實(shí)驗(yàn)采用Windows64位PC計(jì)算機(jī), 數(shù)學(xué)軟件MATLAB R2014a, 分別用SVM算法、 PSO-SVM算法、 GA-SVM算法和MFO-SVM算法進(jìn)行預(yù)測(cè), 表 2 為2017年3月11日至2017年3月14日的AQI實(shí)測(cè)值, 表 3 為各預(yù)測(cè)模型對(duì)太原市這4天AQI指數(shù)范圍的預(yù)測(cè), 表 4 為各預(yù)測(cè)模型對(duì)大同市這4天AQI指數(shù)范圍的預(yù)測(cè).
表 2 AQI實(shí)測(cè)值Tab.2 AQI measured values
表 3 各模型對(duì)太原市AQI的預(yù)測(cè)結(jié)果比較Tab.3 Comparison of prediction results of each model for Taiyuan AQI
表 4 各模型對(duì)大同市AQI的預(yù)測(cè)結(jié)果比較Tab.4 Comparison of prediction results of each model for Datong AQI
由表 2 和表 3 可以看出, MFO-SVM算法在模型平方相關(guān)系數(shù)和平均相對(duì)誤差方面都優(yōu)于其他三種模型, 并且MFO-SVM算法預(yù)測(cè)的AQI變化范圍與實(shí)際情況完全符合, 平方相關(guān)系數(shù)接近100%, 誤差較小, 從而該算法更優(yōu).
此外, 通過上述4種預(yù)測(cè)模型, 分別得到MFO-SVM算法、 GA-SVM算法、 PSO-SVM算法和SVM算法實(shí)際數(shù)據(jù)的預(yù)測(cè)散點(diǎn)對(duì)比圖, 其中山西省太原市MFO-SVM算法最小值、 最大值的實(shí)際數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)的對(duì)比圖如圖 2 所示, 4種算法的誤差分析圖如圖 3 所示. 大同市MFO-SVM算法最小值、 最大值的實(shí)際數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)的對(duì)比圖如圖 4 所示, 4種算法的誤差分析圖如圖 5 所示.
圖 2 太原市MFO-SVM算法最小值、 最大值的實(shí)際數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)的對(duì)比圖Fig.2 Comparison of the actual and predicted data of the minimum and maximum values of the MFO-SVM algorithm in Taiyuan
圖 3 各算法預(yù)測(cè)太原市AQI的相對(duì)誤差圖Fig.3 The relative error predicted by each algorithm in Taiyuan AQI
圖 5 各算法預(yù)測(cè)大同市AQI的相對(duì)誤差圖Fig.5 The relative error predicted by each algorithm in Datong AQI
由圖 2 和圖 4 可以看出, MFO-SVM算法與實(shí)際數(shù)據(jù)點(diǎn)更加接近, 與實(shí)際情況完全吻合, 預(yù)測(cè)效果最好. 由圖3和圖5可以看出, MFO-SVM算法的相對(duì)誤差在零附近徘徊且接近于零, 誤差分布比較密集, 相對(duì)于另外三種算法相對(duì)誤差明顯較小.
本文以山西省太原市和大同市2015年至2017年間800組數(shù)據(jù)為實(shí)驗(yàn)對(duì)象, 將支持向量機(jī)(SVM)思想用于優(yōu)化飛蛾撲火算法, 通過實(shí)驗(yàn), 得到了較為理想的預(yù)測(cè)結(jié)果. 結(jié)合AQI預(yù)測(cè)結(jié)果圖和相對(duì)誤差對(duì)比圖, MFO-SVM算法與實(shí)際情況完全符合, 更加適合預(yù)測(cè)AQI的未來變化趨勢(shì), 從而更好地指導(dǎo)人們的生產(chǎn)實(shí)踐. 因此, MFO-SVM算法在預(yù)測(cè)精度、 誤差率和可靠性方面更優(yōu), 可以應(yīng)用于人類生產(chǎn)實(shí)踐中, 指導(dǎo)人們提前做好防范措施.