以下方法用于实现我们在NILMD系统中的研究。
2.1事件检测算法
事件检测[11]和负载特性是相辅相成的。本文取变化值Δ第页特征值的第页将有功功率作为事件检测的判据,并根据电气设备和运行参数设置合理的功率变化阈值。然而,一些电气设备在启动时功率峰值较大(电机启动电流高于额定电流)。尽管这不会影响确定事件发生时间的准确性,但可能会导致电气设备稳态功率的不准确变化。不同设备的瞬态过程是长到短的,因此有必要结合一定时间范围内的数据来确定是否发生了事件。由于电能质量(如电压降),有功功率会突然变化,很容易做出错误判断。在设备组同时包含低功率和高功率设备的情况下,如果阈值设置太大,则高功率设备将覆盖低功率设备,如果阈值设定太小,则检测到的事件数将成倍增加。因此,阈值设置必须考虑设备组中包含的设备的功率水平和稳态功率的变化值。本文以时间为横轴,功率值为纵轴,绘制了时间功率图,通过观察该图并计算电气设备功率值的百分比来确定功率阈值。以问题A附录3中的设备组4、5和6为例,确定功率阈值,如表所示1.
事件检测算法的步骤如下。
步骤1。计算差值\(\增量p_{t}\)当前有功功率时间与前一时间之间。如果\(\Delta p_{t}\ge p_{1}\),转至步骤3,否则进入步骤2。
第2步。读取下一次的时间数据并返回步骤1。
步骤3。事件持续时间D类在原始基础上增加1秒,然后转至步骤4。
步骤4。读取下一次数据并计算得出\(\增量p_{t+D}=p_{t+D}-p_{t}\).如果\(\Delta p_{t+D}\ge p_{1}\),转至步骤5,否则转至步骤6。
步骤5。读取下一次的时间数据并返回步骤3。
步骤6。根据事件持续时间D类,我们可以得到事件的结束时间是\(t+D\).计算事件计算前后有功功率的变化值。如果\(\Delta p_{t+D}\ge p_{2}\),转至步骤7,否则将判断没有发生任何事件,返回步骤2。
第7步。输出结果。根据\(\增量p_{t+D}\),我们可以判断此事件是功率增加事件还是功率减少事件。如果结果为正,则系统的有功功率增加。我们判断这是一个上升事件,通常是由开始操作或电气设备状态变化引起的。如果结果为负,则表明系统的有功功率降低。判断为坠落事件,这通常是由于电气设备被切断时运行状态的变化引起的。我们考虑到时间\(t+D\)作为活动的结束,时间作为下一个活动的开始。为了更客观地反映功率的变化,我们在时间之前五秒钟内采集了有功功率数据t吨取算术平均值作为事件发生前系统的有功功率。类似地,五秒钟后的有功功率数据\(t+D\)取时间,算术平均值表示事件发生后系统的有功功率。因此,我们得到了两者之间的差异,即所需的有功功率变化\(\Δp_{t+D}\).
以设备组4为例,我们使用事件检测算法来查找设备运行状态发生变化的时刻,如图所示1.
通过设置合理的功率变化阈值,事件检测算法可以识别出有功功率变化值较大的负载事件,并确定事件的发生点。因此,事件检测算法有助于分析各个电气设备的运行状态。本文利用事件检测算法对设备组的运行状态进行分割,然后利用决策树算法对电气设备进行识别。
2.2设备组成识别的负荷决策树算法
负载决策树算法类似于负载分解算法。负载识别算法还将提取的未知负载特征参数与数据库中的已知负载特征参数进行比较,然后找到与提取的负载特征参数最接近的已知负载作为识别结果。因此,我们需要在负载数据库的基础上进行决策树负载识别。本文中,负载决策树算法[12——14]基于三个负载数据库(设备不同状态下的有功功率和无功功率、谐波含量幅值数据库和负载的V-I轨迹)。基于决策树的识别算法需要的计算量相对较少,因此可以在一定程度上避免使用低功耗负载特征进行识别。这种数据划分可以减少计算复杂性和时间,在处理多标签分类问题时,它被认为是一种更好的算法。现在我们将决策树算法引入到电气设备的负荷识别中。决策树负载识别算法的流程图如图所示2.
负载识别的决策树算法步骤如下。
步骤1。事件检测算法确定是否发生负载变化事件,如果不发生,则进入步骤2,否则进入步骤3。
第2步。读取下一次的时间数据并返回步骤1。
步骤3。确定发生事件的设备是否为纯电阻设备。如果是纯电阻式电气设备,则应遵循步骤4,否则,请转至步骤5。
步骤4。与纯电阻电气设备功率数据库进行比较。由于事件设备是纯电阻式的,因此只需要比较有功功率。
步骤5。输出具有最相似有功功率的设备作为识别结果。
步骤6。与非纯电阻设备功率数据库进行比较。
第7步。确定步骤6中是否有许多类似的设备。如果没有,请转至步骤8;否则,进入步骤9。
第8步。输出步骤6中具有最相似有功功率的设备作为识别结果。
第9步。提取了事件负荷的V-I轨迹,并与谐波含量数据库进行了比较。
第10步。输出步骤9中谐波含量最相似的设备作为识别结果。
步骤4、步骤6和步骤9中的匹配基于欧氏距离。事件荷载的特征值被视为欧几里德空间,数据库中的特征值被视为空间中的一个点。点\(x=(x{1},x{2},\点,x{n})\)和\(y=(y{1},y{2},\点,y{n})\)分别表示提取的特征值和数据库中的特征值,我们使用(1)表示两点之间的近似程度。值越小,近似度越高
$$d(x,y)=\frac{\sqrt{\sum_{i=1}^{n}{(x_{i} -年_{i} )}^{2}}}{\sqrt{x_{1}^{2]+\cdots+x_{p} n个^{2}}}. $$
(1)
在步骤7中判断匹配结果是否接近意味着使用(1)在步骤6中。如果最小结果小于δ(δ足够小),它被认为是接近的。然后,步骤9使用谐波含量振幅进行识别。
可以看出,如果设备是一个近似的纯电阻,那么识别其最有效的负载特征是V-I轨迹。负载决策树算法可以首先确定负载是否为纯电阻,只需与数据库中的电阻负载进行比较,从而消除了不必要的比较。在将识别算法提取的特征参数与数据库进行比较的过程中,如果情况与许多已知负载相似,则无法准确识别未知负载。此时,可以通过其他负载特性进一步识别未知负载。虽然之前的载荷特征不足以得到最终正确的识别结果,但它可以减少未来特征参数相似性比较的范围。
2.3设备状态识别0–1优化模型的建立
根据数据库的负荷特性计算出所有设备的负荷特性矩阵,其负荷特性矩阵如下所示
$$\varPsi=\begin{bmatrix}\varPsi _{11}&\ldots&\varPsic _{1N}\\vdots&\ ldots&\vdots\\varPsi _{M1}&\ltots&\\varPsi_{MN}\end{bmatricx}$$
(2)
哪里,\(N=\sum_{k=1}^{l}{N_{k}}\),\(N_{k}\)是设备状态的编号k个、和我是设备的数量。对于具有多个工作状态的电气设备,每个工作状态都被视为一个电气设备,即:,N个将大于电气设备的实际数量。M(M)是识别算法中使用的负载特性的数量
$$\varPsi_{ji}=[f_{1},f_{2},\dots,f_}n}]^{\mathrm{T}}$$
(3)
哪里,\(\varPsi_{ji}\)是负载特性的负载特性矢量j个设备数量我,\(f{i}\)是数据库中的负荷特性数据,n个是负载特性的编号j个.
提取特征向量\(Y'\)根据待识别的测量数据
$$\开始{对齐}&Y'=\bigl[Y'{1},Y'{2},\点,Y'_{M}\bigr]^{\mathrm{T}},\end{aligned}$$
(4)
$$\begin{aligned}&y’_{j}=[f_{1},f_{2},\dots,f_{n}]^{\mathrm{T}}。\结束{对齐}$$
(5)
哪里,\(y'_{j}\)是负载特性的负载特性矢量j个从测量数据中提取。
状态向量
$$X=[X{1},X{2},\点,X{N}]^{\mathrm{T}}$$
(6)
哪里,X是负载的状态向量(0表示不在此状态,1表示在此状态)。
通过以上基于决策树的无创负载识别,我们可以知道状态向量X当设备状态发生变化时。然后是负载特征向量Y(Y)可以从负载特性数据库中了解该设备的
$$Y=[Y_{1},Y_{2},\点,Y_}M}]^{\mathrm{T}}=\varPsi X$$
(7)
在哪里?\(y_{j}\)是负载特性的负载特性矢量j个从负荷特征数据库中提取。
我们可以得到\(Y'\)和Y(Y)如下所示
$$Y'=Y+\varepsilon=\varPsi X+\varεsilon$$
(8)
在事件检测算法检测到事件发生后,我们提取特征向量Y(Y)得到认可。根据建立的负荷特性数据库,状态向量X已解决以将误差降至最低ε。其中,\(Y'\)是冗余测量。因此,不可能直接基于(8)(如果不考虑错误,则无法解决(8)因为方程的数量超过了未知的数量),但近似解为(8)可以找到。采用最小二乘法将冗余方程转化为最小值问题。
$$\min J={\varepsilon}^{\mathrm{T}}\varepsilon$$
(9)
因此,问题是(9)转化为0–1二次规划问题,其数学模型如所示(10).
$$\开始{对齐}&\min J={Y'}^{\mathrm{T}}{Y'{-2{Y'}^{\mathrm{T}}\varPsi X+\frac{1}{2}\bigl(X\varPsi^{\methrm{T}}2\varPsi X \bigr)\\&\quad\textstyle\begin{cases}\mbox{s.T.}\sum_{i=1}^{N_{k}}X_{i}=1,\\四X_{i}=\\{0,1\}。\结束{cases}\displaystyle\end{aligned}$$
(10)
根据线性代数的相关知识,可以证明\({\varPsi}^{\mathrm{T}}2\varPsi\)是正定(或半正定)矩阵。可以看出,目标函数是严格凸函数(或凸函数),可行域也是凸集。所以我们可以得到编程问题(10)是一个凸规划问题。根据非线性规划问题中的凸规划理论(10)具有全局最优解。
问题(10)是一个离散问题。解决离散问题的大多数传统方法是组合算法,例如隐式枚举和穷尽法虽然这种算法可以准确地找到问题的全局最优解,但其计算成本随着问题规模的增加而增加。另一个是离散的启发式算法,例如遗传算法。这种算法最大的缺点是不能很好地处理约束,并且容易过早收敛。然而,在连续法中不存在这样的问题,因此将上述问题转化为连续法来解决。其连续性约束的等效模型如所示(11).
$$开始{对齐}&\min J={Y'}^{\mathrm{T}}{Y'{-2-Y'}^{\mathrm{T}}\varPsi X+\frac{1}{2}\bigl(X\varPsi^{\methrm{T}}2\varPsi X \bigr)。\\&\quad\textstyle\begin{cases}\mbox{s.t.}\sum_{i=1}^{N_{k}}x_{i}=1,k=1,2,\点,l,\\quad\sum_{i=1}^{N}(x_{i} -x个_{i} ^{2})=0。\结束{cases}\displaystyle\end{aligned}$$
(11)
2.4设备状态识别的0-1规划模型粒子群优化算法
粒子群优化(PSO)是Eberhart和Kennedy提出的一种进化计算技术[15]. 它起源于对鸟类捕食行为的研究。与遗传算法类似,PSO是一种迭代优化工具[16,17].
假设我有我粒子群中的每个粒子都是我维度的\(R_{l}\)不同的人有不同的地位\(x=(x{1},x{2},\点,x{l})\)对应不同的个体适应度函数值\(F_{k}\)与目标函数值相关。具体步骤如下。
步骤1。(初始化)每个负载的状态向量被视为一个总体。人口规模Ñ,学习系数\(c{1}\)和认知系数\(c{2}\)已确定。我们将每个载荷视为一个粒子我负载为\(x{i}\)速度矢量是\(v{i}\),\(i=1,2,\点,N).的状态向量N个荷载随机生成为初始总体\(X(0)\).设置终止条件。让\(t=0).
第2步。(个人评估)计算最佳适应度\(x{pj}(t)\)和全局最优适应度\(x{gj}(t)\)状态向量中每个个体的\(X(t)\)如果满足终止条件,则输出当前最佳值,否则返回步骤3。
步骤3。(更新速度和位置)使用(12)和(13)更新每个负载的速度和位置。
$$\开始{aligned}&v{ij}(t+1)=v{ij}(t)+c_{1} 第页_{1} (t)\bigl(x{pj}(t)-x{ij}_{2} 第页_{2} (t)\bigl(x{gj}(t)-x{ij}$$
(12)
$$\begin{aligned}&x_{ij}(t+1)=x_{ij}(t)+v_{ij}(t+1)。\结束{对齐}$$
(13)
哪里,\(v{ij}(t)\)是我在更新之前加载,\(v{ij}(t+1)\)是我更新后加载,\(x{pj}(t)\)是个人最优,\(x{gj}(t)\)是全局最优的,并且\(x{ij}(t)\)是我在更新之前加载。
步骤4。(更新状态向量)更新每个负载的最佳位置和全局最佳位置,并更新总体。
步骤5。(终止验证)如果满足终止标准,输出中具有最大适合度的个人\(X(t+1)\)作为最优解,则终止计算,否则\(t=t+1)并返回步骤2。