当前位置: 首页 > news >正文

电力负荷聚类分析:从数据到典型场景

主要内容: 光电+电负荷用有序聚类, 风电+电动汽车负荷用kmeans聚类 ① 画出光电、电负荷、风电、电动汽车负荷,根据趋势去判定, 让光电+电负荷用有序聚类,风电+电动汽车负荷用kmeans聚类 ②对光电有序聚类(分开),根据轮廓系数找出合适的断点向量 ③对电负荷有序聚类(分开),根据轮廓系数找出合适的断点向量 ④将②③的断点合并,取异,对密集的进行删减 ⑤利用④中的分割点,找出各个分区 ⑥将风电+电动汽车负荷(组合)合并为365*48,一次性带入kmeans中求解得到分区内(风电电动汽车负荷)的聚类图 ⑦将四个风光荷EV特征,各自在分区分组内取均值,得到典型日场景及频次 。

在电力系统研究中,对不同类型的负荷进行合理聚类分析,能为电力调度、能源规划等提供关键支持。今天咱们就来聊聊光电、电负荷、风电以及电动汽车负荷的聚类分析,分别运用有序聚类和 kmeans 聚类方法。

数据可视化与聚类方法判定

首先,我们得把光电、电负荷、风电和电动汽车负荷的数据画出来瞅瞅,从趋势中找灵感。以 Python 为例,用matplotlib库来绘图:

import matplotlib.pyplot as plt import numpy as np # 假设这里已经获取到了相应的数据,分别为pv_data(光电), eload_data(电负荷), wind_data(风电), evload_data(电动汽车负荷) time = np.arange(len(pv_data)) plt.figure(figsize=(12, 8)) plt.subplot(4, 1, 1) plt.plot(time, pv_data) plt.title('Photovoltaic Data') plt.subplot(4, 1, 2) plt.plot(time, eload_data) plt.title('Electric Load Data') plt.subplot(4, 1, 3) plt.plot(time, wind_data) plt.title('Wind Power Data') plt.subplot(4, 1, 4) plt.plot(time, evload_data) plt.title('EV Load Data') plt.tight_layout() plt.show()

通过观察这些图,我们发现光电和电负荷的数据分布特点适合用有序聚类,而风电和电动汽车负荷则更适合 kmeans 聚类。为啥呢?因为光电和电负荷的变化趋势相对更有顺序性,而风电和电动汽车负荷分布看起来更适合用 kmeans 这种基于距离划分的聚类方法。

光电有序聚类

接下来对光电进行有序聚类。这里我们要用到pyclust库(假设已安装),通过轮廓系数来找合适的断点向量。

from pyclust import orderedclust import numpy as np # 假设pv_data为一维的光电数据 pv_clusters = orderedclust(pv_data) # 计算轮廓系数,这里假设自定义了一个计算轮廓系数的函数silhouette_score silhouette_scores = [] for k in range(2, len(pv_clusters)): score = silhouette_score(pv_data, pv_clusters.labels_[:k]) silhouette_scores.append(score) optimal_k = np.argmax(silhouette_scores) + 2 optimal_breakpoints = pv_clusters.breakpoints_[:optimal_k]

在这段代码里,先使用orderedclust对光电数据进行初步聚类,然后循环计算不同聚类数下的轮廓系数,找到轮廓系数最大时对应的聚类数optimalk,进而得到合适的断点向量optimalbreakpoints

电负荷有序聚类

电负荷的有序聚类和光电类似。

# 假设eload_data为一维的电负荷数据 eload_clusters = orderedclust(eload_data) # 同样计算轮廓系数 silhouette_scores_eload = [] for k in range(2, len(eload_clusters)): score = silhouette_score(eload_data, eload_clusters.labels_[:k]) silhouette_scores_eload.append(score) optimal_k_eload = np.argmax(silhouette_scores_eload) + 2 optimal_breakpoints_eload = eload_clusters.breakpoints_[:optimal_k_eload]

这就得到了电负荷的合适断点向量。

断点合并与处理

把光电和电负荷得到的断点合并起来,然后取它们不同的部分,再对那些密集的断点进行删减。

all_breakpoints = list(set(optimal_breakpoints).union(set(optimal_breakpoints_eload))) unique_breakpoints = sorted(list(set(all_breakpoints))) # 假设这里有一个删减密集断点的函数reduce_dense_breakpoints reduced_breakpoints = reduce_dense_breakpoints(unique_breakpoints)

这里先通过集合操作合并并去重,然后调用自定义函数删减密集断点。

找出分区

利用处理后的分割点,找出各个分区。

partitions = [] prev = 0 for bp in reduced_breakpoints: partition = (prev, bp) partitions.append(partition) prev = bp

这样就得到了光电和电负荷的各个分区。

风电与电动汽车负荷 kmeans 聚类

把风电和电动汽车负荷数据合并成365*48的格式,然后用 kmeans 聚类求解聚类图。

from sklearn.cluster import KMeans import numpy as np # 假设wind_data和evload_data已经处理成合适的形状并合并 combined_data = np.concatenate((wind_data.reshape(-1, 1), evload_data.reshape(-1, 1)), axis = 1) kmeans = KMeans(n_clusters = 3, random_state = 0).fit(combined_data) cluster_labels = kmeans.labels_

