天天看点

MATLAB的kmeans聚类生成光伏和风力发电的典型场景

作者:云龙派

分布式能源发电中主要是以光伏发电和风力发电为主,但这两种发电受自然环境的影响具有波动性和间歇性。当我们具有其历史发电的输出数据时,可以根据其历史数据,利用Kmeans聚类算法找出其典型的输出场景,并将该场景作为分布式能源的出力进行近似的相关研究。今天主要是以实例简单MATLAB的kmeans聚类生成光伏和风力发电的典型场景。

1.kmeans聚类可再生能源发电的典型场景

历史数据为92天光伏和风力发电输出的15分钟级的功率。

MATLAB的kmeans聚类生成光伏和风力发电的典型场景

程序

clc;
clear all;
close all;
data = xlsread('1.xls');


K=2;%聚类数为2,到时会出来2个典型场景
[idx,C,sumD,D] = kmeans(data,K);
c1 = [];
c2 = [];
for i = 1:length(idx)
    if idx(i) == 1;
        c1 = [c1;data(i,:) ];
    elseif idx(i) == 2;
        c2 = [c2;data(i,:) ];
   
    end
end
figure;
plot(c1');
hold on;
plot(C(1,:),'r-','linewidth',2);
legend('本类原始数据','本类典型场景')
xlabel('时间')
ylabel('分布式能源系统输出')
figure;
plot(c2');
hold on;
plot(C(2,:),'b-','linewidth',2);
legend('本类原始数据','本类典型场景')
xlabel('时间')
ylabel('分布式能源系统输出')



           

运行结果

MATLAB的kmeans聚类生成光伏和风力发电的典型场景
MATLAB的kmeans聚类生成光伏和风力发电的典型场景

2.kmeans聚类光伏发电的典型场景

历史数据是一年(365)天光伏发电的15分钟级的输出功率。

MATLAB的kmeans聚类生成光伏和风力发电的典型场景

程序

clc;
clear all;
close all;
%导入数据
data=xlsread('数据.xls');
%使用第2列数据(实际功率)
used_data=data(:,2);
day=365;%天数,要人为的设置好
num=96;%每一天的数据量
X=zeros([day,num]);
for i = 1:day
    x_i=used_data((i-1)*num+1:i*num);
    X(i,:)=x_i;
end
%kmeans聚类
K=4;%聚类数为9,到时会出来9个典型场景
[idx,C] = kmeans(X,K);
%典型场景数据在变量C里面
%C是K x num 的形状,每一行对应一类场景数据
for k = 1:K
    figure(k)
    plot(X(idx==k,:)','Color','black','DisplayName','本类原始数据')
    hold on
    plot(C(k,:),'Color','r','LineWidth',3,'DisplayName','本类典型场景')
    hold off
    legend('本类原始数据','本类典型场景')
end

           

运行结果

MATLAB的kmeans聚类生成光伏和风力发电的典型场景
MATLAB的kmeans聚类生成光伏和风力发电的典型场景
MATLAB的kmeans聚类生成光伏和风力发电的典型场景
MATLAB的kmeans聚类生成光伏和风力发电的典型场景

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

作 者 | 郭志龙

编 辑 | 郭志龙

校 对 | 郭志龙

继续阅读