【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

2.1 有/无策略奖励

2.2 训练结果1 

2.2 训练结果2

🎉3 参考文献

🌈4 Python代码、数据、文章


💥1 概述

文献来源:

根据微电网或微能源网是否与主电网相连接,可将其分为并网型和独立型 2 种。本文以并网型微 能源网为研究对象,研究其并网运行的能量管理与优化问题。目前,针对微能源网的能量管理,从算法上来讲,多结合最优化算法或者启发式算法进行。文献[3]建立了微网混合整数非线性模型,通过将其分解为组合问题和最优潮流问题,避免直接求解混合整数非线性问题,加快了寻优速度。文献[4]通过概率约束对旋转备用储能的不确定性进行建模,提出了一种使用机会约束规划来最小化微网运营成本的最优调度方法。文献[5]在考虑可再生能源随机性和用户满意度的情况下,热电解耦的同时通过基于概率约束规划法优化,使运行成本最低。文献[6]提出一种基于记忆机制的遗传算法,对微网运行成本最小化问题进行求解。文献[7]提出了一种新的混合粒子群优化算法对含有可再生能源的微电网进行优化。文献[8]在考虑符合满意度的基础上,利用 NSGA-II 算法对微电网运行进行多目标优化。文献[9]基于 Stone-Geary 函数和双向拍卖机制构建了智慧能源系统能量优化模型,给出了通过收敛判定域引导的全局随机寻优与区域定向寻优策略。最优化算法的计算效率较高,但是其在处理非线性、非凸或非连续问题时难以逃出局部最优。启发式算法可以在给定的条件下求得相应的最优解或 Pareto 前沿,但限制多,计算耗时长且算法泛化学习能力不足。


关键词:微能源网;能量管理;深度强化学习;Q-learning;DQN

这种基于深度强化学习的微能源网能量管理与优化方法,不仅可以有效地预测微能源网的负荷需求和可再生能源的功率输出,还能够根据环境信息和分时电价进行智能化的能量调度。通过深度 Q 网络(DQN)的学习,系统可以不断优化能量管理策略,以最大程度地利用可再生能源并降低能源浪费。这种模型无关的智能算法还可以适应不同类型的微能源网,为各种规模和结构的能源系统提供定制化的能量管理方案。因此,这种创新的解决方案为可再生能源的接入和利用开辟了全新的可能性,有望推动微能源网的智能化发展,促进可再生能源在能源领域的更广泛应用。

强化学习是指从环境状态到动作策略集的学习,以使得动作从环境中获得的累计奖励最大,学

习的过程,如图 3 所示。本质上,智能体与环境的互动是一种马尔科夫决策过程(markov decision

process,MDP)。MDP 一般由一个四元组(S, A, R, ) 定义,其中:

在传统的 Q 学习算法中,由于维数灾难,强化学习难以解决大规模MDP问题或连续空间MDP问

题。因此,价值函数近似方法被提出以解决这一问题。

 

📚2 运行结果

2.1 有/无策略奖励

2.2 训练结果1 

2.2 训练结果2

部分代码:

class NetEnvironment:
    def __init__(self, phi):
        self.eta_MT = 0.3  # 联供发电单元的发电效率
        self.eta_HR = 0.73  # 余热回收锅炉的换热效率
        self.eta_HX = 0.9  # 换热装置的换热效率
        self.eta_SB = 0.9  # 燃气锅炉的效率
        self.eta_EC = 4  # 电制冷机的性能系数

        self.eta_BC = 0.2  # 电储能的最大充电率
        self.eta_BD = 0.4  # 电储能的最大放电率
        self.eta_B_max = 0.9  # 电储能的最大储能系数
        self.eta_B_min = 0.2  # 电储能的最小储能系数

        self.P_WT_max = 30  # 风机最大功率
        self.P_PV_max = 35  # 光伏最大功率

        self.P_PV = get_P_PV()  # 光伏的功率输出
        self.P_WT = get_P_WT()  # 风机的功率输出
        self.L_e = get_L_e()  # 电负荷
        self.L_h = get_L_h()  # 热负荷
        self.L_c = get_L_c()  # 冷负荷
        self.price = get_price()  # 电价

        self.P_MT_action = [0, 15, 30, 45, 60]  # 联合发电单元功率(0-60)
        self.P_g_action = [0, 16, 32, 48, 64, 80]  # 电网流入微能源网的电功率
        self.P_B_action = [-40, -20, 0, 20, 40, 60, 80]  # 蓄电池充放电功率
        self.action_space = []
        self.W_B = 200  # 蓄电池的最大容量
        self.c_f = 3.45  # 天然气的单位价格
        self.q_ng = 9.7  # 天然气的低热值(kW h)/m3
        self.Q_SB_max = 100  # 联供发电单元输出的最大热功率
        self.Q_HR_max = 120  # 余热回收锅炉输出的最大热功率
        self.P_M_t_1 = 30
        self.c_p = 0.9  # 单位差额电量的惩罚
        self.observation = [self.P_PV[0], self.P_WT[0], self.L_e[0], self.L_h[0], self.L_c[0], self.price[0],
                            phi]  # 光伏发电,风力发电、电负荷、热负荷、电负荷、电价、电储能的荷电状态

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]刘俊峰,陈剑龙,王晓生等.基于深度强化学习的微能源网能量管理与优化策略研究[J].电网技术,2020,44(10):3794-3803.DOI:10.13335/j.1000-3673.pst.2020.0144

[2]陈剑龙.基于深度强化学习的微能源网能量管理策略研究[D].华南理工大学,2020.DOI:10.27151/d.cnki.ghnlu.2020.003401

🌈4 Python代码、数据、文章

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是基于高斯过程的贝叶斯优化Python代码示例: ```python import numpy as np from scipy.stats import norm from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import ConstantKernel, Matern def acquisition_function(x, X_sample, Y_sample, gpr, xi=0.01): mu, sigma = gpr.predict(x.reshape(1, -1), return_std=True) mu_sample = Y_sample.max() with np.errstate(divide='warn'): imp = mu - mu_sample - xi Z = imp / sigma ei = imp * norm.cdf(Z) + sigma * norm.pdf(Z) ei[sigma == 0.0] = 0.0 return -ei[0] def bayesian_optimization(n_iters, sample_loss, bounds): X = [] Y = [] for i in range(n_iters): if i == 0: X_sample = np.array([[np.random.uniform(x[0], x[1])] for x in bounds]) else: X_sample = np.array(X) Y_sample = np.array(Y) kernel = ConstantKernel(1.0) * Matern(length_scale=1.0) gpr = GaussianProcessRegressor(kernel=kernel, alpha=0.01, n_restarts_optimizer=25, normalize_y=True) gpr.fit(X_sample, Y_sample) x_next = None y_next = None max_acq = -1 n_points = 10000 X_points = np.zeros((n_points, len(bounds))) for j, (a, b) in enumerate(bounds): X_points[:, j] = np.random.uniform(a, b, n_points) for x in X_points: acq = acquisition_function(x, X_sample, Y_sample, gpr) if acq > max_acq: x_next = x max_acq = acq y_next = sample_loss(x_next) X.append(x_next) Y.append(y_next) return X, Y ``` 其中,`acquisition_function`函数计算采样点的期望改进值(expected improvement),用于优化过程中选择下一个采样点。`bayesian_optimization`函数实现了贝叶斯优化的主要逻辑,包括随机初始化、高斯过程回归、期望改进值计算和下一个采样点的选择。最终返回优化得到的采样点和相应的函数值。需要注意的是,这里的损失函数应该是一个黑盒函数,无法直接求导,因此使用高斯过程回归来近似估计函数的值和方差,进而计算期望改进值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值