这里用KMeans类进行聚类,设置聚类数为 3(可根据实际情况调整),得到聚类标签cluster_labels,也就得到了聚类图。

典型日场景及频次

最后,把四个风光荷 EV 特征,各自在分区分组内取均值,得到典型日场景及频次。

# 假设我们已经有了前面计算得到的分区partitions,以及所有数据pv_data, eload_data, wind_data, evload_data pv_mean_by_partition = [] eload_mean_by_partition = [] wind_mean_by_partition = [] evload_mean_by_partition = [] for part in partitions: start, end = part pv_mean = np.mean(pv_data[start:end]) eload_mean = np.mean(eload_data[start:end]) wind_mean = np.mean(wind_data[start:end]) evload_mean = np.mean(evload_data[start:end]) pv_mean_by_partition.append(pv_mean) eload_mean_by_partition.append(eload_mean) wind_mean_by_partition.append(wind_mean) evload_mean_by_partition.append(evload_mean) # 频次计算可以根据分区内数据量占总数据量的比例,假设总数据量为total_length pv_frequency = [len(pv_data[start:end]) / total_length for start, end in partitions] eload_frequency = [len(eload_data[start:end]) / total_length for start, end in partitions] wind_frequency = [len(wind_data[start:end]) / total_length for start, end in partitions] evload_frequency = [len(evload_data[start:end]) / total_length for start, end in partitions]

这样就得到了每个特征在不同分区内的均值,也就是典型日场景,以及对应的频次。

主要内容: 光电+电负荷用有序聚类, 风电+电动汽车负荷用kmeans聚类 ① 画出光电、电负荷、风电、电动汽车负荷,根据趋势去判定, 让光电+电负荷用有序聚类,风电+电动汽车负荷用kmeans聚类 ②对光电有序聚类(分开),根据轮廓系数找出合适的断点向量 ③对电负荷有序聚类(分开),根据轮廓系数找出合适的断点向量 ④将②③的断点合并,取异,对密集的进行删减 ⑤利用④中的分割点,找出各个分区 ⑥将风电+电动汽车负荷(组合)合并为365*48,一次性带入kmeans中求解得到分区内(风电电动汽车负荷)的聚类图 ⑦将四个风光荷EV特征,各自在分区分组内取均值,得到典型日场景及频次 。

通过这一系列操作,我们就完成了从原始数据到典型日场景及频次的挖掘,为电力系统的进一步分析提供了有力的数据基础。希望这篇文章能给大家在电力负荷聚类分析方面带来一些启发。

http://www.jsqmd.com/news/459296/

相关文章:

  • 基于PFC6.0的单轴拉伸实验:二维与三维探索及声发射振铃计数解析
  • 锂电池SOC估算:EKF估计SOC仿真与扩展卡尔曼滤波
  • 基于YOLOv8的钢材表面缺陷检测系统【附源码+可远程安装部署】
  • VC维与PAC学习:如何量化你的模型复杂度?
  • 用广义神经网络GRNN实现多特征输入单因变量输出的拟合预测
  • 【小龙虾】OpenClaw 3.8继续炸场!龙虾不睡觉,全球程序员连夜赶工
  • 基于MotorCAD的永磁电机退磁仿真及电流波形自定义探索
  • 车载以太网TC8测试实战:SOME/IP协议在SOA架构下的完整测试流程(含Vector工具链配置)
  • OEE提升15%的机械加工厂的数字化
  • RTKLIB实战:5分钟搞定标准单点定位(SPP)完整流程(附避坑指南)
  • 基于YOLOv8的花卉识别系统【附源码+可远程安装部署】
  • SecureCRT新手必看:10个高效命令让你远程操作飞起(附常用快捷键)
  • FastestDet:超越业界轻量级目标检测算法的五大特性
  • winform PictureBox 显示大图片带垂直滚动条
  • iReport 5.6.0实战:手把手教你用List组件搞定学生名单报表(附避坑指南)
  • 氚云 vs 宜搭:表单控件全对比,哪个更适合你的业务场景?
  • 基于RK3588J的AI检测设备实战解析
  • 为什么你的Ubuntu实时内核编译失败了?PREEMPT_RT补丁常见问题解析
  • 用Anki高效啃透华工通信原理:自制考点卡片模板分享(含HDB3编码/匹配滤波器真题)
  • 提示工程架构师实战:Agentic AI生态影响研究的样本选择策略
  • mfc140u.dll丢失的解决方法-mfc140u.dll文件下载
  • 【Python环境安装及配置】
  • Canny边缘检测避坑指南:为什么你的自适应阈值总失效?(Otsu优化方案)
  • FRCRN开源模型效果对比:vs RNNoise、Demucs、SepFormer客观指标
  • 企业如何快速搭建测绘地理信息保密管理体系?附全套制度模板
  • CodeLlama推理加速实战:用投机解码+分页KV-Cache让生成速度提升4倍
  • EPLAN工具栏精简指南:删除这4个冗余按钮让你的界面更高效
  • 华为eNSP模拟器实战:5步搞定跨部门VLAN互通(附完整配置命令)
  • STM32开发者必看:如何用OpenOCD和ST-Link实现一键烧录(附Makefile配置)
  • 微信小游戏开发避坑指南:Unity移动端输入框从挂载到优化的全流程