現目前大壩安全監測數據主要是通過建立傳統監測數學模型進行分析的,即:統計模型、確定性模型和混合模型。傳統監測模型的共同特點是將影響變形的因素歸納為水壓、溫度和時效三類因子,通過預置適當的因子集,結合實測變形數據,采用統計回歸方法,獲得監測數學模型。
傳統的大壩安全監測模型的實質上是將復雜的非線性問題,通過適當的簡化進行線性化處理,因而其本質上仍然是廣義的線性回歸模型,難以真實反映混凝土壩系統中的非線性特性,在用于混凝土壩的實際安全監控時,其預報效果、特別是外延預報效果常常不理想。即使對模型中的預置因子、求解方法等方面進行改進,仍然無法從根本上改善模型的監控效果。
因此,迫切需要尋找一種可靠并且行之有效的方法,建立新的大壩監測模型來處理數據并揭示其測值的變化規律。監測人網站團隊成員一直致力于大壩安全監測非線性模型研究,深入分析大壩安全監測模型的非線性因素,試圖引入一種新的且非常實用非線性監測模型進行大壩安全監測資料分析。
現代非線性科學的發展,為研究混凝土壩系統中的非線性動力問題提供了理論基礎和技術支持;特別是非線性科學中的混沌理論(Chaos Theory)、突變理論等現代數學,為建立大壩安全監控模型提供了新的研究思路。監測人網站團隊通過近一年多的對大壩安全監測混沌時間序列模型的研究,獲得一定成果。由于混沌時間序列已經在早幾年就被成功引入到了大壩安全監測領域,其中武漢大學和河海大學對此混沌的研究成果較多。現監測人網站利用我站團隊自己研究的成果,同時結合各高校的研究成果,舉行關于混沌時間序列大壩安全監測模型的普及講座,使得大家都知道和了解混沌在大壩安全監測領域的應用情況。下面首先進行混沌理論的基礎知識的相關介紹。
1、混沌理論
混沌理論是一門新興的非線性學科,是對確定性非線性動力系統中的不穩定非周期性行為的定性研究。即為在沒有變量的情況下,系統運動是一項有規律的重復行為,通過研究認識這一系統狀態,非周期性行為就變成了可以觀察的對象。
簡而言之,混沌是一種非周期性的動力學過程,它無處不在且蘊含著有序,有序的過程也可能出現混沌,它是服從確定性規律但具有隨機性的運動。
2、互信息法求延遲時間
上面簡要介紹混沌理論的基礎知識,下面來具體介紹一下關于互信息求混沌時間序列延遲時間的知識。
在進行重構相空間時,延遲時間和嵌入維數的選取具有十分重要的意義,同時這兩個參數確定也是難點。相關基礎理論知識,監測人網站此次講座就不在此一一細細講解,具體可以查看呂金虎編寫的《混沌時間序列分析及其應用》,里面有較為詳細的介紹。
計算延遲時間的方法主要有自相關函數法、復自相關法、互信息法,其中互信息法是估計重構相空間時間延遲的一種有效方法,得到了廣泛的應用。因此,本次講座主要講述關于互信息法求延遲時間的相關知識。
同樣本文對于具體理論基礎知識也不再細細講述,本次講座主要是講述利用互信息進行延遲時間的計算。由于我國雖然對混沌時間序列模型有一定研究成果,但很多具體計算方法和計算程序僅在各個高校課題研究組內部存在,具體計算方法在中文相關文獻中較為模型,且無具體實際的算列,因此,國內大部分研究學者存在了解混沌理論概況,但在具體實現方法又存在有難題。現監測人網站根據近一年來的研究成果,對此種狀態進行簡要的解述,同時監測人網站團隊在此感謝某論壇上發布此開源混沌程序的作者(此作者將畢業設計的程序奉獻出來了),我團隊在此提供的成果上進行的研究。
具體計算方法為:(matlab源碼)
function [tau,I_sq]=mutual_information(data,tau_max,n)
I_sq=zeros(tau_max,1);
N=length(data);
for tau=1:tau_max
s=data(1:N-tau);q=data(tau+1:N);
as=min(s);bq=min(q); delts=(max(s)-as)/n;deltq=(max(q)-bq)/n;
N_sq=zeros(n);
for ii=1:n
for jj=1:n
for k=1:N-tau
as_k=(s(k)-as)/delts; bq_k=(q(k)-bq)/deltq;
if as_k>=ii-1&as_k<ii&bq_k>=jj-1&bq_k<jj
N_sq(ii,jj)=N_sq(ii,jj)+1;
end
end
end
end
Ntotal=sum(sum(N_sq));
Ps=sum(N_sq)/Ntotal; %¼ÆËãλÓÚһάs¸ñ×ÓÄڵĸÅÂÊ
Pq=sum(N_sq')/Ntotal; %¼ÆËãλÓÚһάq¸ñ×ÓÄڵĸÅÂÊ
Psq=N_sq/Ntotal; %¼ÆËãλÓÚ¶þά¸ñ×Ó(ii,jj)ÄÚ¸ÅÂÊ
H_s=0; %¼ÆËãsµÄìØ
H_q=0; %¼ÆËãqµÄìØ
for i=1:n
if Ps(i)~=0
H_s=H_s-Ps(i)*log(Ps(i));
elseif Pq(i)~=0
H_q=H_q-Pq(i)*log(Pq(i));
end
end