商承亞,鮑先強,付立軍,朱琬璐,徐興華
海軍工程大學 船舶綜合電力技術重點實驗室,湖北 武漢 430033
船舶綜合電力系統(tǒng)(Integrated Power System,IPS)由發(fā)電、輸變電、配電、推進、儲能和能量管理6 個子系統(tǒng)組成,其將傳統(tǒng)船舶中相互獨立的動力和電力兩大系統(tǒng)合二為一,以電能的形式統(tǒng)一為推進負載、脈沖負載、通信、導航和日用設備等供電,實現(xiàn)了全艦能源的綜合利用[1-3],符合船舶信息化和智能化的發(fā)展趨勢,代表著船舶動力系統(tǒng)未來的發(fā)展方向[4]。
隨著IPS 規(guī)模的日益擴大,規(guī)模化的量測裝置持續(xù)生成大量數(shù)據(jù)[5],如果將這些數(shù)據(jù)直接進行存儲,不僅會大量浪費存儲空間,而且還會使數(shù)據(jù)查詢和傳輸變得困難[6-7]。傳統(tǒng)的關系型數(shù)據(jù)存儲方案[8]因其橫向擴展的限制,難以處理來自不同分系統(tǒng)的海量數(shù)據(jù),近年來流行的非關系型NoSQL 數(shù)據(jù)庫存儲方案[5,9-10]雖然在一定程度上緩和了海量數(shù)據(jù)存儲的壓力,但針對IPS 海量歷史數(shù)據(jù)的存儲方案還是不太成熟,特別是面對IPS 中日益增長的數(shù)據(jù)規(guī)模,亟需高效的數(shù)據(jù)壓縮技術予以支撐。
在海量實時數(shù)據(jù)應用背景下,無損壓縮技術因其壓縮比的限制并不能很好地解決數(shù)據(jù)的存儲問題,有損壓縮中的信號變換方法雖然通過存儲少量系數(shù)可以實現(xiàn)數(shù)據(jù)的高效壓縮保真[11],但多種艦船業(yè)務中小波基的選取大大增加了該方法的使用難度,而分段線性方法中的旋轉門算法則因算法簡單、壓縮參數(shù)便于調(diào)整而得到了廣泛應用。
本文擬針對IPS 業(yè)務的數(shù)據(jù)特性,在分析旋轉門趨勢(Swinging Door Trending,SDT)壓縮算法的基礎上,提出一種壓縮偏差?E與船舶業(yè)務相適應的數(shù)據(jù)壓縮算法,并根據(jù)不同的船舶業(yè)務需求,通過誤差反饋動態(tài)調(diào)整壓縮偏差?E,以實現(xiàn)對IPS 歷史數(shù)據(jù)的高效壓縮存儲。同時,基于Simulink 平臺模擬數(shù)據(jù)序列,然后通過測試評估驗證改進算法的壓縮性能。
以IPS 中壓直流區(qū)域配電裝置(圖1)為例進行分析。該系統(tǒng)包括左、右舷700 V 直流母線、4 MW DC/DC 變流器以及4 個配電分區(qū)。左、右舷各配置有2 臺4 MW 的DC/DC 變流器,每個配電分區(qū)包括2 臺1 MW DC/AC 逆變器,另外,還包含中壓直流整流電源、水電組負載、可調(diào)電抗器等陪試設備[12]。在系統(tǒng)運行過程中,需要對重要的電氣參數(shù)數(shù)據(jù)進行采集監(jiān)測,如交流配電網(wǎng)絡中各節(jié)點的有功功率、無功功率、部分節(jié)點電壓、直流配電網(wǎng)絡中的電壓電流,以及各類負載的溫、濕度[13],系統(tǒng)量測的物理量較多,隨著時間的推移,不斷產(chǎn)生的量測值將使數(shù)據(jù)規(guī)模越來越大。
圖 1 IPS 中壓直流區(qū)域配電網(wǎng)絡拓撲圖Fig. 1 Medium voltage DC zonal electric distribution network topology of IPS
高度的信息化使IPS 數(shù)據(jù)呈現(xiàn)出規(guī)模大、類型多、更新速度快的特點,給長期歷史數(shù)據(jù)存儲帶來了極大的壓力,但在系統(tǒng)運行過程中,電氣參數(shù)在暫態(tài)變化過程后較為穩(wěn)定,數(shù)據(jù)量測值臨近度高,可以在數(shù)據(jù)持久化存儲之前進行相應的壓縮處理來提高數(shù)據(jù)存儲效率。
SDT 算法是一種采用直線對過程數(shù)據(jù)進行擬合的算法,對于數(shù)據(jù)樣本,其通過規(guī)定最大允許誤差,可以找出盡可能最長的直線趨勢,這對緩慢變化的數(shù)據(jù)來說能夠提供較好的壓縮和恢復性能[14-15]。
SDT 算法原理[7,16-17]如下:以圖2 為例,橫坐標T0~T5為采集數(shù)據(jù)點的時間坐標,縱坐標為采集數(shù)據(jù)點的數(shù)據(jù)值,設?E為壓縮偏差,以數(shù)據(jù)點Y0為起始點,以距離數(shù)據(jù)點Y0為?E的上、下兩點作為支點,建立兩扇虛擬的門,當只有一個數(shù)據(jù)時門閉合,隨著數(shù)據(jù)點的增加,門會旋轉打開,門的長度也可延伸,且一旦打開就不能再閉合;只要兩扇門的內(nèi)角之和小于180°,旋轉操作就可以繼續(xù),當兩扇門的內(nèi)角之和大于180°時,就停止操作,然后存儲前一數(shù)據(jù)點,并由該點開始新一段壓縮。因此在圖2 中,存儲點為Y0,Y3,Y4。
SDT 算法的壓縮偏差?E決定了兩扇門達到平行時所能容納的精度范圍,其對算法的壓縮性能影響較大。壓縮偏差?E越大,舍棄的原數(shù)據(jù)點越多,壓縮存儲的數(shù)據(jù)量就越少,算法的數(shù)據(jù)壓縮效果也就越好;反之,壓縮偏差?E設置得越小,壓縮存儲的數(shù)據(jù)量就越大,算法的數(shù)據(jù)壓縮效果也就越差。
圖 2 旋轉門算法壓縮原理Fig. 2 Swinging door algorithm compression principle
IPS 不同分系統(tǒng)的數(shù)據(jù)特性不同,多種業(yè)務軟件的數(shù)據(jù)處理需求不同,因此數(shù)據(jù)壓縮過程中所需要設置的?E也不同,而數(shù)據(jù)壓縮時?E值是預先設定的,通常需要經(jīng)過長時間的積累和經(jīng)驗才能確定合適的值,這與IPS 的多種業(yè)務軟件需求相矛盾。另外,SDT 算法在提供高壓縮比的同時忽略了數(shù)據(jù)精度對于數(shù)據(jù)壓縮的重要性,如果只追求數(shù)據(jù)的高壓縮比,會在數(shù)據(jù)壓縮過程中舍棄較多的原數(shù)據(jù),易造成數(shù)據(jù)解壓縮之后的失真,這對于業(yè)務應用來說很重要,因為失真的數(shù)據(jù)不能真實反映系統(tǒng)運行狀態(tài),可能會導致錯誤的控制指令,如斷路器的錯誤開斷、發(fā)電機的錯誤解列,這些錯誤指令會給整個IPS 的運行帶來很大的不穩(wěn)定因素。因此,在IPS 數(shù)據(jù)壓縮存儲過程中,壓縮算法在保證數(shù)據(jù)壓縮精度的前提下根據(jù)業(yè)務性能對壓縮偏差?E進行動態(tài)調(diào)整就顯得很有必要。
數(shù)據(jù)壓縮算法的評價指標通常采用數(shù)據(jù)壓縮比和數(shù)據(jù)的解壓縮誤差來表示。設一組數(shù)據(jù)為y1~yn,壓縮之后數(shù)據(jù)的個數(shù)為m(m≤n),解壓縮后的數(shù)據(jù)為,那么描述數(shù)據(jù)壓縮性能的壓縮比CR、均方誤差MSE、均方根誤差RMSE和平均絕對誤差MAE分別如下所示:
壓縮比CR用于衡量壓縮算法對一組數(shù)據(jù)的壓縮能力,壓縮比越大,算法的壓縮效果越好,其通常是作為較為硬性的壓縮效果評價指標;上面的3 種解壓縮誤差都不同程度地反映了一組數(shù)據(jù)的失真程度,即數(shù)據(jù)解壓縮之后的數(shù)據(jù)準確度,它們的計算值越小,表明原數(shù)據(jù)與解壓縮值之間的誤差越小,算法的壓縮精度越高,其中平均絕對誤差MAE的計算最簡單,計算量也最小。在數(shù)據(jù)規(guī)模越來越大的背景下,本文選擇計算量較小的MAE作為數(shù)據(jù)壓縮評價指標,在反映數(shù)據(jù)壓縮性能的前提下,可以節(jié)省一定的計算開銷。
針對合適的壓縮偏差?E難以確定的問題,本文將數(shù)據(jù)真實值與數(shù)據(jù)解壓縮值之間的平均絕對誤差MAE作為數(shù)據(jù)壓縮算法的重要評價指標,并根據(jù)實際壓縮誤差與期望壓縮誤差之間的偏差動態(tài)調(diào)整數(shù)據(jù)壓縮偏差?E,調(diào)整之后,再次對壓縮數(shù)據(jù)進行壓縮。通過不斷的迭代,使數(shù)據(jù)壓縮的實際性能符合預期,從而降低數(shù)據(jù)存儲量。
本文將基于自動控制系統(tǒng)模型,將數(shù)據(jù)真實值與解壓縮值(預測值)之間的期望誤差δ作為系統(tǒng)輸入,實際平均絕對誤差MAE作為系統(tǒng)的輸出,兩者之間的差值ε作為反饋量,通過負反饋作用于控制器來調(diào)整壓縮偏差?E。在改進的壓縮算法中,參數(shù)?E不需要設定為固定值,只需要給出大致的上、下閾值,就可以根據(jù)實際的壓縮情況進行動態(tài)調(diào)整。
假設Emax和Emin分別為壓縮偏差?E的上、下閾值,D為壓縮偏差的調(diào)整參數(shù),τ為數(shù)據(jù)解壓縮實際誤差與期望誤差之間的偏差容差,y1~yn為一組待壓縮的數(shù)據(jù)值,算法步驟如下:
1) 在對當前的數(shù)據(jù)點y1~yn進行數(shù)據(jù)壓縮之前,首先進行壓縮參數(shù)的初始化。Emax和Emin可以自行設定,D和τ作為自動控制系統(tǒng)模型參數(shù)需要提前設定,本算法擬設Emax=0.6,Emin=0.1,?E=(Emax+Emin) /2,D=(Emax?Emin) /10,τ=0.2。
2) 設T為壓縮算法所允許的最大時間間隔,從待壓縮數(shù)據(jù)中取出一點yi(1≤i≤n),若該點與上一存儲點的時間間隔大于等于T,則將前一個數(shù)據(jù)點yi-1直接存儲,不需要進行旋轉門分析,否則,進行下一步驟的旋轉門壓縮。
3) 計算數(shù)據(jù)點yi處旋轉門兩扇門的斜率kup和kdown,如果兩扇門之間已經(jīng)平行,或者說kup≥kdown,則將前一數(shù)據(jù)點yi-1進行存儲,并將其作為新的壓縮起始點,否則,該數(shù)據(jù)點yi將被舍棄。
4) 檢驗數(shù)據(jù)是否壓縮完畢,若壓縮完畢,進行下一步的操作,否則,返回第2)步,對下一數(shù)據(jù)點yi+1進行相同的壓縮操作。
5) 數(shù)據(jù)壓縮完畢后,通過解壓縮算法對數(shù)據(jù)進行恢復,解壓縮之后的數(shù)據(jù)為,由此可以計算出數(shù)據(jù)真實值與解壓縮值之間的平均絕對誤差MAE,經(jīng)與期望誤差δ作差,得到兩者之間的差值ε。
6) 根據(jù)差值ε情況,對壓縮偏差?E做出動態(tài)調(diào)整:
(1) 當0≤ε<δ·τ時,說明數(shù)據(jù)偏差ε在可容許的誤差范圍內(nèi),?E選取比較合適,不需要做出調(diào)整;
(2) 當ε≥δ·τ時,說明數(shù)據(jù)偏差ε偏大,所計算獲得的平均壓縮誤差MAE偏小,?E偏小,存儲了較多原始數(shù)據(jù),應在Emax范圍內(nèi)適當擴大?E,
(3) 當?δ·τ<ε<0 時,說明數(shù)據(jù)偏差ε偏小,計算獲得的平均壓縮誤差MAE偏大,?E偏大,舍棄了較多的原始數(shù)據(jù),應在Emin范圍內(nèi)適當減小?E,
當ε不屬于以上情況時,說明解壓縮之后的數(shù)據(jù)已經(jīng)嚴重失真,應直接返回第1)步,對初始參數(shù)進行重新設置,然后再進行數(shù)據(jù)壓縮處理。
7) 對壓縮偏差?E進行動態(tài)調(diào)整后,返回第2)步用新的?E進行數(shù)據(jù)壓縮處理,通過不斷迭代直至偏差ε在誤差容許范圍內(nèi),從而完成數(shù)據(jù)壓縮。改進算法的具體流程如圖3 所示。
對改進SDT 壓縮算法的數(shù)據(jù)進行數(shù)據(jù)解壓縮時,通常采用線性插值法,由存儲的數(shù)據(jù)點之間的兩點連線來表示兩點之間任意時刻的解壓值。假設y0,yk為連續(xù)存儲的2 個數(shù)據(jù)點,t0,tk為其所對應的時間,則它們之間任意時刻ti所對應的解壓縮值y?i都可以用公式(7)來表示。
圖 3 改進SDT 算法流程圖Fig. 3 Improved SDT algorithm flow chart
測試平臺采用X86 架構,平臺的核心配置參數(shù)如下:CPU 為i5@3.4 GHz,ARM 為8 GB,算法的實現(xiàn)以及測試程序均基于C-Free 開發(fā)環(huán)境,在Win7(64 位)操作系統(tǒng)下展開測試。測試程序通過加載Simulink 模塊模擬生成具有IPS 數(shù)據(jù)特點的數(shù)據(jù)序列文件,實現(xiàn)對模擬IPS 數(shù)據(jù)的壓縮,并存儲在相應的文件中。
IPS 運行時,所需要監(jiān)測的電氣量主要分為具有振蕩特性的交流信號、穩(wěn)定的直流信號和激變的脈沖信號3 種,例如發(fā)電機側與低壓網(wǎng)絡中的交流參數(shù)、中壓直流區(qū)域配電網(wǎng)絡中的各種直流參數(shù)、溫度參數(shù)和高能武器系統(tǒng)中的脈沖參數(shù),這些電氣參數(shù)的暫態(tài)變化過程可以由振蕩信號、直流信號和激變信號疊加而成。因此,測試負載的生成即是在提取IPS 數(shù)據(jù)特點的基礎上,在Simulink 中分別模擬生成系統(tǒng)運行時的數(shù)據(jù)文件,以進行壓縮算法的性能測試。
對于具有振蕩特性的交流信號的生成,在Simulink 模塊中選取正弦信號波發(fā)生器sine wave,模擬產(chǎn)生y=Asin(ωx+?)形 式的數(shù)據(jù)文件sin.mat并加載到Matlab 軟件中生成txt 文本文件,然后通過改進的SDT 算法進行數(shù)據(jù)壓縮處理測試。
設A=100,ω=2,φ=0°,為保證數(shù)據(jù)壓縮精度,本算法設置τ=0.2,δ=0.2,Emin=0.1,Emax=0.6,T=10Tf(Tf為采樣周期),對采集的數(shù)據(jù)序列進行壓縮處理并存儲到out.txt文件中,然后通過解壓縮算法將數(shù)據(jù)恢復至src.txt文件中。
為能直觀地看出壓縮效果,先選取數(shù)據(jù)量?。╪=300)的數(shù)據(jù)序列,將原數(shù)據(jù)序列、壓縮存儲數(shù)據(jù)與解壓縮數(shù)據(jù)在Matlab 軟件中繪出并進行對比,結果如圖4(a)所示。
保持改進SDT 算法的參數(shù)設置不變,對不同幅值、不同頻率的振蕩數(shù)據(jù)序列進行壓縮處理。通過Simulink 平臺模擬產(chǎn)生3 種振蕩數(shù)據(jù)序列y=100sin2x,y=200sin2x和y=100sin3x,在期望誤差δ=0.2 的情況下,原數(shù)據(jù)解壓縮值的精度得到了保證,隨著數(shù)據(jù)量的增加,算法的壓縮效果如圖4(b)和圖4(c)所示。
由圖4(b)可以看出,改進的SDT 算法對不同的振蕩數(shù)據(jù)序列均有著很好的壓縮效果,隨著被壓縮數(shù)據(jù)幅值、采集頻率的增大,數(shù)據(jù)壓縮效果有所下降。由圖4(c)可以看出,算法的壓縮效果隨著數(shù)據(jù)量的增大變化不大,較為穩(wěn)定。另外,在數(shù)據(jù)的壓縮過程中,在期望誤差δ和壓縮偏差上、下限確定的情況下,隨著幅值、采集頻率的增大,算法的迭代次數(shù),即?E的調(diào)整次數(shù)也會逐漸增加,但整個過程都是自動進行的動態(tài)調(diào)整。
圖 4 振蕩數(shù)據(jù)序列的數(shù)據(jù)壓縮Fig. 4 The data compression of oscillation data sequence
對于IPS 穩(wěn)定運行過程中直流信號的生成,可在Simulink 模塊中選用脈沖發(fā)生器Pulse Generator,通過調(diào)節(jié)占空比和信號周期模擬生成的y=A形式數(shù)據(jù)文件constant.mat,將數(shù)據(jù)轉為txt 格式存儲后,再通過壓縮算法來進行直流信號的壓縮性能測試。
設A=100,對于直流信號的壓縮,期望誤差的取值可以稍大一些以提高壓縮比。本算法設置τ=0.2,δ=0.5,Emin=0.1,Emax=0.6,T=10Tf,將采集的數(shù)據(jù)序列進行壓縮處理并存儲到out.txt 文件中,然后再通過解壓縮算法將數(shù)據(jù)恢復至src.txt文件。
為了直觀地看出壓縮效果,先選取數(shù)據(jù)量小(n=300)的數(shù)據(jù)序列,將原數(shù)據(jù)序列、壓縮存儲數(shù)據(jù)與解壓縮數(shù)據(jù)在Matlab 軟件中繪出并進行對比,結果如圖5(a)所示。圖中,紅色的點為壓縮存儲點。
保持改進SDT 算法的參數(shù)設置不變,對穩(wěn)定的直流數(shù)據(jù)序列進行壓縮處理,在期望誤差δ=0.5 的情況下,隨著數(shù)據(jù)量的增加,算法的壓縮效果如圖5(b)所示。
由圖5(b)可以看出,改進的SDT 算法對于穩(wěn)定的直流數(shù)據(jù)序列有著良好的數(shù)據(jù)壓縮效果,且壓縮效果隨著數(shù)據(jù)量的增大變化不大。另外,此時的數(shù)據(jù)壓縮比CR受最大時間間隔T的影響較大,當T固定后,壓縮比CR也會固定,考慮到數(shù)據(jù)解壓縮是通過線性插值方法實現(xiàn)的,所以此時的解壓縮數(shù)據(jù)與原數(shù)據(jù)之間的實際誤差為0。
對具有激變特性的脈沖信號的生成,可在Simulink 模塊中選用脈沖發(fā)生器Pulse Generator,通過調(diào)節(jié)占空比和幅值模擬生成的數(shù)據(jù)文件pulse.mat,在將數(shù)據(jù)加載到Matlab 軟件中轉為txt 格式后,通過改進的SDT 算法進行脈沖信號的壓縮性能測試。設Pulse Generator 發(fā)生器的信號幅值為100,占空比為5%,對脈沖信號的壓縮,可將壓縮偏差的上、下限稍作改動以提高壓縮比。本算法設置τ=0.2,δ=0.5,Emin=0.1,Emax=0.6,T=10Tf,對采集的數(shù)據(jù)序列進行壓縮處理并存儲到out.txt文件中,然后通過解壓縮算法將數(shù)據(jù)恢復至src.txt文件。
為了直觀地看出壓縮效果,先選取數(shù)據(jù)量?。╪=300)的數(shù)據(jù)序列,將原數(shù)據(jù)序列、壓縮存儲數(shù)據(jù)與解壓縮數(shù)據(jù)在Matlab 軟件中繪出并進行對比,結果如圖5(c)所示。
圖 5 直流/脈沖數(shù)據(jù)序列數(shù)據(jù)壓縮Fig. 5 The data compression of DC/pulse data sequence
保持改進SDT 算法的參數(shù)設置不變,對激變的脈沖數(shù)據(jù)序列進行壓縮處理,在期望誤差δ=0.5 的情況下,隨著數(shù)據(jù)量的增加,算法的壓縮效果如圖5(d)所示。
由圖5(d)可以看出,改進的SDT 算法對激變的脈沖數(shù)據(jù)序列有著良好的壓縮效果,其在保證解壓縮數(shù)據(jù)精度的前提下能夠實現(xiàn)較大的壓縮比,且隨著數(shù)據(jù)量的增大,算法的壓縮性能也較為穩(wěn)定。另外,由圖中還可以看出,最大的時間間隔T對脈沖數(shù)據(jù)序列的壓縮影響較大,而當參數(shù)T設定后,其對于脈沖數(shù)據(jù)序列的壓縮性能便基本不變了。
隨著IPS 的發(fā)展,傳統(tǒng)的數(shù)據(jù)存儲方法存在著占用資源過多,已有的壓縮算法存在著忽視壓縮精度、多種業(yè)務下壓縮偏差難以確定等問題。本文基于SDT 算法提出了其改進算法,優(yōu)勢如下:
1) 能根據(jù)系統(tǒng)數(shù)據(jù)特性保證數(shù)據(jù)的壓縮精度在期望范圍內(nèi),滿足IPS 業(yè)務需求;
2) 能在保證精度的同時動態(tài)調(diào)整壓縮偏差,通過平均絕對誤差反饋不斷迭代獲得較高的壓縮比,簡化壓縮偏差的設置步驟。
文章基于Simulink 模擬產(chǎn)生了具有系統(tǒng)數(shù)據(jù)特性的數(shù)據(jù)序列并對算法性能進行了測試,結果證明對于模擬的數(shù)據(jù)序列,改進的SDT 算法具有較好的壓縮效果??梢?,采用改進的SDT 算法可以提高IPS 的數(shù)據(jù)壓縮效率,對于數(shù)據(jù)驅動的船舶智能化具有重要意義。