基于函数参数估计的通用过程数据在线压缩、解压方法 【技术领域】
本发明涉及一种过程数据的在线压缩、解压方法。
背景技术
实时数据库系统是一种对处理事务的实时性要求比普通数据库严格得多的数据库系统。即使在一般应用中,实时数据库系统每秒都需要存储几万甚至几十万条的记录,在如此大规模的数据存储速度场合下,如果没有采用合适的压缩方法很难满足实时性的需求。
数据压缩技术对实时数据库系统而言有三个方面的重大意义。第一,由于实时数据库需要采集的数据量很大,数据压缩可以有效地降低网络数据传输的负荷,节省带宽,提高系统的网络并发能力。其次,将压缩处理后的数据存入硬盘可以有效地降低对硬盘存储空间的压力,经过压缩以后,同样容量的数据可以保存更长时间的过程数据。第三,在实时数据库中由于采用压缩技术可以减少数据量,这样就降低了对后续数据处理和存储的负担,可以有效地提升系统整体的处理能力。
实时数据库的压缩算法需要同时满足三个条件,即压缩率高、内存占用少、计算量小。在实时数据库领域中,美国OSI公司发明的旋转门算法,由于计算简单,内存占用少,对于普通数据压缩率高而得到了广泛的应用。旋转门压缩算法实质上是一种数据的线性压缩算法,即采用分段直线的方法去近似原始数据,同时使误差在预设的控制范围内。实践证明,旋转门算法对于随时间线性变化的过程数据压缩率是非常高的,但是当数据随时间非线性变化时,比如正弦波,则压缩率很低。而一般的工控场合,各种数据源数据一般与时间都不是线性关系。
而一些发明试图采用线性拟合的方法实现过程数据的压缩,但是这类方法需要大量的内存缓存历史过程数据,在实时数据库中由于需要压缩的数据源很多,将占用大量的内存,因此这类方法不太适合进行过程数据压缩。
中国知识产权局公开的申请号为:CN02120383.0,名称为:自适应的历史数据压缩方法的发明专利,其包括步骤:压缩时间判断:对当前测量值,判断测量时间是否在给定的压缩时间区间内,在当前测量值的时差太小时,不执行后面的步骤,继续考察下一测量数据;在当前测量值的时差太大时,存储当前值的前一值,作为下一轮数据压缩测试的起点和新的上一存储点;斜率的计算:计算当前值斜率及当前最大斜率和最小斜率;对不同时刻的测量数据,根据当前最大/最小斜率,自适应地动态计算压缩偏差参数;用新计算的压缩偏差参数,计算当前值斜率的上界和下界;压缩测试判断:当前值通过压缩测试,存储当前值的前一个值,作为下一轮数据压缩测试的起点和新的上一存储点,否则继续测试下一个新的数据点。该专利与旋转门算法一样,采用了线性压缩算法,对于非线性数据存在压缩率低的问题。
中国知识产权局公开的另一申请号为:CN200610052068.X,名称为:一种基于最小二乘线性拟合的实时数据压缩方法,该方法针对工业现场采集的实时数据数据量巨大并且存在大量噪声干扰和冗余数据等情况,首先通过对采自工业现场的实时数据进行预处理,然后将处理过的数据存入内存历史数据缓冲区,并且以保存在缓冲区中的数据为样本动态构建最小二乘线性拟合直线,通过测量缓冲区中所有点到该拟合直线的距离并对比用户指定的最大压缩偏差来判断是否需要保留数据点。该方法采用了离线压缩算法,需要消耗大量的内存缓存过程数据,并且同样存在对于非线性数据压缩率低地问题。
【发明内容】
本发明的目的在于,提供一种基于函数参数估计的通用过程数据在线压缩方法,以压缩实时数据库采集到的过程数据。
本发明采用如下技术方案:
一种基于函数参数估计的通用过程数据在线压缩方法,在描述本发明具体技术方案之前,先给出本发明所采用部分术语的定义:
过程数据:指按时间先后顺序采集的数据,数据中带有时间戳信息。大多数工业现场采集的数据都是过程数据。
曲线函数:将曲线通过代数形式显示表达出来的函数,比如采用加、减、乘、除、指数、对数、三角函数等组合而成的函数。这里的曲线是一般性的概念,既包含弯曲的曲线,也包括直线。
本发明方法具体包括以下步骤:
一种基于函数参数估计的通用过程数据在线压缩方法,包括以下步骤:
1)对数据随时间分布情况进行估计;
2)利用曲线函数对数据源数据随时间变化建模;
3)减少曲线函数中参数的个数;
4)进行实时数据库的在线压缩。
进一步地,所述步骤2)中,采用高阶多项式的形式对过程数据的变化规律建模。
进一步地,所述步骤3)中减少曲线函数中参数的个数的方法为,在过程数据中采取一部分比较有代表性的点,带入曲线函数中,计算曲线函数中的部分参数的值,或者利用对过程数据分布的经验,事先确定部分参数的值。
进一步地,所述步骤4)具体包括以下步骤:
41)初始化高阶多项式曲线函数的参数:根据参数的可能取值范围,给高阶多项式曲线函数所不能确定的所有参数设定取值范围;
42)读入一条实时过程数据记录,代入高阶多项式曲线函数,根据预设的误差得到一个不等式;解该不等式获得新的高阶多项式曲线函数参数的取值范围;
43)将求取的参数取值范围和原取值范围求一个交集,得到一个新的取值范围,判断该新的取值范围是否为空,如果否,则以该新的取值范围更新原取值范围,则转步骤42);如果是,则进入步骤44);
44)保存前一条过程数据及高阶多项式曲线函数的参数,以当前的过程数据作为基点,转到步骤41)。
进一步地,所述步骤1)中,数据源采集到的过程数据随时间呈正弦分布,所述步骤2)中建模为y=asinω(t-t0)+b,其中a,ω,t0,b为正弦曲线的参数。
进一步地,所述步骤3)中,根据按正弦分布的过程数据,事先确定幅度a、波动中心b和波动频率ω。
进一步地,所述步骤4)具体为:
41)初始化曲线函数的参数:根据参数的可能取值范围,给曲线函数所不能确定的参数相位t0设定初始范围;
42)读入一条实时过程数据记录,代入以下公式,获得t0取值范围:
t-1ωarcsiny-b+ea<t0<t-1ωarcsiny-b-ea]]>
其中,e为预设的允许误差;
43)将获得的取值范围和原取值范围求一个交集,得到一个新的取值范围,判断该新的取值范围是否为空,如果否,则以该新的取值范围更新原取值范围,则转步骤42);如果是,则进入步骤44);
44)保存当前过程数据及曲线函数的参数,以下一个过程数据作为基点,转到步骤41)。
进一步地,所述正弦函数的一个周期内至少保存一条记录,所述步骤4)具体为:
41)初始化曲线函数的参数:根据一个周期内可能取值范围,给曲线函数所不能确定的参数相位t0设定两个初始范围;
42)读入一条实时过程数据记录,代入以下公式,获得t0的两个新取值范围:
t-1ωarcsiny-b+ea<t0<t-1ωarcsiny-b-ea]]>
t-1ω(π-arcsiny-b-ea)<t0<t-1ω(π-arcsiny-b+ea)]]>
其中,e为预设的允许误差;
43)将获得的两个取值范围和原对应的两个取值范围求交集,得到新的两个对应的取值范围,判断该两个新的取值范围是否全为空,如果否,则以新的取值范围更新原取值范围,转步骤42);如果是,则进入步骤44);
44)保存当前过程数据及曲线函数的参数,以下一个的过程数据作为基点,转到步骤41)。
本发明还提供一种基于函数参数估计的通用过程数据的解压方法,用于对上述基于函数参数估计的通用过程数据在线压缩方法获得的压缩后的数据进行解压,包括以步骤:
根据保存的曲线函数参数值,预先设定一个与压缩时一样的曲线函数,利用所述压缩后的数据和该曲线函数计算获得解压后的数据。
本发明可应用于实时数据库或一些需要存储过程数据的场合。本发明可以获得比传统线性过程数据压缩算法,比如旋转门,获得更大的压缩率。同时本发明计算量小、需要缓存的数据少,非常适合作为在线的过程数据压缩方法。
以下结合附图及实施例进一步说明本发明。
【附图说明】
图1为本发明基于函数参数估计的通用过程数据在线压缩方法流程图;
图2为本发明中实时数据库的在线压缩步骤的流程图;
图3为输入的过程数据随时间变化趋势图;
图4为采用本发明基于函数参数估计的通用过程数据在线压缩方法的压缩结果示意图;
图5为采用现有旋转门压缩算法的压缩结果示意图。
【具体实施方式】
实施例一
如图1所示,一种基于函数参数估计的通用过程数据在线压缩方法,包括以下步骤:
1)对数据随时间分布情况进行估计;
2)利用曲线函数对数据源数据随时间变化建模;
3)减少曲线函数中参数的个数;
4)进行实时数据库的在线压缩。
其中,所述步骤2)中,采用高阶多项式的形式对过程数据的变化规律建模。
其中,所述步骤3)中减少曲线函数中参数的个数的方法为,在过程数据中采取一部分比较有代表性的点,带入曲线函数中,计算曲线函数中的部分参数的值,或者利用对过程数据分布的经验,事先确定部分参数的值。
其中,所述步骤4)具体包括以下步骤:
41)初始化高阶多项式曲线函数的参数:根据参数的可能取值范围,给高阶多项式曲线函数所不能确定的所有参数设定取值范围;
42)读入一条实时过程数据记录,代入高阶多项式曲线函数,根据预设的误差得到一个不等式;解该不等式获得新的高阶多项式曲线函数参数的取值范围;
43)将求取的参数取值范围和原取值范围求一个交集,得到一个新的取值范围,判断该新的取值范围是否为空,如果否,则以该新的取值范围更新原取值范围,则转步骤42);如果是,则进入步骤44);
44)保存前一条过程数据及高阶多项式曲线函数的参数,以当前的过程数据作为基点,转到步骤41)。
实施例二
一种基于函数参数估计的通用过程数据在线压缩方法,包括以下步骤:
1)对数据随时间分布情况进行估计:比如从某个数据源采集到的数据随时间均匀增长,则该数据呈线性分布。如果从一个数据源采集到的数据随时间呈正弦分布,则该数据呈正弦曲线分布;
2)利用曲线函数对数据源数据随时间变化建模:建模即建立一个以时间为变量的函数,该函数可以描述数据曲线的分布规律。比如数据呈线性分布,则该数据的变化规律为y=at+b,其中a,b是函数的参数,而t是时间,只要确定参数a和b,就可以确定过程数据的分布规律。如果数据呈正弦曲线分布,则该数据随时间的变化规律可以建模为y=asinω(t-t0)+b,其中a,ω,t0,b为正弦曲线的参数,只要确定了这些参数,就可以唯一确定这些过程数据的分布情况。如果对数据源数据的变化规律事先很难获得,就可以采用高阶多项式的形式对过程数据的变化规律建模;
3)减少曲线函数中参数的个数:根据建模获得的曲线函数含有多个参数(即函数有多个自由度),减少曲线函数中参数的个数,以降低计算量,提高运算速度。减少曲线函数中参数的个数有以下两种方法:
一、利用对过程数据分布的经验,事先确定部分参数的值。比如按正弦分布的过程数据,如果知道了它的幅度(即解析式中的a)、波动中心(即解析式中的b)和波动频率(即解析式中的ω),就可以事先将这三个参数确定下来,这样这个曲线函数只剩下了参数t0,大大降低了曲线函数中参数的个数。
二、在过程数据中采取一部分比较有代表性的点,带入曲线函数中,也可以有效地降低曲线函数中可变参数的个数。
4)进行实时数据库的在线压缩,这是一个迭代过程,如图2所示,具体包括以下步骤:
41)初始化曲线函数的参数:根据参数的可能取值范围,给曲线函数所不能确定的所有参数设定一个初始范围;
42)读入一条实时过程数据记录,代入曲线函数,根据预设的误差得到一个不等式。解这个不等式可以获得新的曲线函数参数的取值范围;
43)将求取的参数取值范围和原范围求一个交集,得到一个新的取值范围,判断该新的取值范围是否为空,如果是,则以新取值范围更新原取值范围,则转步骤42);否则,进入步骤44);
44)新的取值范围为空,这说明当前的过程数据记录不满足当前参数的曲线函数的条件,此时,需要保存前一条过程数据及对应曲线函数的参数,同时以当前的过程数据作为基点,重新开始新一轮的压缩过程,并转到步骤41)。如果曲线参数只有一个未知参数,如后续的正弦曲线所述,因为解压缩的时候只需一个点即可求得曲线参数,故当参数取值范围为空时,只需保存当前的过程数据即可,而无需保存前一条过程数据。
首先对该过程数据进行建模。输入的过程数据随时间分布如图3所示,其中横轴为时间t,可见,该过程数据随时间的分布复合正弦曲线函数。
对过程数据建模。由于该过程数据分布复合正弦函数,因此可以得到解析表达式为:
y=asinω(t-t0)+b
其中,a为正弦曲线的振幅,ω为振动频率,t0为相位,b为振动偏移中心。
精简曲线函数的参数。假设根据工程经验或累积的历史数据,已经知道该正弦曲线的参数a,ω和b,那么正弦函数只剩下一个参数,即相位t0。
对于任意输入的一条过程数据,其时间t和数值y如果能被该曲线函数近似,就必须符合如下的不等式:
y-e≤asinω(t-t0)+b≤y+e
其中,e为预设的允许误差。如果规定正弦函数的一个周期内必须至少保存一条记录,则可进一步求得t0必须符合如下至少两个不等式:
t-1ωarcsiny-b+ea<t0<t-1ωarcsiny-b-ea]]>或
t-1ω(π-arcsiny-b-ea)<t0<t-1ω(π-arcsiny-b+ea)]]>
反正弦函数可以通过查表法快速得到结果。在压缩过程中,当获得第一条记录时,根据上式可以得到t0的两个取值范围,并保存这两个取值范围。当采集到后续记录时,可以求得新的两个取值范围,并与前两个取值范围求交后,更新原取值范围。继续这个过程,如果这两个取值范围不全为空,则输入的过程数据可以被曲线函数所预测,故可以将这个输入过程数据舍弃。如果两个取值范围都为空集,则保存该过程数据及对应曲线函数的参数值,则启动新一轮的压缩过程。
经过压缩后,需要保存的点如图4中所示,采用“X”标记。而采用旋转门压缩算法需要保存的点如图5所示。为了便于比对,两种压缩算法采用了同样的允许压缩误差。从图中可以看出,采用同样的压缩误差,旋转门算法需要保存12条记录,而采用基于函数参数估计的通用过程数据在线压缩方法只需要保存5条记录,大大提高了压缩率。
实施例三
一种基于函数参数估计的通用过程数据在线解压方法,根据保存的曲线函数参数值,预先设定一个与压缩时一样的曲线函数,利用所述压缩后的数据和该曲线函数计算获得解压后的数据。曲线函数获得参数后,需要解压的数据只需输入时间值就可以得到相应的解压结果。
以上所述的实施例仅用于说明本发明的技术思想及特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,不能仅以本实施例来限定本发明的专利范围,即凡依本发明所揭示的精神所作的同等变化或修饰,仍落在本发明的专利范围内。