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

2024-01-21

???????????????? 欢迎来到本博客 ❤️❤️????????

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

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

???????????? 本文目录如下: ????????????

目录

????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 代码、数据、文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用多个具有不同日志级别的处理程序时出现意外的 python 记录器输出

    我正在尝试将数据记录到 stderr 并记录到文件中 该文件应包含all日志消息 并且 stderr 应该只转到命令行上配置的日志级别 这在日志记录指南中多次描述 但它似乎对我不起作用 我创建了一个小测试脚本来说明我的问题 usr bin
  • 如何关闭python服务器

    使用此代码来运行 python 服务器 import os from http server import SimpleHTTPRequestHandler HTTPServer os chdir c users owner desktop
  • Redis - 错误:值不是有效的浮点数

    我在 Redis 中有一个排序集 我试图通过在Python代码中使用zincrby来更新特定元素的计数器值 例如 conn zincrby usersSet float 1 user1 但它显示错误为 错误 值不是有效的浮点数 我在 cli
  • 有没有办法使用纯Python释放纯函数的GIL?

    我想我一定错过了什么 这看起来很正确 但我看不出有什么办法可以做到这一点 假设你有一个 Python 纯函数 from math import sin cos def f t x 16 sin t 3 y 13 cos t 5 cos 2
  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • 如何在 Django Admin 的“更改”页面中显示内嵌上传的图像?

    我正在尝试在中显示内联上传的图像 变更列表 页面在 Django 管理中 这是我的代码如下 models py from django db import models class Product models Model name mod
  • Flask/Apache 提交按钮用于文件上传

    我有一个在 apache 后面运行的 Flask 应用程序 在我的 index html 页面上有一个文件上传按钮和一个提交按钮 如下所示
  • 使用 for 循环 Python 为数组赋值

    我正在尝试将字符串的值分配给不同的数组索引 但我收到一个名为 列表分配超出范围 的错误 uuidVal distVal uuidArray distArray for i in range len returnedList for beac
  • Django REST Framework:无法使用视图名称解析超链接关系的 URL

    我已经广泛研究了这个相当常见的问题 但没有一个修复对我有用 我正在 REST 框架中构建 Django 项目 并希望使用超链接关系 用户可以拥有许多独立的汽车和路线 路线是位置的集合 这些是我的序列化器 class CarSerialize
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • 不使用 graphviz/web 可视化决策树

    由于某些限制 我无法使用 graphviz webgraphviz com 可视化决策树 工作网络与另一个世界是封闭的 问题 是否有一些替代实用程序或一些 Python 代码用于至少非常简单的可视化可能只是决策树的 ASCII 可视化 py
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 在 PyCharm 中运行命令行命令

    你好 我正在使用Python 但之前从未真正使用过它 我收到一些命令 需要在终端中运行 基本上 python Test py GET feeds 我正在使用 PyCharm 我想知道是否有办法从该 IDE 中运行这些相同的命令 按 Alt
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • RuntimeError:模型类 django_messages.models.Message 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    我正在尝试使用https github com arneb django messages https github com arneb django messages打包我的消息传递内容并尝试了以下操作 pip install git h
  • python 中的异步编程

    python 中有异步编程的通用概念吗 我可以为一个函数分配一个回调 执行它并立即返回主程序流 无论该函数的执行需要多长时间吗 您所描述的 主程序流程在另一个函数执行时立即恢复 不是通常所说的 异步 又名 事件驱动 编程 而是 多任务 又名
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