👨🎓个人主页
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
本文介绍了改进的迭代自组织数据分析技术算法(m-ISODATA),这是一种无监督聚类算法,用于捕获电力系统中的代表性场景。有两个应用示例可用:考虑风和负载可变性的概率最优潮流;以及发电扩展规划问题,考虑具有11维数据集的风能 - 太阳能 - 热力系统,用于表示风能,太阳能和负载的变化。
在电力系统的研究中,尤其是针对风电的生成与削减分析,无监督聚类算法扮演着重要角色,它们能够帮助研究人员从大量的风速、风向等气象数据中识别出不同的风能场景,进而分析这些场景对电力系统运行稳定性、调度策略及能源优化的影响。以下是三种常用的无监督聚类算法——m-ISODATA、k-means、层次聚类(Hierarchical Agglomerative Clustering, HAC)——在风场景生成与削减研究中的应用概述。
无监督聚类算法在电力系统风场景生成与削减中的应用分析
一、风场景生成与削减的定义及研究目标
风场景生成与削减是电力系统中处理风电波动性和不确定性的关键技术。其目标是通过生成具有代表性的场景集合,近似描述风电功率的概率分布,并在此基础上通过削减冗余场景,降低后续优化问题(如经济调度、机组组合)的计算复杂度。
- 场景生成:利用历史数据或概率模型(如Copula函数、蒙特卡洛模拟)生成大量风电功率序列,覆盖不同天气条件、季节特性及极端事件。
- 场景削减:通过聚类或概率距离优化,筛选出少量典型场景,保留原始数据的统计特征(如均值、方差、时间相关性),同时减少计算负担。
- 评价指标:包括轮廓系数(评估簇内紧密度)、戴维森堡丁指数(DBI,衡量聚类质量)、概率距离(如Kantorovich距离)以及计算效率(时间与资源消耗)。
二、无监督聚类算法原理与特点
1. m-ISODATA算法
- 基本原理:m-ISODATA是传统ISODATA的改进版本,结合了k-means的迭代优化与动态分裂合并机制。其核心步骤包括:
- 初始化聚类中心,通过欧氏距离分配样本;
- 根据阈值参数(如最小样本数θₙ、最大标准差θₛ)分裂过大的簇或合并距离过近的簇;
- 迭代调整直至收敛。
- 特点:
- 动态类别数:无需预设聚类数量,适用于风电数据的高维性和非均匀分布。
- 鲁棒性:通过合并/分裂操作减少噪声和异常值影响,提高对复杂数据模式的适应性。
- 参数敏感性:需设置7个初始参数(如期望聚类数K、合并对数L),优化需多次实验。
2. k-means算法
- 基本原理:
- 随机选择k个初始质心;
- 计算样本到质心的距离并分配簇;
- 更新质心为簇内均值,迭代至收敛。
- 特点:
- 简单高效:计算复杂度低(O(n)),适合大规模数据集。
- 需预设k值:依赖先验知识或交叉验证,可能陷入局部最优。
- 改进方法:K-means++优化初始质心选择,Mini Batch K-means提升计算效率。
3. 层次聚类(HAC)
- 基本原理:自底向上合并最相似簇,形成树状结构(Dendrogram)。常用链接准则包括:
- 单链接(最小距离)、全链接(最大距离)、Ward法(最小化簇内方差)。
- 特点:
- 无需预设k值:通过剪切树状图选择合适簇数,适合探索数据层次结构。
- 计算复杂度高:O(n²)时间复杂度,难以处理超大规模数据。
- 可解释性强:树状图直观展示数据聚合过程,适用于多尺度风场景分析。
三、算法在风场景生成与削减中的应用案例
1. m-ISODATA的应用
- 案例1:在11维风能-太阳能-负荷联合系统中,m-ISODATA自动生成动态场景类别,捕捉多维数据相关性,用于发电扩展规划(PEG)中的长期容量优化。
- 案例2:结合概率最优潮流(FPOP)模型,生成典型风场景以评估电网运行风险,相比k-means减少人工干预,提升场景覆盖度。
2. k-means的应用
- 案例1:基于改进k-means(CS-GWO算法优化初始质心),将初始场景削减至4.46%错误率的典型场景,显著降低电力调度模型复杂度。
- 案例2:在日间调度中,利用k-means提取风电出力典型曲线,结合储能系统优化微电网运行成本,提升经济性31%。
3. HAC的应用
- 案例:通过Ward链接法构建风场景层次结构,识别不同时间尺度(小时级至季节级)的风电波动模式,辅助电网韧性规划。
四、算法性能对比与选择建议
指标 | m-ISODATA | k-means | HAC |
---|---|---|---|
类别数灵活性 | 动态调整(最优) | 需预设k值 | 树状图剪切选择 |
计算效率 | 中等(迭代分裂/合并) | 高(O(n)) | 低(O(n²)) |
抗噪能力 | 强(合并操作) | 弱(对异常值敏感) | 中等(依赖链接准则) |
适用场景 | 高维、非均匀分布数据 | 大规模均匀数据 | 小规模层次结构分析 |
选择建议:
- 多维复杂数据:优先选择m-ISODATA,利用动态类别调整捕捉非线性关系。
- 快速处理大规模数据:采用k-means或其改进版本(如Mini Batch)。
- 探索数据层次特性:HAC结合树状图分析,适合多时间尺度场景生成。
五、未来研究方向
- 混合算法:结合m-ISODATA的动态调整与HAC的层次分析,提升场景生成精度。
- 参数自动化:利用贝叶斯优化或遗传算法自动调参,减少m-ISODATA的实验成本。
- 实时性优化:开发分布式聚类框架(如Spark MLlib),提升HAC在大数据下的计算效率。
结论
无监督聚类算法为电力系统风场景分析提供了灵活且高效的工具。m-ISODATA在动态适应性和鲁棒性上表现突出,k-means以其简洁性成为大规模数据处理的首选,而HAC则擅长揭示数据层次结构。未来需结合具体问题需求,综合算法优势并推进智能化改进,以应对高比例可再生能源并网的挑战。
📚2 运行结果
部分代码:
% Operating System
if strcmp(computer, 'PCWIN64')
folder_root = '';
else
folder_root = '/';
end
%
load([folder_root '../data/Series_2WindFarms_mod.mat'],'data'); % Leitura das s锟絩ies na matriz M
[Nobs, nser] = size(data); % N锟絤ero de s锟絩ies
%
%
figure('Position',[339 200 1500 648])
subplot(1,2,1)
color = get(gca,'ColorOrder');
plot(-1,-1, '.', 'LineWidth', 2,'MarkerSize', 8, 'color', [170 170 170]/255)
hold on
plot(data(:, 1)*100, data(:,2)*100,'.','MarkerSize', 3.5, 'Color', 120*[1 1 1]/255, 'HandleVisibility', 'off')
xlabel(['Generation of the wind farm B (%)\newline' ...
' (a)'])
ylabel('Generation of the wind farm A (%)')
%
ninterval = 24;
mx = zeros(ninterval, 1);
my = zeros(ninterval, 1);
passo = 1/ninterval;
i0 = -passo;
for interval = 1:ninterval
sx = 0;
sy = 0;
c = 0;
i0 = i0+passo;
iF = i0+passo;
if interval < ninterval
for iobs = 1:Nobs
if data(iobs, 2)>=i0 && data(iobs, 2)<=iF
sx = sx+data(iobs, 1);
sy = sy+data(iobs, 2);
c = c+1;
end
end
else
for iobs = 1:Nobs
if data(iobs, 2)>=0.99 && data(iobs, 2)<=1
sx = sx+data(iobs, 1);
sy = sy+data(iobs, 2);
c = c+1;
end
end
end
if c>0
mx(interval) = sx/c;
my(interval) = sy/c;
else
mx(interval) = NaN;
my(interval) = NaN;
end
end
plot(mx*100, my*100, '--', 'LineWidth', 3, 'Color', color(4,:))
legend('data points', 'data average')
axis([0 100 0 100])
axis('square')
grid on
xticks(0:10:100)
set(gca,'FontSize',14)
%
%% Density plot
[N, c] = hist3(data,[24 24],'CdataMode','auto','LineStyle','none');
[Nsize, ~] = size(N);
xy = linspace(0, 1, Nsize);
N=N/sum(sum(N));
N(N==0)=NaN;
%
subplot(1,2,2)
% contourf(xy*100,xy*100,N',25,':')
contourf(xy*100,xy*100,N',25,'LineStyle','none')
colormap(flipud(hot))
xlabel(['Generation of the wind farm B (%)\newline' ...
' (b)'])
ylabel('Generation of the wind farm A (%)')
%colorbar('Ticks',[0.005,0.036],'TickLabels',{'Low','High'})
axis('square')
grid on
xticks(0:10:100)
set(gca,'FontSize',14)
print(gcf,[folder_root 'fig_DataDensity.jpg'],'-djpeg','-r200');
savefig([folder_root 'fig_DataDensity.fig'])
%
%% Historical series
figure('Position',[339 120 759 648])
%plot(1:8760, movmean(data(:,2)*100,24*7), 1:8760, movmean(data(:,1)*100,24*7), 'LineWidth', 2)
plot(1:24*7, data(1:24*7,2)*100, 1:24*7, data(1:24*7,1)*100, 'LineWidth', 2)
legend('Wind farm A', 'Wind farm B')
xlabel('Time (h)')
ylabel('Power Generation (%)')
axis([1 24*7 0 100])
grid on
set(gca,'FontSize',14)
print(gcf,[folder_root 'fig_hist_2WF.jpg'],'-djpeg','-r200');
savefig([folder_root 'fig_hist_2WF.fig'])
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Arthur Neves de Paula, Edimar José de Oliveira, Leonardo de Mello Honório , Leonardo Willer de Oliveira, Camile Arêdes Moraes (2020) m-ISODATA: unsupervised clustering algorithm to capture representative scenarios in power systems
[2]李仲恒,刘蓉晖.基于ISODATA的电力负荷曲线分类[J].上海电力学院学报,2019,35(04):327-332.
[3]王燕妮,李军,田思敏.模糊ISODATA聚类结合直方图熵值算法的异常行为检测[J].现代电子技术,2017,40(12):120-123+127.DOI:10.16652/j.issn.1004-373x.2017.12.033.