目录
1 引言
2 问题描述
3 目的
4 重要性
5 创新点
6 Python代码
7 结果
可再生能源的开发利用一直是世界上最热门的热点之一。风力发电由于清洁和广泛的可用性,正迅速向大规模产业发展,并具有波动性和间歇性电力的特点。准确可靠的风电预测方法对于电能质量、可靠性管理以及降低旋转备用供电成本至关重要.
风能预测对应于对近期一个或多个风力涡轮机的预期产量的估计。在电网中,任何时候都必须在用电量和发电量之间保持平衡——否则可能会出现电能质量或供应的干扰。风力发电是风速的直接函数,与传统发电系统相比,风力发电不易调度。因此,风力发电的波动受到了极大的关注。
一种风电功率预测数据挖掘方法,由K-means聚类方法和bagging神经网络组成。根据气象条件和历史功率对历史数据进行聚类。皮尔逊相关系数用于计算预测日与聚类之间的距离。
风电功率预测(WPF)对于有效指导电网调度和风电场生产规划具有重要意义。风的间歇性和波动性导致训练样本的多样性对预测精度有重大影响。由于必须保持消耗和发电之间的平衡,因此风力发电的波动是一个非常重要的研究领域。
为了处理训练样本的动态并提高预测精度,提出了一种针对短期WPF的由MinMax归一化、K-means聚类和深度神经网络组成的数据挖掘方法。基于历史天数之间的相似性,K-means聚类用于通过取各个聚类的质心来减少数据集。此外,当给定参数的标准化值时,这个简化的数据集用于预测未来产生的功率。
部分代码:
import numpy as np
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
import datetime as dt
import matplotlib.dates as mdates
def str_to_datetime(date):
return dt.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
def main():
df = pd.read_csv('Processed_data/wp7.csv', names=['dates', 'ws-2', 'ws-1', 'ws', 'ws+1', 'wd-2',
'wd-1', 'wd', 'wd+1', 'hour_from_06', 'week', 'mounth',
'production'], sep=',', skiprows=1)
real_production = df.production[48:]
real_production.index = np.arange(len(real_production))
M = len(real_production)
predicted_production = df.production[:M]
df['dates'] = df['dates'].apply(str_to_datetime)
xDates = df.dates.iloc[0:M]
realFrame = pd.DataFrame({"Dates": xDates, "Real": real_production})
predFrame = pd.DataFrame({"Dates": xDates, "Prediction": predicted_production})
print("MSE: ", mean_squared_error(realFrame.Real, predFrame.Prediction))
fig, ax = plt.subplots()
ax.plot(realFrame["Dates"], realFrame["Real"])
ax.plot(predFrame["Dates"], predFrame["Prediction"])
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m.%Y'))
plt.show()
if __name__ == '__main__':
main()
import numpy as np
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
import datetime as dt
import matplotlib.dates as mdates
def str_to_datetime(date):
return dt.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
def main():
df = pd.read_csv('Processed_data/wp7.csv', names=['dates', 'ws-2', 'ws-1', 'ws', 'ws+1', 'wd-2',
'wd-1', 'wd', 'wd+1', 'hour_from_06', 'week', 'mounth',
'production'], sep=',', skiprows=1)
real_production = df.production[48:]
real_production.index = np.arange(len(real_production))
M = len(real_production)
predicted_production = df.production[:M]
df['dates'] = df['dates'].apply(str_to_datetime)
xDates = df.dates.iloc[0:M]
realFrame = pd.DataFrame({"Dates": xDates, "Real": real_production})
predFrame = pd.DataFrame({"Dates": xDates, "Prediction": predicted_production})
print("MSE: ", mean_squared_error(realFrame.Real, predFrame.Prediction))
fig, ax = plt.subplots()
ax.plot(realFrame["Dates"], realFrame["Real"])
ax.plot(predFrame["Dates"], predFrame["Prediction"])
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m.%Y'))
plt.show()
if __name__ == '__main__':
main()