论文阅读-Non-intrusive load identification using reconstructed voltage–current images

Publisher: IEEE OPEN ACCESS

Date: MAY 2021

MOTIVATION OF READING: 在基于VI轨迹的方法中,不同的设备可能具有相同的轨迹


1. Overview 

Probelm statement: The identification of resistive appliances that have similar features in a power grid is still a major problem.

Methodology: the reconstructed image of a voltage-current (VI) trajectory is used as input
data for a convolutional neural network (CNN) to classify the appliances.

Validation: PLAID and IDOUC dataset. 

2. Relative Work

Liang et.al. [16] divide household appliances into 7 basic types, purely resistive load, reactive load, load without power factor correction, load with power factor correction, complex structure load, and linear load. The current trajectories of electric appliances of the same type are similar.

D. Liang et.al. proposed a method of constructing VI trajectory mapping by voltage and current data that extracted from the same single cycle, to identify different load types which is called binary VI trajectory mapping. 

This use of voltage and current cycle data to establish spatial relationships has a good load characteristic description ability. When the sampling rate of the electrical signal is high, and the picture used to generate the V-I trajectory mapping is small, it is easy to cause the loss of the high sampling rate data information details, and even cause the loss of some effective data features.

In Fig. 3, the current trajectories of waveform1 and waveform 2 are different. However, theirs binary VI trajectory mappings are the same. In Fig. 4, the peak current of waveform 3 is
about 22A, and the peak current of waveform 4 is about 6A.

3. Reconstruction Process

The specific construction process of the reconstructed VI trajectory graph is as follows:

1. The original voltage V and current I are measured when the appliance is in a steady-state and is active for a certain duration;

2. Several cycles for the voltage and the current are extracted individually according to the following condition: v(k) * v(k-1) < 0 U v(k-1) < 0;

3. The VI image is built;

4. the obtained VI image is then reconstructed by setting random thresholds for both the voltage and current using the equations below: (不是很看得懂)

5. The reconstructed VI image should be normalized such that [V, I ] between -1 to 1.

Original VI image:

Reconstructed VI images:

4. Threshold Optimization Based on PSO

An essential process for appliance identification is to set an optimal thresholds. The differences among the appliances can then be amplified. In this study, the particle swarm optimization (PSO) is used to search the optimal values of voltage and current.

5. Classification model based on CNN

6. Experiment and Results

Two datasets called PLAID and OUCSEI. PLAID are used in this study to verify the proposed method.

### 非侵入式负载监控(NILM)的Python和MATLAB代码实现 #### Python 实现 对于非侵入式负载监控(NILM),可以利用开源工具包 `NILMTK` 进行快速开发。以下是基于 `NILMTK` 的简单示例代码: ```python import nilmtk from nilmtk import DataSet, MeterGroup from nilmtk.disaggregate import CombinatorialOptimisation # 加载数据集 redd = DataSet('REDD.h5') # 设置电表组 elec = redd.buildings[1].elec # 使用组合优化算法进行负荷分解 co = CombinatorialOptimisation() co.train(elec.submeters(), sample_period=1) # 测试阶段 disag_filename = 'disag-out.h5' output = DataSet(disag_filename) co.disaggregate(elec.mains(), output.datastore, sample_period=1) ``` 上述代码展示了如何加载数据集、设置电表组,并使用组合优化算法完成负荷分解[^1]。 此外,还可以尝试更先进的深度学习方法,例如卷积神经网络(CNN)。以下是一个简单的 CNN 架构实现: ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense def build_cnn_model(input_shape): model = Sequential([ Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=input_shape), MaxPooling1D(pool_size=2), Flatten(), Dense(64, activation='relu'), Dense(1, activation='linear') # 输出层 ]) model.compile(optimizer='adam', loss='mse') return model input_shape = (None, 99) # 假设输入长度为99 model = build_cnn_model(input_shape) model.summary() ``` 此代码片段定义了一个基本的 CNN 模型结构,适用于处理时间序列数据的任务,如 NILM 中的能量分解[^4]。 --- #### MATLAB 实现 虽然大多数 NILM 工具箱是基于 Python 开发的,但在 MATLAB 中也可以实现类似的逻辑。以下是一个简单的线性回归模型作为起点: ```matlab % 数据预处理 load('power_data.mat'); % 假设有文件 power_data.mat 存储了功率数据 X = data(:, 1:end-1); % 输入特征 y = data(:, end); % 目标变量 % 训练线性回归模型 mdl = fitlm(X, y); % 显示模型系数 disp(mdl.Coefficients); ``` 对于更复杂的模型,可以借助 MATLAB 的深度学习工具箱构建类似于 TensorFlow/Keras 的 CNN 或 RNN 结构。例如: ```matlab layers = [ sequenceInputLayer([1]) convolution1dLayer(3, 32, 'Padding', 'same') reluLayer maxPooling1dLayer(2,'Stride',2) fullyConnectedLayer(64) reluLayer fullyConnectedLayer(1) regressionLayer]; options = trainingOptions('sgdm', ... 'MaxEpochs', 10, ... 'MiniBatchSize', 128, ... 'Plots', 'training-progress'); net = trainNetwork(XTrain, YTrain, layers, options); ``` 以上代码展示了一个基础的一维卷积神经网络架构,适合用于时间序列分析中的 NILM 应用[^5]。 --- #### 注意事项 在实际应用中,需要特别关注以下几个方面: - **数据预处理**:包括缺失值填充、标准化等操作。 - **模型选择**:根据具体应用场景选择合适的模型,例如传统机器学习方法或深度学习方法。 - **评估指标**:常用的评价指标有均方误差(MSE)、平均绝对误差(MAE)以及自定义的事件检测精度等。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值