【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文介绍了改进的迭代自组织数据分析技术算法(m-ISODATA),这是一种无监督聚类算法,用于捕获电力系统中的代表性场景。有两个应用示例可用:考虑风和负载可变性的概率最优潮流;以及发电扩展规划问题,考虑具有11维数据集的风能 - 太阳能 - 热力系统,用于表示风能,太阳能和负载的变化。

📚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.

🌈4 Matlab代码实现

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值