于文滔,楊 芳
(廣東電網(wǎng)有限責(zé)任公司清遠(yuǎn)供電局,廣東 清遠(yuǎn) 511500)
社會經(jīng)濟的高速發(fā)展和人們對木材需求量的不斷增長,促使人們大量推廣種植速生經(jīng)濟林。目前,在南方地區(qū)的架空輸電線下出現(xiàn)了大面積超高樹木,如速生桉、濕地松、竹子等[1]。在一些山區(qū),輸電線路經(jīng)過的區(qū)域山路十分陡峭,植被繁雜,基本無路可走。大部分輸電線路分布在山區(qū)且跨越大片樹林,造成巡視相對困難。據(jù)電網(wǎng)公司調(diào)查統(tǒng)計,由高桿植物造成的安全隱患占所有安全隱患的近一半,可見超高植物是影響線路安全運行的原因之一。
山林的經(jīng)營權(quán)利是確定的,有些當(dāng)?shù)剞r(nóng)民會在高壓架空線下方種植大面積的高桿速生樹種,由于巡線和樹障處理不及時,高桿樹木與導(dǎo)線的距離不足會造成樹閃等輸電故障。若栽種的樹種是桉樹,因為桉樹的生長速度極快,成材的桉樹能夠到達(dá)30 m,將致使大部分線路都無法滿足安全距離,即使將線路設(shè)計為高跨式。當(dāng)前設(shè)計線路時需考慮樹木最終的高度一般為20 m,否則無法滿足線路所需的安全距離。當(dāng)高桿植物生長到與導(dǎo)線之間的距離小于安全距離時,會導(dǎo)致導(dǎo)線對植物放電而引發(fā)跳閘事故。如果人距離桉樹較近,甚至?xí)θ嗽斐蓚Α?/p>
本文以速生桉樹樹高為研究對象,建立桉樹樹高的BP網(wǎng)絡(luò)模型。人們?yōu)榱丝刂屏址置芏群途S護地力,獲得更高的經(jīng)濟效益,一般會對桉樹的胸徑和樹高的生長規(guī)律進行專門研究[2]。當(dāng)前對桉樹生長規(guī)律的研究主要是建立胸徑、樹高以及林分密度等因素之間關(guān)系的回歸方程,而基于人工智能模型技術(shù)的桉樹生長規(guī)律研究相對較少??偨Y(jié)起來,樹高預(yù)測的方法主要有傳統(tǒng)的建模和人工智能算法。傳統(tǒng)建模需要了解樹木的各種生長情況,不斷調(diào)整模型的各類參數(shù),實踐相對麻煩;人工智能如BP神經(jīng)網(wǎng)絡(luò)模型方法不需要了解內(nèi)部生長規(guī)律,只需要有歷史數(shù)據(jù)便可以構(gòu)建一個非線性模型,用于得到未來某一時刻的預(yù)測輸出值。BP神經(jīng)網(wǎng)絡(luò)是一種經(jīng)典的人工神經(jīng)網(wǎng)絡(luò)形式,于1986年由Runelhart等人首次提出,之后被不斷改進并廣泛應(yīng)用于各個領(lǐng)域。近年來,BP神經(jīng)網(wǎng)絡(luò)在電力系統(tǒng)和林業(yè)領(lǐng)域開始有大量應(yīng)用,如解決電力系統(tǒng)中的預(yù)測問題,但在解決電力系統(tǒng)與林業(yè)之間的矛盾領(lǐng)域少有研究。使用BP神經(jīng)網(wǎng)絡(luò)的一大優(yōu)點是,不需要深入了解樹木生長的內(nèi)部規(guī)律就可以建立相對較復(fù)雜的非線性模型。目前,在國內(nèi)林業(yè)研究領(lǐng)域中使用BP神經(jīng)網(wǎng)絡(luò)大多是用于建立文獻(xiàn)[3-7]所述的林分生長模型,而很少有報道使用BP神經(jīng)網(wǎng)絡(luò)研究速生桉的生長模型。文獻(xiàn)[8]開發(fā)了樹木生長高度的簡單數(shù)學(xué)模型,并應(yīng)用于所研發(fā)的輸電通道樹木隱患點預(yù)警平臺。但是,該模型只能粗略模擬樹高生長情況,不能通過已有參數(shù)進行自主學(xué)習(xí),使得其精度不夠。本文以架空輸電線路下方的人工桉樹為研究對象,研究建立其高度與樹齡和種植密度的BP神經(jīng)網(wǎng)絡(luò)模型,一方面為分析模擬和預(yù)測樹木在各階段的生長高度提供參考,另一方面為建立具有樹高預(yù)測功能的架空輸電線路樹障隱患智能預(yù)警平臺打下理論基礎(chǔ)。
實驗使用的數(shù)據(jù)集來源于廣東電網(wǎng)公司清遠(yuǎn)供電局的架空輸電線路樹障管理系統(tǒng)。該系統(tǒng)記錄了每個樹障點對應(yīng)的樹木生長數(shù)據(jù),包括樹種、樹齡、樹高、氣象參數(shù)和地理位置等。清遠(yuǎn)供電局管轄的架空輸電線路有500 kV、220 kV、110 kV和35 kV電壓等級,共157條線路,樹障點隨機分布在廣東省清遠(yuǎn)市的各個位置。使用管理系統(tǒng)數(shù)據(jù)庫中記錄的運行數(shù)據(jù),數(shù)據(jù)包括樹高、樹種、地理位置以及對應(yīng)位置的氣溫、降雨量等氣象因子共1 000條數(shù)據(jù),然后進行校驗、剔除、歸一化等預(yù)處理后用于訓(xùn)練和測試。
將數(shù)據(jù)集內(nèi)的每條數(shù)據(jù)歸一化到(0,1),即將不同表征的數(shù)據(jù)規(guī)約到相同的尺度內(nèi),以消除數(shù)據(jù)之間的量綱影響。
本文關(guān)注的是桉樹樹高,系統(tǒng)記錄的1~7 a桉樹生長高度如表1所示??梢钥闯觯駱涞母叨确蠈嶋H生長情況?;趪鴥?nèi)相關(guān)權(quán)威實測統(tǒng)計數(shù)據(jù),樹高的整個生長過程是先加快后減慢,大致呈“S”形增長。
表1 部分研究數(shù)據(jù)
BP神經(jīng)網(wǎng)絡(luò)由非線性的變換單元組成。它處理信息的過程由網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、神經(jīng)元中的激活函數(shù)、連接權(quán)值以及閾值共同決定。通過計算公式反向傳遞網(wǎng)絡(luò)輸出值與實際值之間的誤差,不斷調(diào)整網(wǎng)絡(luò)權(quán)值和閾值,直到整個網(wǎng)絡(luò)的誤差平方和達(dá)到最小。
如圖1所示,在神經(jīng)元的結(jié)構(gòu)模型中,X1、X2、…、Xn是每一個神經(jīng)元的輸入量,y是每個神經(jīng)元的輸出量(也作為下一層神經(jīng)元的輸入量),W1、W2、…、Wn是權(quán)值,b是閾值,f是傳遞函數(shù)。
經(jīng)典的BP神經(jīng)網(wǎng)絡(luò)由3層結(jié)構(gòu)組成,分別是輸入層、隱含層以及輸出層,其中隱含層可以有多層。從理論上來說,單一隱含層的BP神經(jīng)網(wǎng)絡(luò)可以無限擬合任何一條連續(xù)的非線性曲線。
圖1 BP神經(jīng)網(wǎng)絡(luò)神經(jīng)元結(jié)構(gòu)模型
這里采用Python語言進行編程建模,并實現(xiàn)對模型的訓(xùn)練、測試和回歸分析。這主要是基于以下考慮:一是Python具有豐富和強大的庫,應(yīng)用十分廣泛;二是能夠與其他編程語言的功能模塊結(jié)合使用,因此常被稱為膠水語言;三是容易將建好的預(yù)測模塊與其他應(yīng)用程序或者網(wǎng)站結(jié)合,以便將預(yù)測理論、方法應(yīng)用到實際生產(chǎn)?;赑ython 3.4軟件平臺建立單隱層BP神經(jīng)網(wǎng)絡(luò)樹高預(yù)測模型,以估測尾巨桉樹高。該模型有2個輸入節(jié)點,2個隱層節(jié)點,1個輸出節(jié)點,拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 BP網(wǎng)絡(luò)預(yù)測模型拓?fù)浣Y(jié)構(gòu)
查閱文獻(xiàn)可知,若要確定任意一個3層的BP神經(jīng)網(wǎng)絡(luò)隱含層的節(jié)點數(shù),可以使用公式。式中,S表示隱層節(jié)點數(shù),j、k分別表示輸入層和輸出層的節(jié)點數(shù);l取1~10之間的整數(shù)。
訓(xùn)練網(wǎng)絡(luò)前,應(yīng)該先對數(shù)據(jù)進行前期處理。這里先對輸入層的變量林分密度采取歸一化處理,以使網(wǎng)絡(luò)以更快的速度收斂,同時可以提高訓(xùn)練和預(yù)測的精度。本研究將數(shù)據(jù)歸一化到[-1,1],按照標(biāo)準(zhǔn)i=(2(xi-xmid))/(xmin-xmax)進行歸一化。其中,xmid表示數(shù)據(jù)的中間值,xmax和xmin分別表示待歸一化數(shù)據(jù)列表中的最大值和最小值,xi和i分別表示數(shù)據(jù)歸一化前和歸一化后的值。
研究中,選擇桉樹的林分年齡A和林分密度N作為BP神經(jīng)網(wǎng)絡(luò)的輸入變量,選擇樹高總生長量H作為網(wǎng)絡(luò)的輸出變量,即H=f(A,N)。從經(jīng)濟性看,速生桉的砍伐年齡一般在7年左右,因此使用前5年的生長數(shù)據(jù)作為訓(xùn)練樣本,后2年的數(shù)據(jù)作為測試樣本,用于預(yù)測速生桉生長高度隨樹齡增長的變化情況。用logsig函數(shù)Y=1/(1+e-x)作為隱層神經(jīng)元的激活函數(shù),其中X、Y分別表示網(wǎng)絡(luò)的輸入和輸出;使用purelin函數(shù)Y=aX+b當(dāng)作輸出層的激活函數(shù),其中X、Y分別表示網(wǎng)絡(luò)的輸入和輸出。然后,使用隨機梯度下降法作為模型的訓(xùn)練算法,模型精度評價采用決定系數(shù)R2和均方誤差MSE。當(dāng)R2越大,MSE越小時,模型擬合精度越高。
其中:n為樣本數(shù),分別表示桉樹樹高的真實值、真實值的平均值和預(yù)測模型的輸出值即預(yù)測值。
通過控制變量法對比設(shè)置不同網(wǎng)絡(luò)參數(shù)下的訓(xùn)練效果,最終將模型的隱含層節(jié)點數(shù)設(shè)置為2,神經(jīng)元數(shù)設(shè)置為2,學(xué)習(xí)率設(shè)為0.05,訓(xùn)練代數(shù)設(shè)置為2 000代,目標(biāo)精度設(shè)置為0.01,訓(xùn)練的Python程序見附錄,訓(xùn)練的誤差變化如圖3所示??梢钥闯?,當(dāng)?shù)竭_(dá)最大迭代次數(shù)時,已基本達(dá)到目標(biāo)精度。
圖3 訓(xùn)練誤差變化曲線
模型用前5年的桉樹樹高和其影響因素實際值作為網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),使用后2年對應(yīng)的數(shù)據(jù)作為測試,檢驗所建模型的預(yù)測效果。當(dāng)樣本較少時,選取一組重復(fù)試驗值加入訓(xùn)練,以此增強模型的泛化能力。訓(xùn)練和測試、分析平臺選擇Python 3.4,結(jié)合numpy、matplotlib、sklearn、pybrain等工具庫,使用Python語言編程實現(xiàn)方式實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的構(gòu)建。桉樹樹高BP人工神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練結(jié)果、模型仿真輸出和實際值對照如表2所示。
經(jīng)過上面的模擬結(jié)果易得出結(jié)論,建立的BP網(wǎng)絡(luò)模型對樹高的平均預(yù)測精度為96.6%。從數(shù)據(jù)表面看,桉樹的樹高生長速度是隨樹齡的增大先加快后減慢,直到生長趨于停止,呈現(xiàn)“S”型增長。結(jié)果符合速生桉人工林的生長規(guī)律,即先快后慢的生長規(guī)律。表3是經(jīng)過訓(xùn)練后的樹高BP神經(jīng)網(wǎng)絡(luò)的各項主要參數(shù)。
表2 BP網(wǎng)絡(luò)訓(xùn)練結(jié)果
表3 網(wǎng)絡(luò)主要參數(shù)
在Python 3.4平臺中對建立的桉樹人工林樹高BP網(wǎng)絡(luò)模型進行回歸分析,以充分說明所建立的樹高模型是合理、可行的。為了檢驗?zāi)P偷臄M合效果,可以使用樹高實際值和網(wǎng)絡(luò)模型的輸出值建立回歸方程。結(jié)果表明,建立的桉樹樹高BP神經(jīng)網(wǎng)絡(luò)模型對應(yīng)的回歸方程的斜率約為1,表明建立的網(wǎng)絡(luò)的預(yù)測值與真實值的擬合效果良好,所以建立的網(wǎng)絡(luò)效果是理想的。圖4是建立的網(wǎng)絡(luò)的仿真輸出和實際輸出的對比。
圖4 仿真輸出與實際輸出對比
通過研究分析,樹高預(yù)測使用Python語言編寫實現(xiàn),預(yù)警系統(tǒng)通過調(diào)用預(yù)測模塊實現(xiàn)樹高和弧垂的預(yù)測,從而進一步求得樹線凈空距離的預(yù)測值,然后根據(jù)該預(yù)測值對比運行規(guī)程[9]要求的距離發(fā)出預(yù)警信息。當(dāng)數(shù)據(jù)庫中存儲的樹木生長信息有了較大的更新,數(shù)據(jù)精度有提高時,樹木生長模型可自動進行重新訓(xùn)練,從而進一步提高預(yù)測精度。預(yù)測預(yù)警系統(tǒng)實現(xiàn)流程,如圖5所示。
圖5 預(yù)測預(yù)警系統(tǒng)實現(xiàn)流程
本文以桉樹樹齡和林分密度作為輸入變量,以桉樹樹高作為輸出變量,收集了桉樹連續(xù)7年的生長數(shù)據(jù),用前5年的數(shù)據(jù)做為訓(xùn)練樣本,后2年的數(shù)據(jù)作為測試樣本,通過大量的訓(xùn)練、調(diào)整和優(yōu)選,最終確定建立了2個輸入、2個隱層節(jié)點、1個輸出的尾巨桉樹高曲線BP神經(jīng)網(wǎng)絡(luò)。結(jié)果表明,BP神經(jīng)網(wǎng)絡(luò)樹高曲線模型在建模樣本擬合效果和檢驗樣本預(yù)測效果方面表現(xiàn)出色。
此外,也可以使用傳統(tǒng)的數(shù)學(xué)函數(shù)對樹高曲線進行建模,但只是單一簡單的非線性函數(shù),與神經(jīng)網(wǎng)絡(luò)模型相比,只是神經(jīng)網(wǎng)絡(luò)中的一個神經(jīng)元,不能代替其他類型的函數(shù)。使用傳統(tǒng)數(shù)學(xué)函數(shù)建立的樹高曲線模型無法脫離函數(shù)原來表示的曲線,而神經(jīng)網(wǎng)絡(luò)綜合了諸多簡單的非線性函數(shù),它的特點是高度非線性和分布式。
結(jié)果表明,用BP神經(jīng)網(wǎng)絡(luò)方法建立非線性模型預(yù)測樹木的生長高度是可以實現(xiàn)的,結(jié)果能夠理想反映訓(xùn)練數(shù)據(jù)的情況,相對誤差不大。當(dāng)前的高壓輸電系統(tǒng)中,樹閃引起的跳閘事故屢屢發(fā)生,若可以及時發(fā)現(xiàn)并處理架空線下的樹木隱患,將有效減少輸電線路故障。這需要一個功能強大的自動管理平臺,用于記錄和管理線路下方的樹木生長情況,提早作出預(yù)警,而目前尚沒有一個有效的樹障管理、預(yù)警平臺。Python是一種流行的編程語言,可以建立跨平臺的應(yīng)用程序。因此,可以用Python語言建立一個樹障管理平臺,方便巡線人員將調(diào)查結(jié)果記錄在系統(tǒng)中。記錄的數(shù)據(jù)包括線路下方樹木的分布情況、樹種、樹高、樹齡等,方便管理和查閱。同時,平臺可根據(jù)記錄的歷史數(shù)據(jù),預(yù)測未來某時刻某線路下方的樹障隱患情況。當(dāng)預(yù)測輸出樹高超過安全高度時,自動發(fā)出預(yù)警信號,提醒運維人員及時清除樹障隱患,防患于未然。用Python語言編寫的預(yù)測程序方便管理平臺進行直接調(diào)用,這樣可以將理論與實際應(yīng)用緊緊聯(lián)系起來,而用MATLAB編寫的程序沒有這種實用性,因此本文的建模和分析都采用Python進行編程。
本研究有待改進的地方如下:
(1)樣本數(shù)據(jù)過少,樹齡跨度大,希望獲取樹木生長情況的月度數(shù)據(jù),以得到更精確的模型;
(2)除了樹齡和林分密度,影響樹木生長高度的因素還有降雨量、氣溫、光照強度和土壤肥力等,應(yīng)該將這些因素考慮在內(nèi)作為BP網(wǎng)絡(luò)輸入,以達(dá)到更好的預(yù)測精度。
因此,后續(xù)研究將不斷改進、完善相關(guān)算法,以期將本研究應(yīng)用于實際生產(chǎn)和生活。