分布式能源发电中主要是以光伏发电和风力发电为主,但这两种发电受自然环境的影响具有波动性和间歇性。当我们具有其历史发电的输出数据时,可以根据其历史数据,利用Kmeans聚类算法找出其典型的输出场景,并将该场景作为分布式能源的出力进行近似的相关研究。今天主要是以实例简单MATLAB的kmeans聚类生成光伏和风力发电的典型场景。
1.kmeans聚类可再生能源发电的典型场景
历史数据为92天光伏和风力发电输出的15分钟级的功率。
程序
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('分布式能源系统输出')
运行结果
2.kmeans聚类光伏发电的典型场景
历史数据是一年(365)天光伏发电的15分钟级的输出功率。
程序
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
运行结果
本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。
作 者 | 郭志龙
编 辑 | 郭志龙
校 对 | 郭志龙