💥1 概述
技术的进步使可再生能源(太阳能、风能等)得以大规模利用。将传统能源和可再生能源相结合的智能电网被认为是一种可持续的发电解决方案。然而,所有可再生能源都受到环境因素(如风速、太阳辐射强度、云层)的影响,这些因素会导致这些能源产生的电力波动。此外,可用性受每日/年度周期的影响(例如,太阳能仅在白天可用)。而智能计量支持实时需求预测;还需要预测可再生能源发电量的精确模型。准确的预测模型将确保电网稳定、顺利调度和能源管理。例如,如果模型预测可再生能源在一定时间段内中断,智能电网必须在该时间段内无缝切换到传统能源,并确保发电量满足需求预测。本文提出了基于数据源的各种基于学习的可再生能源预测模型;以及用于供需匹配的调度策略。此外,还可以使用模拟软件对微电网进行真实建模。这里定义的问题是提出一个框架:现实地模拟微电网;预测(可再生)能源的需求和供应;无缝安排可再生能源(和常规能源)供应以满足需求;并提供关于智能电网系统功能的可操作见解。
方法:
- 微电网/公用事业系统的模拟。
- 使用统计/机器学习方法开发能源生产预测模型。(使用长短期记忆网络(LSTMs)和向量自动回归(VAR)完成 - 提供代码)。
- 使用表征良好的优化算法为公用事业/微电网控制器开发调度系统(通过使用凸优化算法模块 Cvxpy 完成 - 提供的代码)。
- 最后一步是将预测模型和调度程序与仿真设置集成在一起.
📚2 运行结果
部分代码:
#To be called at every 24 hour distribution, generates the demand supply distribution def dataGenerator(XTestSolarHour, XTestWindHour, XTestDemandHour, weighs): #Solar Energy generation yPredSolar = model.predict(XTestSolarHour) XTestSolarHour = XTestSolarHour.reshape((XTestSolarHour.shape[0],XTestSolarHour.shape[2])) invyPredSolar = np.concatenate((yPredSolar, XTestSolarHour[:, 1:]), axis = 1) invyPredSolar = scalerOne.inverse_transform(invyPredSolar) invyPredSolar = invyPredSolar[:, 0] # yTestSolar = yTestSolar.reshape((len(yTestSolar), 1)) # invyTestSolar = np.concatenate((yTestSolar, XTestSolar[:, 1:]), axis = 1) # invyTestSolar = scalerOne.inverse_transform(invyTestSolar) # invyTestSolar = invyTestSolar[:, 0] #Wind Energy Generation yPredWind = modelOne.predict(XTestWindHour) XTestWindHour = XTestWindHour.reshape((XTestWindHour.shape[0],XTestWindHour.shape[2])) invyPredWind = np.concatenate((yPredWind, XTestWindHour[:, 1:]), axis = 1) invyPredWind = scalerTwo.inverse_transform(invyPredWind) invyPredWind = invyPredWind[:, 0] # yTestWind = yTestWind.reshape((len(yTestWind), 1)) # invyTestWind = np.concatenate((yTestWind, XTestWind[:, 1:]), axis = 1) # invyTestWind = scalerTwo.inverse_transform(invyTestWind) # invyTestWind = invyTestWind[:, 0] #Demand yPredDemand = modelTwo.predict(XTestDemandHour) XTestDemandHour = XTestDemandHour.reshape((XTestDemandHour.shape[0],XTestDemandHour.shape[2])) invyPredDemand = np.concatenate((yPredDemand, XTestDemandHour[:, 1:]), axis = 1) invyPredDemand = scalerThree.inverse_transform(invyPredDemand) invyPredDemand = invyPredDemand[:, 0] # yTestDemand = yTestDemand.reshape((len(yTestDemand), 1)) # invyTestDemand = np.concatenate((yTestDemand, XTestDemand[:, 1:]), axis = 1) # invyTestDemand = scalerThree.inverse_transform(invyTestDemand) # invyTestDemand = invyTestDemand[:, 0] #Elastic and Inelastic demand invyPredDemandInElastic = 0.7*invyPredDemand invyPredDemandElastic = 0.3*invyPredDemand elasticDemandSum = np.sum(invyPredDemandElastic) #Renewable energy output renewableEnergyOutput = invyPredSolar + invyPredWind #Splitting the above into different prosumers according to a schema, of course in real life, with more computational power #One can train separately for each prosumer arrayinvyPredDemandInelastic = np.outer(np.array(weighs), np.array(invyPredDemandInElastic)) arrayRenewableEnergyOutput = np.outer(np.array(weighs), np.array(renewableEnergyOutput)) arrayElasticDemandSum = np.array(weighs)*elasticDemandSum #returns return arrayinvyPredDemandInelastic, arrayRenewableEnergyOutput, arrayElasticDemandSum
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]王辉. 基于LSTM模型的环渤海地区可再生能源预测研究[D].天津理工大学,2020.DOI:10.27360/d.cnki.gtlgy.2020.000309.
[2]范刘洋. 考虑可再生能源预测误差的电力系统鲁棒调度研究[D].上海交通大学,2017.