王 榮,白尚旺,黨偉超
(太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,太原 030024)
軟件老化通常是由軟件故障激活的累積效應(yīng)造成的,最終致使軟件失效、系統(tǒng)宕機(jī)的現(xiàn)象。為盡可能減少因軟件老化導(dǎo)致的系統(tǒng)性能下降等不良影響,Y.Huang等人提出軟件再生思想[1]。軟件再生的頻率很關(guān)鍵,過于頻繁會(huì)延長停機(jī)時(shí)間,頻率過低則無法及時(shí)解決老化問題,不能保證良好的運(yùn)行效果[2],因此何時(shí)采取再生策略的關(guān)鍵在于能否準(zhǔn)確預(yù)測(cè)出軟件老化的趨勢(shì),根據(jù)預(yù)測(cè)結(jié)果適時(shí)采取再生策略,一定程度上保證了軟件的可靠性[3]。
目前軟件老化趨勢(shì)預(yù)測(cè)主要是使用性能采集工具收集所需的參數(shù),分析并推測(cè)軟件未來的變化趨勢(shì)。梁佩[4]以時(shí)間序列為研究對(duì)象,針對(duì)多步預(yù)測(cè)結(jié)果中的較差序列使用馬爾科夫進(jìn)行建模,對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè)。李焱[5]提出一種滑動(dòng)模型,對(duì)軟件老化進(jìn)行評(píng)估,實(shí)驗(yàn)結(jié)果表明該方法能夠較好地?cái)M合季節(jié)性負(fù)載系統(tǒng)的軟件老化趨勢(shì),并能做出準(zhǔn)確的預(yù)測(cè)以支撐軟件再生。淵嵐[6]提出了基于AdaBoost算法的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,以預(yù)測(cè)平均響應(yīng)時(shí)間的長短判斷老化的狀態(tài),提高了預(yù)測(cè)精度。
軟件老化,呈現(xiàn)出一種非線性的特性。而BP神經(jīng)網(wǎng)絡(luò),是一個(gè)復(fù)雜的非線性動(dòng)力學(xué)習(xí)系統(tǒng)[7]。但其初始權(quán)值和閾值隨機(jī)選取的問題[8],在一定程度上制約著它的發(fā)展。而粒子群算法能夠針對(duì)此問題進(jìn)行很好的改進(jìn)。
因此本文構(gòu)建了NPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,將NPSO算法獲得的最優(yōu)解還原成對(duì)應(yīng)的權(quán)值和閾值,并將值賦值給BP神經(jīng)網(wǎng)絡(luò)的參數(shù),實(shí)現(xiàn)對(duì)軟件老化趨勢(shì)預(yù)測(cè),實(shí)驗(yàn)表明本文提出的NPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,有良好的預(yù)測(cè)精度和收斂性。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種誤差逆向推導(dǎo)的前饋神經(jīng)網(wǎng)絡(luò),由大量的神經(jīng)元相互連接構(gòu)成復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)。
隨著應(yīng)用領(lǐng)域不斷擴(kuò)大,BP神經(jīng)網(wǎng)絡(luò)的缺陷也逐漸顯露出來[9],如收斂速度慢、局部極小化等問題。目前BP網(wǎng)絡(luò)的改進(jìn)方案分為兩大類:基于負(fù)梯度思想的啟發(fā)式改進(jìn)方法和基于群智能優(yōu)化算法。前者存在一個(gè)共性問題,即神經(jīng)網(wǎng)絡(luò)的初始參數(shù)是隨機(jī)產(chǎn)生的,而群智能算法可以解決這一問題。群智能算法核心是通過眾多簡(jiǎn)單個(gè)體組成的群體,相互合作,實(shí)現(xiàn)對(duì)復(fù)雜問題的求解。本文算法的主要思想是利用粒子群智能優(yōu)化算法對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
粒子群算法(Particle Swarm Optimization,PSO),是一種模擬自然界中生物活動(dòng)的一種隨機(jī)搜索群智能優(yōu)化算法。粒子在移動(dòng)與飛行的過程中,依靠局部最優(yōu)和全局最優(yōu)實(shí)現(xiàn)最優(yōu)位置的選取,建立最優(yōu)函數(shù),以確保粒子群中單個(gè)粒子運(yùn)動(dòng)方向最優(yōu)[10]。
假設(shè)在一個(gè)N維的目標(biāo)搜索空間中,種群中有m個(gè)粒子,第i個(gè)粒子的位置表示為Xi=(xi1,xi2,…,xiN),速度為Vi=(vi1,vi2,…viN),其中i=1,2,…m.第i個(gè)粒子自身迄今為止搜索到的最優(yōu)位置為Pbest,粒子群搜索到的最優(yōu)位置為gbest,粒子的速度和位置更新公式如下。
(1)
(2)
(3)
PSO算法具有良好的全局收斂性,但在高維復(fù)雜問題上,易陷入局部最優(yōu)解,尤其是當(dāng)優(yōu)化函數(shù)呈多峰性時(shí)。基于此,本文引入?yún)呛茡P(yáng)[11]的早熟收斂評(píng)價(jià)指標(biāo),進(jìn)行粒子多樣性分析。
2.2.1 PSO的早熟收斂判斷算法
粒子群空間分布情況也就是粒子的多樣性程度可以用適應(yīng)度值分布的離散程度進(jìn)行表示。因此,可以對(duì)種群空間中粒子適應(yīng)度值的變化進(jìn)行研究,從而來判斷算法是否收斂。
2.2.2 整體信息引導(dǎo)
針對(duì)已經(jīng)陷入局部最優(yōu)的粒子,也就是評(píng)價(jià)指標(biāo)Δ (4) 2.2.3 算法多樣性分析 以Schwefel函數(shù)為例,將NPSO、PSO算法進(jìn)行多樣性對(duì)比。圖1為兩個(gè)算法在初始化時(shí)的種群分布圖,圖2為兩個(gè)算法在迭代后期至全局最優(yōu)值時(shí)的種群分布圖。由圖1可知兩種算法在初期粒子分布較為均勻。從圖2中可以看出,PSO算法在迭代后期,粒子出現(xiàn)聚集,分布不均勻,種群的多樣性降低。而NPSO算法,在迭代后期,粒子分布仍均勻,具有較強(qiáng)的進(jìn)化能力。 圖1 初始種群分布Fig.1 Initial population distribution 圖2 迭代后期種群分布Fig.2 Population distribution in the later iterations 對(duì)Sphere(單峰函數(shù))、Rastrigrin(多峰函數(shù))這兩個(gè)基準(zhǔn)函數(shù)進(jìn)行仿真實(shí)驗(yàn),分析PSO算法、NPSO算法的收斂速度與收斂精度。從圖3、圖4及表1可以看出NPSO算法較PSO算法在收斂速度與收斂精度方面均有明顯優(yōu)勢(shì)。 表1 測(cè)試函數(shù)上的數(shù)值對(duì)比 圖3 Sphere收斂性能比較Fig.3 Comparison of Sphere convergence performance 圖4 Rastrigrin收斂性能比較Fig.4 Rastrigrin convergence performance comparison BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值是隨機(jī)設(shè)定的,因此本文將粒子群優(yōu)化算法應(yīng)用于BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。但是PSO算法在處理復(fù)雜問題時(shí)易陷入局部最優(yōu)、迭代后期收斂速度慢的問題。由此引入早熟收斂判斷、多樣性分析的改進(jìn)方法,旨在提高算法的全局搜索能力。構(gòu)建NPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,無論是在訓(xùn)練精度還是擬合效果上都得到了很大提高。 2.3.1 NPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型的訓(xùn)練與預(yù)測(cè) NPSO-BP神經(jīng)網(wǎng)絡(luò)模型的整體設(shè)計(jì)如下: 步驟1,建立BP神經(jīng)網(wǎng)絡(luò),確定結(jié)構(gòu)中的相關(guān)參數(shù)賦值。本文中BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)為3-10-1,學(xué)習(xí)速率為0.05,期望誤差為1*10-6. 步驟2,對(duì)粒子群中粒子信息進(jìn)行編碼,建立粒子群與BP神經(jīng)網(wǎng)絡(luò)中權(quán)值和閾值間的對(duì)應(yīng)關(guān)系。 步驟3,初始化粒子群,設(shè)置粒子群中相關(guān)參數(shù)。ωstart=0.9,ωend=0.4,學(xué)習(xí)因子c1=c2=1.494 45,種群規(guī)模為60,迭代次數(shù)為1 000次。 步驟4,計(jì)算適應(yīng)度值,文中使用BP神經(jīng)網(wǎng)絡(luò)的輸出均方根平均誤差和作為適應(yīng)度函數(shù)。 步驟5,更新粒子的速度和位置。 步驟7,判斷結(jié)束條件,未達(dá)到結(jié)束條件時(shí)轉(zhuǎn)到步驟4.若符合結(jié)束條件,將粒子群算法的種群極值作為最優(yōu)解。 步驟8,將獲取到的最優(yōu)解還原成對(duì)應(yīng)的權(quán)值和閾值,并將值賦值給BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值。 步驟9,對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行再訓(xùn)練,最終獲得預(yù)測(cè)模型。 由于軟件老化是錯(cuò)誤不斷積累的過程,需要耗費(fèi)大量的時(shí)間才能觀測(cè)到老化現(xiàn)象。因此針對(duì)軟件老化的特性,本文基于R.Matias等人[12]的研究,將工業(yè)領(lǐng)域已成熟應(yīng)用的加速壽命測(cè)試?yán)碚撘氲杰浖I(lǐng)域。將內(nèi)存泄漏故障作為老化因素,為程序注入了一段內(nèi)存泄漏代碼從而加快了內(nèi)存資源的消耗速率,大大減少了測(cè)試時(shí)間[13]。 3.1.1 實(shí)驗(yàn)平臺(tái)概述 為研究與內(nèi)存泄漏相關(guān)的軟件老化現(xiàn)象,本文以符合TPC-W基準(zhǔn)測(cè)試標(biāo)準(zhǔn)的Web應(yīng)用服務(wù)器為研究對(duì)象,該平臺(tái)包含一個(gè)電子商務(wù)Web服務(wù)系統(tǒng),一個(gè)數(shù)據(jù)庫服務(wù)器以及一組模擬的瀏覽器。實(shí)驗(yàn)配置如表2所示。 表2 實(shí)驗(yàn)環(huán)境 服務(wù)器端,是一個(gè)符合TPC-W基準(zhǔn)測(cè)試標(biāo)準(zhǔn)的在線售書網(wǎng)站系統(tǒng)。該系統(tǒng)通過模擬客戶在網(wǎng)站瀏覽和購買產(chǎn)品的過程,收集電子商務(wù)服務(wù)器的性能特征。 客戶端是一系列模擬瀏覽器(Emulated Browser,EB),對(duì)服務(wù)器端完成相關(guān)網(wǎng)頁及所需圖片資源的請(qǐng)求。每個(gè)EB能形成Browsing、Shopping,和Ordering三類不同的工作負(fù)載。Shopping行為出現(xiàn)的次數(shù)介于其他兩類之間,因此本實(shí)驗(yàn)客戶端主要模擬Shopping這種類型,以隨機(jī)生成的概率對(duì)不同頁面進(jìn)行訪問。 3.1.2 實(shí)驗(yàn)過程 因Java虛擬機(jī)存在垃圾回收機(jī)制(Garbage Collector GC)[14],GC僅回收無用和未引用的對(duì)象。為了模擬軟件老化現(xiàn)象,在Servlet中增加一個(gè)HeapLeak類,服務(wù)器整個(gè)生命周期都保持對(duì)該類對(duì)象的引用,但不會(huì)被GC回收。當(dāng)創(chuàng)建的實(shí)例數(shù)量達(dá)到最大堆容量時(shí),會(huì)產(chǎn)生JVM堆溢出。運(yùn)行客戶端,實(shí)驗(yàn)共持續(xù)14 400 s,每隔120 s取一次均值,采集樣本14 281個(gè)。JVM的變化趨勢(shì)圖如圖5所示。 圖5 Java堆內(nèi)存使用量Fig.5 Java heap memory usage 實(shí)驗(yàn)收集到的14 281個(gè)數(shù)據(jù),取前7 000個(gè)作為訓(xùn)練集,后7 281個(gè)作為預(yù)測(cè)集。將NPSO-BP、PSO-BP、BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型生成的預(yù)測(cè)效果圖進(jìn)行對(duì)比分析,3個(gè)模型的預(yù)測(cè)與期望輸出對(duì)比曲線,如圖6所示。本文使用平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Squared Error,RMSE)兩個(gè)評(píng)價(jià)指標(biāo)來描述模型的預(yù)測(cè)精度,公式如下。 圖6 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)Fig.6 Neural network prediction (5) (6) 從圖中可以看出本文提出的NPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,在預(yù)測(cè)精度、擬合效果方面存在明顯的優(yōu)勢(shì)。 由表3預(yù)測(cè)精度對(duì)比中可以看出,本文提出NPSO-BP模型相比于PSO-BP模型在預(yù)測(cè)精度上提高了8%,相比于BP模型提高了30%.由此可見,本文提出的NPSO-BP神經(jīng)網(wǎng)絡(luò)模型在軟件老化的預(yù)測(cè)精度上有了很大提高,該模型在軟件老化預(yù)測(cè)領(lǐng)域中具有實(shí)用價(jià)值。 表3 預(yù)測(cè)精度對(duì)比 為了準(zhǔn)確把握軟件老化的總體趨勢(shì),結(jié)合老化數(shù)據(jù)非線性、復(fù)雜多變的特性,對(duì)Web服務(wù)器因內(nèi)存泄漏引起的老化現(xiàn)象進(jìn)行建模和預(yù)測(cè)。首先通過構(gòu)建引入內(nèi)存泄漏的軟件老化實(shí)驗(yàn)平臺(tái),應(yīng)用加速壽命理論,選出能夠反映老化趨勢(shì)的性能參數(shù)——內(nèi)存變化量,作為實(shí)驗(yàn)的數(shù)據(jù)集。然后針對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值是隨機(jī)設(shè)定的這一缺陷,引入粒子群算法,提出并建立NPSO-BP預(yù)測(cè)模型。最后,在MATLAB 2016中進(jìn)行仿真實(shí)驗(yàn),不同的預(yù)測(cè)模型在實(shí)驗(yàn)訓(xùn)練過程中采用的是相同的老化數(shù)據(jù),通過模型間的對(duì)比分析,證明該預(yù)測(cè)模型誤差小、精度高,能準(zhǔn)確地對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè)。2.3 構(gòu)建NPSO-BP神經(jīng)網(wǎng)絡(luò)
3 實(shí)驗(yàn)結(jié)果與分析
3.1 軟件老化加速壽命實(shí)驗(yàn)
3.2 實(shí)驗(yàn)分析
4 結(jié)束語