陳悅?cè)A,李帥瑩,劉文路
(1.武漢大學(xué) 土木建筑工程學(xué)院,湖北 武漢 430072;2.中信建筑設(shè)計研究總院有限公司,湖北 武漢 430014)
近年來,隨著我國電網(wǎng)工程的發(fā)展,電網(wǎng)建設(shè)速度加快,投資規(guī)模日益擴大,電網(wǎng)工程造價呈上升趨勢。對于電網(wǎng)工程而言,現(xiàn)行的造價管理體制,容易造成工程概算核算不準(zhǔn)確的情形。電力工程造價中,概算超過估算、預(yù)算超過概算的現(xiàn)象普遍存在,導(dǎo)致投資容易失控。調(diào)查發(fā)現(xiàn)國家電網(wǎng)公司輸變電工程的投資計劃浪費為13%左右[1],準(zhǔn)確估計工程概算,有助于電網(wǎng)工程項目投資、決策和管理。電網(wǎng)工程概算的傳統(tǒng)方法是在了解設(shè)計和施工方案的基礎(chǔ)上,通過列項、計算工程量、套定額子目,編制工程預(yù)算書,最終匯總得到工程造價。電網(wǎng)工程概算影響因素多、經(jīng)驗依賴性大,不同項目的個體差異大,在缺乏詳備資料的情況下,傳統(tǒng)方法計算結(jié)果誤差較大[2]。
機器學(xué)習(xí)方法在解決此類模糊問題上展現(xiàn)出極大潛力。例如,神經(jīng)網(wǎng)絡(luò)已被用于學(xué)習(xí)及預(yù)測沒有明確模型的問題,如股票價格預(yù)測、系統(tǒng)識別、工程設(shè)計和形象識別等[3]。雖然神經(jīng)網(wǎng)絡(luò)方法適用于定量指標(biāo)的剖析,但是對制約要素中定性指標(biāo)則無法進行科學(xué)的評估[4],且其所需樣本量大,小樣本通常會造成學(xué)習(xí)不足、性能不穩(wěn)定、推廣性能低[5]。相比之下,支持向量機有更好的應(yīng)用前景[6],需要的樣本數(shù)量更少,數(shù)據(jù)抗噪能力更強,且在運算過程中不需要賦權(quán)重,主觀性因素相對較小[7]。當(dāng)面對諸如工程造價估算這類影響因素繁多的問題時,很難搜集到分布合理且數(shù)量充足的樣本。而支持向量機對樣本數(shù)量的依賴性弱、泛化能力強,使其對工程造價預(yù)測問題具有較好的適配性。
支持向量機預(yù)測模型(support vector regression,SVR)的預(yù)測精度依賴于合適的參數(shù),在標(biāo)準(zhǔn)果蠅優(yōu)化算法(fruitfly optimization algorithm,FOA)和自適應(yīng)FOA[8]的基礎(chǔ)上,提出一種改進FOA算法,用于SVR的參數(shù)尋優(yōu),基于該算法構(gòu)建一種用于電網(wǎng)工程概算預(yù)測的改進FOA-SVR模型。以電網(wǎng)架空線路工程為例,通過灰色關(guān)聯(lián)法進行工程樣本數(shù)據(jù)篩選,將樣本代入SVR訓(xùn)練,并采用改進FOA算法尋找合適參數(shù)優(yōu)化SVR模型。將該模型用于測試樣本集的工程概算預(yù)測,經(jīng)多次模擬測試證明該模型能夠穩(wěn)定輸出高精度的預(yù)測結(jié)果,說明改進的FOA-SVR模型能夠有效預(yù)測電網(wǎng)工程概算。
灰色關(guān)聯(lián)分析(gray relation analysis,GRA)被廣泛應(yīng)用于相關(guān)性分析中,通過計算參考因素和各比較因素變化趨勢同步性強弱,判斷因素間關(guān)聯(lián)程度高低并排序。參考因素序列曲線形狀與比較序列越接近,則關(guān)聯(lián)程度越高。數(shù)據(jù)歸一化處理后,序列各位置的灰色關(guān)聯(lián)系數(shù)和關(guān)聯(lián)度的計算式分別為:
ξi(k)=
(1)
(2)
式中:ξi(k)為第k個位置的灰色關(guān)聯(lián)系數(shù);xi(k)為第i個比較序列的第k個位置;x0(k)為參考序列的第k個位置;ρ為分辨系數(shù);ri為第i個比較序列與參考序列間的關(guān)聯(lián)度。
支持向量機(support vector machine,SVM)模型來源于感知機解決分類問題的思想。對于線性可分的樣本,通過訓(xùn)練已知樣本數(shù)據(jù)來尋找分割樣本的超平面。對于無法線性分割的樣本,根據(jù)Cover定理,將這些非線性可分樣本通過非線性轉(zhuǎn)換,映射到足夠高維的特征空間,則原樣本變?yōu)榫€性可分的可能性極大。當(dāng)遇到非線性可分樣本時,可通過核函數(shù)將樣本數(shù)據(jù)集非線性映射至高維空間后進行線性分割,再將結(jié)果逆映射至原空間,從而完成分類。常用核函數(shù)包括線性核函數(shù)、RBF核函數(shù)、多項式核函數(shù)、Sigmond核函數(shù)等。其中,線性核函數(shù)不易受到過度擬合的影響,RBF核函數(shù)抗干擾能力較強。
果蠅優(yōu)化算法(FOA)是受果蠅覓食行為啟發(fā)而創(chuàng)建,果蠅在尋找食物時,通過嗅覺捕捉食物氣味,并向同伴傳遞氣味濃度信息,個體的搜索方向既在大范圍內(nèi)與整個果蠅群體的行動方向保持一致,也在小范圍內(nèi)獨立隨機運動,在某一范圍搜索完成后,果蠅群體通過比較,發(fā)現(xiàn)嗅得最濃食物氣味的果蠅所在位置后,其他果蠅均會飛向該位置繼續(xù)展開搜索。標(biāo)準(zhǔn)FOA算法步驟為:①初始化種群規(guī)模、最大迭代次數(shù)、果蠅群體位置、個體單次飛行范圍等參數(shù);②執(zhí)行嗅覺搜索過程,賦予果蠅個體隨機的單次飛行距離和方向,并計算此搜索位置的氣味濃度值,即目標(biāo)函數(shù);③選擇群體中最佳濃度值果蠅位置,群體移動至此位置;④重復(fù)步驟②~步驟③,不斷進行迭代,直至濃度值滿足要求或迭代次數(shù)達到最大值。
采用SVR方法對電網(wǎng)工程概算進行預(yù)測。對于電網(wǎng)工程,影響概算的工程特征眾多,不同特征與概算結(jié)果的相關(guān)性不同,一些特征可能對概算值影響很小,但是若將樣本中的各項特征全部代入,極可能造成信息冗余,增加計算量和訓(xùn)練時長。通過灰色關(guān)聯(lián)分析篩選出與概算結(jié)果相關(guān)性強的變量,降低輸入變量的維數(shù),提高訓(xùn)練效率。SVR模型泛化能力優(yōu)秀,采用較少樣本訓(xùn)練,仍能得到較準(zhǔn)確的預(yù)測模型,但SVR對于參數(shù)較敏感,需選擇合適的回歸參數(shù)才可獲得高精度的預(yù)測結(jié)果。FOA作為新興智能算法,原理簡單、計算量小、搜索效率高,其廣泛應(yīng)用于機器學(xué)習(xí)的參數(shù)搜尋。為解決標(biāo)準(zhǔn)FOA易陷入局部最優(yōu)點而無法找到全局最優(yōu)解的問題,對標(biāo)準(zhǔn)FOA算法進行改進,增大找到全局最優(yōu)參數(shù)的概率,采用改進的FOA算法搜尋SVR的最優(yōu)參數(shù)并訓(xùn)練樣本,從而提高預(yù)測模型的精度。改進FOA-SVR的模型結(jié)構(gòu)如圖1所示。
圖1 改進FOA-SVR的模型結(jié)構(gòu)
選取某電力設(shè)計院2020年的30個電網(wǎng)工程架空線路項目為樣本,采用Matlab Libsvm工具箱的ε-SVR函數(shù)建立SVR預(yù)測模型,通過Matlab自編程序?qū)崿F(xiàn)改進FOA算法,并用來優(yōu)化SVR參數(shù)。隨機選擇25個樣本作為訓(xùn)練集,構(gòu)建靜態(tài)投資概算的預(yù)測模型;剩余5個樣本作為測試樣本集,使用訓(xùn)練好的模型預(yù)測測試樣本集的靜態(tài)投資概算金額,并與實際金額對比,檢驗?zāi)P途取?/p>
通過企業(yè)調(diào)查,共獲取電網(wǎng)工程架空線路項目30個,每個項目含有工程特征51項,涵蓋電壓等級、線路參數(shù)、地形分布情況、地質(zhì)條件、基礎(chǔ)形式、材料量價等多種因素。剔除各項目均相同的7項特征后,對剩余44項特征進行灰色關(guān)聯(lián)分析,取分辨系數(shù)ρ=0.5,得到各特征與概算值的關(guān)聯(lián)度。對于SVR模型,采用過少的特征進行訓(xùn)練可能影響模型準(zhǔn)確性,而特征過多會增大計算量,降低訓(xùn)練效率,還可能導(dǎo)致過擬合甚至迭代失敗。因此,綜合考慮訓(xùn)練效率與精度,選擇關(guān)聯(lián)度最高的前11個特征作為輸入變量,具體如表1所示。
表1 關(guān)聯(lián)度最高的11個工程特征及關(guān)聯(lián)度
篩選后的樣本數(shù)據(jù)示例如表2所示。對于SVR算法,特征變化范圍的絕對值越大,輸出結(jié)果的影響也越大。為防止數(shù)量變化范圍大的工程特征“淹沒”變化范圍小的特征對結(jié)果的影響,保證信息均被有效使用,通過式(3)對數(shù)據(jù)進行歸一化處理。歸一化處理后的數(shù)據(jù)值較小,可顯著減小計算量[10]。
表2 樣本數(shù)據(jù)原始值
(3)
式中:x′為歸一化后的數(shù)值;x為原始數(shù)值;xmax、xmin分別為樣本中該特征的最大值和最小值。
參數(shù)選擇的不同會顯著影響SVR模型的預(yù)測準(zhǔn)確性及運行速度。采用RBF核函數(shù)的SVR模型需考慮的參數(shù)包括核函數(shù)參數(shù)γ、懲罰參數(shù)C和損失函數(shù)中的參數(shù)ε。其中核函數(shù)參數(shù)γ過小會導(dǎo)致模型過擬合,過大會使模型精準(zhǔn)性過差;懲罰參數(shù)C過小會導(dǎo)致對經(jīng)驗誤差的懲罰力度不夠而使訓(xùn)練誤差變大,過大則降低模型的泛化能力;參數(shù)ε過小會使支持向量數(shù)目過多而影響模型推廣能力,過大則導(dǎo)致支持向量過少而降低精度。在SVR參數(shù)尋優(yōu)中,需找到參數(shù)的最優(yōu)組合,故需同時對3個參數(shù)進行搜尋。
考慮到標(biāo)準(zhǔn)FOA方法在參數(shù)搜尋過程中容易陷入局部最優(yōu),因此對個體單次搜索范圍和確定每次迭代后群體位置的算法進行改進,使FOA算法在無法尋得局部更優(yōu)解時,跳出局部位置繼續(xù)在全局范圍內(nèi)搜尋可能的最優(yōu)解;在某一搜索區(qū)域?qū)さ酶鼉?yōu)解后,能以合適的速度縮小個體在下次搜索時的范圍。具體步驟如下:
(1)確定迭代次數(shù)n、種群數(shù)量sG和目標(biāo)精度值δT。目標(biāo)精度值為測試樣本集中各樣本預(yù)測值與真實值相對誤差絕對值的最大值,綜合考慮結(jié)果精度及運行速度,令n=1 000,sG=20,δT=4%;
(2)初始化果蠅群體位置。SVR參數(shù)尋優(yōu)問題中需同時搜尋3個參數(shù),群體位置的坐標(biāo)(XG,YG,ZG)=(rand(LX),rand(LY),rand(LZ)),其中LX、LY、LZ分別為所有種群可能出現(xiàn)位置在3個方向上的集合,rand()為取均勻隨機數(shù)的運算。在本問題中,LX=LY=LZ=[-20,20],考慮到參數(shù)值均需大于0,且敏感性在數(shù)值較大時偏低,在0附近較為敏感,SVR模型參數(shù)與坐標(biāo)值設(shè)置為指數(shù)關(guān)系,即γ=2X,C=2Y,ε=2Z。
(3)確定濃度值判定函數(shù)值d,即為SVR預(yù)測所得的5個概算結(jié)果的相對誤差最大值:
(4)
式中:P′為概算預(yù)測值;P為概算真實值;δP為相對誤差。
(4)執(zhí)行視覺搜索過程。種群中果蠅個體的搜索位置(Xi,Yi,Zi)=(XG+rand(L),YG+rand(L),ZG+rand(L)),其中L為單次飛行位置參數(shù),在標(biāo)準(zhǔn)FOA算法中,參數(shù)L不隨迭代次數(shù)變化;在自適應(yīng)FOA方法中,參數(shù)L通常設(shè)置為迭代次數(shù)的函數(shù)。參考變步長果蠅優(yōu)化算法[11],設(shè)置參數(shù)L為:
(5)
式中:w為指數(shù)因子,其取值影響收斂速度和節(jié)奏,取w=0.001;i為在某一區(qū)域內(nèi)連續(xù)尋得更優(yōu)解的次數(shù),當(dāng)某次迭代中,區(qū)域內(nèi)無更優(yōu)解時,則i歸0;n為最大迭代次數(shù);δi1為本次迭代中群體內(nèi)第一只果蠅搜索位置所返回的精度值;ζ為比例調(diào)整系數(shù),取ζ=5。
(5)將此次搜索所選參數(shù)代入SVR模型,對樣本集的25個樣本進行訓(xùn)練,使用訓(xùn)練好的模型對預(yù)測樣本集進行預(yù)測并計算與真實值的相對誤差,得到濃度判定函數(shù)值d。
(6)
(7)
(8)
(9)
當(dāng)本次迭代的精度優(yōu)于歷史最佳精度時,更新歷史最優(yōu)精度并以此精度值的參數(shù)所在位置作為下次迭代的種群位置;當(dāng)本次迭代精度低于歷史最優(yōu)精度時,則將下次迭代的種群位置初始化為隨機位置。
圖2 改進FOA算法的參數(shù)尋優(yōu)流程
考慮電網(wǎng)工程中對于概算的精度估計要求和算法運行效率,將SVR預(yù)測模型的精度目標(biāo)δT設(shè)置為4%,最大迭代次數(shù)n設(shè)置為1 000。由于改進的FOA-SVR算法在參數(shù)尋優(yōu)過程中具有一定隨機性,進行15次模擬排除偶然結(jié)果的影響。記錄每次模擬中FOA尋優(yōu)算法迭代次數(shù)、運行時間、測試樣本集最大相對誤差絕對值,按精度排序的結(jié)果如表3所示。
表3 模擬精度及運行效率
使用15次模擬生成的預(yù)測模型對測試樣本集進行預(yù)測,各樣本的最大相對誤差絕對值均在5%以內(nèi),說明該算法能夠穩(wěn)定地在有限迭代次數(shù)內(nèi)生成高精度預(yù)測模型,對樣本進行有效預(yù)測。15次模擬中,有13次模擬均在最大迭代次數(shù)內(nèi)成功尋得滿足目標(biāo)精度值δT的SVR參數(shù),提前終止迭代,13次模擬的平均迭代次數(shù)為144次,平均運行速度為1.11 s??梢妰?yōu)化FOA算法在絕大多數(shù)時間內(nèi),能以較少迭代次數(shù)、較短運行時間找到符合高精度目標(biāo)的SVR參數(shù),全局尋優(yōu)能力較強。以第8次模擬為例分析預(yù)測結(jié)果,經(jīng)過32次迭代,改進FOA算法成功尋得滿足δT的SVR參數(shù):γ=2-3.369 5,C=2-2.898 5,ε=2-5.995 8。第8次模擬的預(yù)測結(jié)果如圖3所示,可知測試集樣本均聚集在零誤差參考線附近,說明預(yù)測值相當(dāng)接近實際值。此次模擬的平均相對誤差絕對值為2.25%,最大相對誤差為3.75%,出現(xiàn)在P26樣本。各樣本具體預(yù)測情況如表4所示。
圖3 第8次模擬預(yù)測結(jié)果散點圖
表4 第8次模擬預(yù)測結(jié)果
圖4 歷史最優(yōu)精度隨迭代次數(shù)的變化
圖5 單次搜索最優(yōu)精度隨迭代次數(shù)的變化
圖6 種群搜索位置三維表示圖
為進一步說明改進FOA算法在參數(shù)尋優(yōu)方面的性能優(yōu)勢,與傳統(tǒng)的網(wǎng)格搜索方法進行對比。網(wǎng)格搜索方法是在相同的[2-20,220]區(qū)間內(nèi),采用2為底的對數(shù)坐標(biāo)進行網(wǎng)格劃分,尋找SVR參數(shù)γ、C和ε的最優(yōu)解,并進行預(yù)測,預(yù)測結(jié)果如表5所示。
表5 網(wǎng)格搜索預(yù)測結(jié)果
由表5可知,傳統(tǒng)的網(wǎng)格搜索方法若想要達到同樣的精度要求,只能加密網(wǎng)格,當(dāng)網(wǎng)格間隔N從1.0加密至0.5時,最大相對誤差絕對值僅從4.05%提升至3.97%,而算法迭代次數(shù)卻呈冪函數(shù)上升,運行時間也大幅增加。故對于本問題而言,網(wǎng)格搜索法的精度提升緩慢,且在提升精度的過程中計算資源消耗和時間開銷都大大增加,總體效率較低。
再采用標(biāo)準(zhǔn)自適應(yīng)FOA對此問題進行SVR參數(shù)尋優(yōu)和預(yù)測,同樣以4%的最大相對誤差絕對值為停止迭代條件,最大迭代次數(shù)設(shè)置為1 000,保持其他參數(shù)不變,進行15次實驗,結(jié)果如表6所示。由表6可知,15次實驗中有8次實驗未能在1 000次迭代內(nèi)尋得滿足精度要求的參數(shù),且在第8次、第12次和第15次迭代中陷入精度很低的局部最優(yōu)中,導(dǎo)致最終訓(xùn)練模型的預(yù)測誤差在30%左右,嚴(yán)重低于預(yù)設(shè)標(biāo)準(zhǔn)??梢姌?biāo)準(zhǔn)變步長FOA方法在此問題中所表現(xiàn)的穩(wěn)定性較低,無法保證訓(xùn)練結(jié)果的有效性。對比分析發(fā)現(xiàn),改進FOA方法在SVR參數(shù)尋優(yōu)問題上,有較好的效率和穩(wěn)定性。
表6 模擬精度及運行效率
(1)為解決SVR預(yù)測模型參數(shù)尋優(yōu)問題,筆者在標(biāo)準(zhǔn)FOA算法和自適應(yīng)FOA算法的基礎(chǔ)上,提出了一種改進FOA算法,并引入GRA數(shù)據(jù)處理,構(gòu)建了一種用于電網(wǎng)架空線路工程概算預(yù)測的改進FOA-SVR模型。
(2)通過GRA篩選出11個與概算關(guān)聯(lián)度高的電網(wǎng)架空線路工程特征,使用改進FOA算法對SVR模型進行最優(yōu)參數(shù)搜尋,能夠有效得到電網(wǎng)架空線路工程初步設(shè)計批復(fù)概算,且精度較高,為缺少詳細(xì)數(shù)據(jù)參考的電網(wǎng)工程項目提供了一種較為有效的自動化概算估計方法。
(3)多次模擬驗證發(fā)現(xiàn),改進FOA算法能夠及時突破局部最優(yōu)解,具有較強的全局尋優(yōu)能力,且收斂效率較高,能夠較穩(wěn)定地獲得滿足預(yù)測精度要求的SVR參數(shù),對電網(wǎng)架空線路工程概算預(yù)測問題有較好的適用性。
(4)由于獲取的樣本數(shù)量有限,所提出模型及相關(guān)尋參算法的驗證僅局限于當(dāng)前樣本,未能在大數(shù)據(jù)下檢驗?zāi)P偷姆夯芰?。未來將考慮收集更多的樣本集,構(gòu)建多種機器學(xué)習(xí)模型,系統(tǒng)對比研究模型的泛化能力和預(yù)測精度,并基于結(jié)果進一步開展模型改進和算法優(yōu)化研究。