现目前大坝安全监测数据主要是通过建立传统监测数学模型进行分析的,即:统计模型、确定性模型和混合模型。传统监测模型的共同特点是将影响变形的因素归纳为水压、温度和时效三类因子,通过预置适当的因子集,结合实测变形数据,采用统计回归方法,获得监测数学模型。
传统的大坝安全监测模型的实质上是将复杂的非线性问题,通过适当的简化进行线性化处理,因而其本质上仍然是广义的线性回归模型,难以真实反映混凝土坝系统中的非线性特性,在用于混凝土坝的实际安全监控时,其预报效果、特别是外延预报效果常常不理想。即使对模型中的预置因子、求解方法等方面进行改进,仍然无法从根本上改善模型的监控效果。
因此,迫切需要寻找一种可靠并且行之有效的方法,建立新的大坝监测模型来处理数据并揭示其测值的变化规律。监测人网站团队成员一直致力于大坝安全监测非线性模型研究,深入分析大坝安全监测模型的非线性因素,试图引入一种新的且非常实用非线性监测模型进行大坝安全监测资料分析。
现代非线性科学的发展,为研究混凝土坝系统中的非线性动力问题提供了理论基础和技术支持;特别是非线性科学中的混沌理论(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