1.本发明涉及一种结合动态规划与二分法的新型风电数据清洗方法及系统,属于风电数据清洗技术领域。
背景技术:
2.目前,国内外对风电异常数据清洗的主要方法有五种:
3.一是计算每个样本的z-score分数与阈值θ对比来判断其是异常点还是正常点,当数据量较大或者异常点较多时,该算法时间复杂度较高并且阈值θ值难以确定;
4.二是使用lof算法,根据簇与簇之间的密度差异进行异常值剔除,可以有效剔除离散型异常点但该算法对堆积型异常点的识别效果较差;
5.三是使用组内最优方差,该算法可以对风电数据曲线下方异常数据进行有效剔除但对上方的异常数据的剔除效果不佳;
6.四是使用四分位数作为异常数据的识别方法,但当异常数据较多时,四分位数识别效果较差并且使用四分位数会造成数据的误删;
7.五是使用统计学习模型,机器学习模型或者深度学习的方式去捕获序列中线性,非线性,短时或者长时模式等特征来进行预测后将预测值与真实值相比较,来进行异常序列的删除。
8.但这些模型,需要大量数据来进行训练,风电数据复杂的非线性关系,周期关系等等难以捕捉,且如果风电数据本身异常序列就比较多,就会导致模型效果更差,从而导致清洗效果变差。
9.综上可知,现有的风电数据清洗技术并不能够针对风电数据中的异常序列进行快速有效地数据清洗。本技术为了解决上述问题,提出了一种结合动态规划与二分法的新型风电数据清洗方法及系统。
技术实现要素:
10.本发明的目的在于克服现有技术中的不足,提供一种结合动态规划与二分法的新型风电数据清洗方法及系统,本发明能够快速有效地清洗特殊情况下的风电异常数据。
11.为达到上述目的,本发明是采用下述技术方案实现的:
12.一方面,本发明提供一种结合动态规划与二分法的新型风电数据清洗方法,包括以下步骤:
13.获取风电数据样本,风电数据包括历史实测风速数据和实测功率数据;
14.预处理风电数据样本,获得对应每天的序号列表,序号列表记录表征各时刻风速和功率变化趋势关系的序号;
15.建立与序号列表对应的状态列表,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段;
16.建立与状态列表对应的排序列表,排序列表中各元素记录严格递减的状态列表各
子序列的最大尾部元素值;
17.通过动态规划构建状态转移方程,利用二分法求解各排序列表中最长递减子序列长度;
18.根据预设的最短递减子序列长度,删除最短递减子序列长度与最长递减子序列长度之间范围所对应的风电数据异常点。
19.进一步地,所述预处理风电数据样本,获得对应每天的序号列表,序号列表记录各时刻风速和功率变化趋势关系包括以下步骤:
20.以天为单位分割风电数据样本,并将每天的风电数据重组,获得重组样本;
21.逐一初始化每天的重组样本,标定每天的初始时刻序号为0;
22.逐一计算初始化后的重组样本t时刻与t-1时刻的实测风速差与实测功率差的乘积:若实测风速差与实测功率差的乘积大于0,则t时刻的序号为t-1加1;若实测风速差与实测功率差的乘积小于0,则t时刻的序号为t-1减1;若实测风速差与实测功率差的乘积等于0,则t时刻的序号为t-1;
23.逐一建立对应每天重组样本的序号列表,序号列表中各元素为对应时刻的序号。
24.进一步地,所述建立与序号列表对应的状态列表,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段包括(1)式,具体如下:
25.dp[i]=max(dp[i],dp[j] 1)
ꢀꢀꢀ
(1)
[0026]
其中,dp为状态列表,dp[i]为状态列表的索引i对应的子序列,记录序号列表0-i索引中最长递减序号列表片段,dp[i]的值为序号列表0-i索引中最长递减序号列表长度,dp[j]为状态列表的索引j对应的子序列,记录序号列表0-j索引中递减序号列表片段,dp[j]的值为序号列表0-j索引中递减序号列表长度,j∈[0,i),i=len(a),a为序号列表。
[0027]
进一步地,状态转移方程包括下式:
[0028]
dichotomy[b]=max(dichotomy[b],a[b])forbin[0,i)
[0029]
其中,b=len(dichotomy),dichotomy为排序列表,排序列表为dichotomy[0
…
len(a)]。
[0030]
进一步地,利用二分法求解各排序列表中最长递减子序列长度包括以下步骤:使用状态转移方程计算每个dichotomy[b],并根据预设规则更新长度为[1,b]的子序列尾部元素值,获得全局最长递减子序列的长度len(dichotomy)。
[0031]
进一步地,所述根据预设规则更新长度为[1,b]的子序列尾部元素值包括:
[0032]
若区间[0,len(dichotomy))中存在dichotomy[b]<a[k],则将第一个满足该条件的dichotomy[b]的值替换为a[k];
[0033]
若区间[0,len(dichotomy))中不存在dichotomy[b]<a[k],则将a[k]排在所有子序列之后,即排序列表长度将加1;
[0034]
其中,k∈[0,len(a))。
[0035]
另一方面,本发明提供一种结合动态规划与二分法的新型风电数据清洗系统,包括以下模块:
[0036]
样本获取模块,用于获取风电数据样本,风电数据包括历史实测风速数据和实测功率数据;
[0037]
样本预处理模块,用于预处理风电数据样本,获得对应每天的序号列表,序号列表
记录表征各时刻风速和功率变化趋势关系的序号;
[0038]
状态列表模块,用于建立与序号列表对应的状态列表,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段;
[0039]
排序列表模块,用于建立与状态列表对应的排序列表,排序列表中各元素记录严格递减的状态列表各子序列的最大尾部元素值;
[0040]
求解模块,用于通过动态规划构建状态转移方程,利用二分法求解各排序列表中最长递减子序列长度;
[0041]
删除异常模块,用于根据预设的最短递减子序列长度,删除最短递减子序列长度与最长递减子序列长度之间范围所对应的风电数据异常点。
[0042]
与现有技术相比,本发明所达到的有益效果:
[0043]
本发明通过使用一阶差分运算构建风速与功率差的乘积的序号列表,依次构建对应的状态列表和排序列表,使用动态规划构建状态转移方程,并使用二分法将状态转移方程历遍排序列表求解最长递减子序列长度,以删除对应的风电数据异常点;本发明优化求解过程中的时间复杂度,将整个时间复杂度从o(n2)降至o(nlogn),从而达到快速删除风速与实测功率相反情况的异常风电数据。
附图说明
[0044]
图1所示为本发明结合动态规划与二分法的新型风电数据清洗方法的一种实施例流程图;
[0045]
图2所示为本发明2021-07-24 20:00:00到2021-07-24 22:30:00时间段的实测风速-实测功率-异常实测功率的曲线对比图;
[0046]
图3所示为本发明2021-09-21 11:10:00到2021-09-21 16:10:00时间段的实测风速-实测功率-异常实测功率的曲线对比图。
具体实施方式
[0047]
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0048]
实施例1
[0049]
本实施例提供一种结合动态规划与二分法的新型风电数据清洗方法,参考图1,包括以下步骤:
[0050]
获取风电数据样本,风电数据包括历史实测风速数据和实测功率数据;
[0051]
预处理风电数据样本,获得对应每天的序号列表,序号列表记录表征各时刻风速和功率变化趋势关系的序号;
[0052]
建立与序号列表对应的状态列表,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段;
[0053]
建立与状态列表对应的排序列表,排序列表中各元素记录严格递减的状态列表各子序列的最大尾部元素值;
[0054]
通过动态规划构建状态转移方程,利用二分法求解各排序列表中最长递减子序列长度;
[0055]
根据预设的最短递减子序列长度,删除最短递减子序列长度与最长递减子序列长度之间范围所对应的风电数据异常点。
[0056]
本发明通过使用一阶差分运算构建风速与功率差的乘积的序号列表,依次构建对应的状态列表和排序列表,使用动态规划构建状态转移方程,并使用二分法将状态转移方程历遍排序列表求解最长递减子序列长度,以删除对应的风电数据异常点;本发明优化求解过程中的时间复杂度,将整个时间复杂度从o(n2)降至o(nlogn),从而达到快速删除风速与实测功率相反情况的异常风电数据,具有实际的工程价值。
[0057]
实施例2
[0058]
在实施例1的基础上,本发明具体介绍了预处理风电数据样本的方法、状态列表、状态转移方程以及利用二分法求解各排序列表中最长递减子序列长度的方法。
[0059]
(一)预处理风电数据样本
[0060]
预处理风电数据样本,获得对应每天的序号列表,序号列表记录各时刻风速和功率变化趋势关系包括以下步骤:
[0061]
以天为单位分割风电数据样本,并将每天的风电数据重组,获得重组样本;
[0062]
逐一初始化每天的重组样本,标定每天的初始时刻序号为0;
[0063]
逐一计算初始化后的重组样本t时刻与t-1时刻的实测风速差与实测功率差的乘积:若实测风速差与实测功率差的乘积大于0,则t时刻的序号为t-1加1;若实测风速差与实测功率差的乘积小于0,则t时刻的序号为t-1减1;若实测风速差与实测功率差的乘积等于0,则t时刻的序号为t-1;
[0064]
逐一建立对应每天重组样本的序号列表,序号列表中各元素为对应时刻的序号。
[0065]
(二)状态列表
[0066]
建立与序号列表对应的状态列表dp,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段包括(1)式,具体如下:
[0067]
dp[i]=max(dp[i],dp[j] 1)
ꢀꢀꢀ
(1)
[0068]
其中,dp[i]为状态列表的索引i对应的子序列,记录序号列表0-i索引中最长递减序号列表片段,dp[i]的值为序号列表0-i索引中最长递减序号列表长度,dp[j]为状态列表的索引j对应的子序列,记录序号列表0-j索引中递减序号列表片段,dp[j]的值为序号列表0-j索引中递减序号列表长度,j∈[0,i),i=len(a),a为序号列表。
[0069]
(三)状态转移方程
[0070]
状态转移方程包括下式:
[0071]
dichotomy[b]=max(dichotomy[b],a[b])forb in[0,i)
[0072]
其中,b=len(dichotomy),dichotomy为排序列表,排序列表为dichotomy[0
…
len(a)]。
[0073]
(四)利用二分法求解各排序列表中最长递减子序列长度
[0074]
利用二分法求解各排序列表中最长递减子序列长度包括以下步骤:
[0075]
使用状态转移方程计算每个dichotomy[b],并根据预设规则更新长度为[1,b]的子序列尾部元素值,获得全局最长递减子序列的长度len(dichotomy)。
[0076]
本实施例应用时,根据预设规则更新长度为[1,b]的子序列尾部元素值包括:
[0077]
若区间[0,len(dichotomy))中存在dichotomy[b]<a[k],则将第一个满足该条件
的dichotomy[b]的值替换为a[k],因为更大的a[k]后更可能接一个比它小的数字;
[0078]
若区间[0,len(dichotomy))中不存在dichotomy[b]<a[k],则将a[k]排在所有子序列之后,即排序列表长度将加1;
[0079]
其中,k∈[0,len(a))。
[0080]
实施例3
[0081]
在实施例1或2的基础上,本实施例提供结合动态规划与二分法的某一时间片段的风电数据清洗方法,包括以下步骤:
[0082]
s11收集各平地风电场站某一时间片段的历史实测风速数据和实测功率数据。
[0083]
其中,实测风速列表为ws:[2,5,4,7,10,9,6,3,5,6,1,7,3,8,5,2],单位为m/s;
[0084]
对应的实测功率列表为p:[16,11,15,10,9,50,55,57,30,29,5,60,30,20,22,25],单位为mw;
[0085]
s12分别对ws列表与p列表进行一阶差分运算,可得到:ws_1列表和p_1列表,具体如下:
[0086]
ws_1:[3,-1,3,3,-1,-3,-3,2,1,-5,6,-4,5,-3,-3],单位为m/s;
[0087]
p_1:[-5,4,-5,-1,41,5,2,-27,-1,-24,55,-30,-10,2,3],单位为mw。
[0088]
s13将ws_1列表和p_1列表相乘,可得到wsp列表,具体如下:
[0089]
wsp:[-15,-4,-15,-3,-41,-15,-6,-54,-1,120,330,120,-50,-6,-9]。
[0090]
s14根据wsp列表可知,若t时刻差分后的乘积为负数,则代表t时刻,风速与功率趋势相反,由风能功率公式如下:
[0091][0092]
其中,p代表风功率,ρ代表空气密度,γ代表扫风面积,v代表风速;
[0093]
则功率与风速成正比关系,当风速与功率趋势相反时,属于一种趋势相反的异常点。
[0094]
根据wsp列表,判断ws列表与p列表进行一阶差分后的乘积与0的关系,并创建序号列表a,可以得到序号列表a:[-1,-2,-3,-4,-5,-6,-7,-8,-9,-8,-7,-6,-7,-8,-9];结合wsp列表与序号列表a可以看出,序号列表a中递减的片段则为风速和功率趋势相反的片段,即为异常序列。
[0095]
s21求解序号列表a对应的状态列表dp。
[0096]
各状态列表包括:状态列表中索引j的值代表到达当前序号列表索引j之前的序号列表递减序列的长度;
[0097]
状态列表dp为dp[1
…
len(a)],初始化dp[1
…
len(a)]所有元素为1,含义为每个元素都至少可以单独成为子序列,此时长度为1;
[0098]
在每轮计算新dp[i]时,当j∈[0,i),i=len(a),遍历[0,i)列表区间时,并且判断如下:
[0099]
当a[i]<a[j]时,即a[j],a[i]是严格递减的,记为严格递减子序列;
[0100]
当a[i]≥a[j]时,即a[j],a[i]是非递减的,此情况下递减子序列不成立,跳过;
[0101]
综上,可得状态列表dp:[1,2,3,4,5,6,7,8,9,8,7,6,7,8,9]
[0102]
其中,dp[0]代表序号列表a中a[0]组成的子序列中最长递减序列的长度,因为a
[0]=-1,且a[0]组成的子序列中最长递减序列的长度为a[0]本身长度,即dp[0]=1;
[0103]
dp[6]代表序号列表a中a[0]-a[6]组成的子序列中最长递减序列的长度,因为a[6]=-7,且a[0]-a[6]组成的子序列中最长递减序列的长度为a[0]到a[6]这段子序列的长度,即dp[6]=7;
[0104]
dp[13]代表序号列表a中a[0]-a[13]组成的子序列中最长递减序列的长度,因为a[13]=-8<a[6]=-7,且a[7],a[8],a[9]均小于等于a[13],因此,由dp[i]=max(dp[i],dp[j] 1),j属于[0,i)可知dp[13]=dp[6] 1,即dp[13]=8。
[0105]
s31求解状态列表dp对应的排序列表dichotomy
[0106]
设置排序列表dichotomy[0
…
len(a)],其中dichotomy[b]的值代表状态列表dp中长度为b 1子序列的尾部元素值,即代表该时间片段的递减子序列中最后一个元素的值;
[0107]
s41构建状态转移方程
[0108]
状态转移方程包括:dichotomy[b]=max(dichotomy[b],a[b])forb in[0,i)
[0109]
其中,b=len(dichotomy)。
[0110]
s42利用二分法求解各排序列表中最长递减子序列长度
[0111]
在状态转移方程遍历计算每个dichotomy[j]时,需要不断更新长度为[1,j]的子序列尾部元素值,始终保持每个尾部元素值最大,这样就保证了dichotomy列表是严格递减的,所以,每次遍历序号列表a,就可以通过二分法使用状态转移方程计算每个dichotomy[b]时,以更新排序列表dichotomy,将原算法时间复杂度o(n2)降至o(nlogn),更新步骤具体如下:
[0112]
若区间[0,len(dichotomy))中存在dichotomy[b]<a[k],则将第一个满足该条件的dichotomy[b]的值替换为a[k],因为更大的a[k]后更可能接一个比它小的数字;
[0113]
若区间[0,len(dichotomy))中不存在dichotomy[b]<a[k],则将a[k]排在所有子序列之后,即排序列表长度将加1;
[0114]
其中,k∈[0,len(a))。
[0115]
则可以求得最长递减子序列的长度maxres,即len(dichotomy)。
[0116]
本实施例应用时,排序列表dichotomy为[-1,-2,-3,-4,-5,-6,-7,-8,-9],
[0117]
其中dichotomy[4]为-5代表长度为5的子序列的尾部元素值为-5,即代表局部递减子序列[-1,-2,-3,-4,-5]中最后一个递减元素的值为-5。
[0118]
应用中,遍历a列表的时间复杂度为o(n),每次遍历a利用二分法更新dichotomy列表的时间复杂度为o(logn),所以整个时间复杂度为o(nlogn)。
[0119]
s5删除风电数据异常点
[0120]
根据预设的最短递减子序列长度minres,删除状态列表dp中与最短递减子序列长度minres和最长递减子序列长度maxres范围匹配的索引前的递增序列。
[0121]
应用中,参考图2和3可知:本技术在实测风速与实测功率趋势相反的时刻区间中,异常的实测功率序列得到了有效的删除;其中,2021-09-21 12:25:00时刻左右的实测功率曲线与实测风速曲线趋势虽然相同,但没有被误删,说明本技术的实用性和可靠性。
[0122]
实施例4
[0123]
本实施例提供一种结合动态规划与二分法的新型风电数据清洗系统,包括以下模块:
[0124]
样本获取模块,用于获取风电数据样本,风电数据包括历史实测风速数据和实测功率数据;
[0125]
样本预处理模块,用于预处理风电数据样本,获得对应每天的序号列表,序号列表记录表征各时刻风速和功率变化趋势关系的序号;
[0126]
状态列表模块,用于建立与序号列表对应的状态列表,状态列表包括多个子序列,各子序列记录序号列表中到达对应索引位置的最长递减序号列表片段;
[0127]
排序列表模块,用于建立与状态列表对应的排序列表,排序列表中各元素记录严格递减的状态列表各子序列的最大尾部元素值;
[0128]
求解模块,用于通过动态规划构建状态转移方程,利用二分法求解各排序列表中最长递减子序列长度;
[0129]
删除异常模块,用于根据预设的最短递减子序列长度,删除最短递减子序列长度与最长递减子序列长度之间范围所对应的风电数据异常点。
[0130]
上述各功能模块的具体功能实现参照实施例2或3方法中的相关内容。
[0131]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0132]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0133]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0134]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0135]
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
转载请注明原文地址:https://tc.8miu.com/read-1312.html