基于深度强化学习的微网P2P能源研究 摘要:代码主要做的是基于深度强化学习的微网P2P能源研究,具体为采用PPO算法以及DDPG算法对P2P能源模型进行仿真验证,代码对应的是三篇文献,内容分别为基于深度强化学习微网控制研究,多种深度强化学习优化效果对比,以及微网实施P2P经济效益评估 复现结果非常良好,结果图展示如下:

一、代码结构与核心组件概述

提交的代码库围绕"微网P2P能源交易"场景构建了完整的深度强化学习实验框架,整体采用模块化设计,包含三大核心组件:

  • 环境仿真模块(environment.py):构建微网能源生产、消费与交易的仿真环境
  • 强化学习算法模块:实现DDPG、PPO、VPG三种算法(core_*.py及主程序)
  • 工具支撑模块(utils目录):提供日志、并行计算、模型管理等辅助功能

代码遵循OpenAI Gym环境规范设计交互接口,基于PyTorch实现神经网络计算,支持多进程并行训练,完整覆盖"环境建模-智能决策-实验验证"的研究流程。

二、环境仿真模块(environment.py)

该模块是系统的核心交互层,通过面向对象设计精确模拟微网系统的物理特性与交易规则,为强化学习代理提供标准化的状态观测与奖励反馈。

1. 基础模型设计

  • 负荷模型(Load类)
  • 功能:计算特定类型负荷的能源消耗量
  • 核心逻辑:基于usage_trends.csv的时间序列数据,通过"最大负荷×时段占比"计算实时能耗
  • 关键方法:getusage()返回单负荷能耗,gettotal_usage()计算同类负荷总能耗
  • 电池模型(Battery类)
  • 功能:模拟储能设备的充放电行为与容量管理
  • 核心参数:最大容量(maxcapacity)、放电系数(dischargefactor)、初始容量(initial_capacity
  • 关键方法:
  • charge(amount):处理充电逻辑,包含溢出保护(超出容量部分无效)
  • discharge(amount):处理放电逻辑,包含欠充保护(剩余容量不足时返回实际放电量)
  • get_remaining():返回当前剩余容量
  • 发电模型(Generation类)
  • 功能:整合可再生能源发电数据
  • 数据来源:太阳能数据(Data/Solar/)与风能数据(Data/wind/
  • 关键方法:get_generated()返回指定时间步的总发电量
  • 微网模型(Microgrid类)
  • 功能:封装单微网的完整能源系统
  • 组成结构:包含多个Load实例(负荷)、1个Battery实例(储能)、1个Generation实例(发电)
  • 核心能力:
  • 状态感知:getbatteryremaining()gettotalload()gettotalgenerated()
  • 交易决策支持:to_trade()计算供需差额(正数为盈余,负数为 deficit)
  • 能源调度:supply()处理负荷满足逻辑,优先使用本地发电,不足时放电或购电

2. 环境交互接口(MicrogridEnv类)

作为Gym环境实现,该类定义了智能体与微网系统的交互规范:

  • 状态空间(Observation Space)
  • 维度:4维连续空间
  • 组成:[电池剩余容量, 总负荷, 总发电量, 上一时刻电价]
  • 范围:各维度均做归一化处理,映射至[0,1]区间便于网络学习
  • 动作空间(Action Space)
  • 维度:4维连续向量,具体含义:
  • 动作类型(0-1:购买;1-2:出售;≥2:不交易)
  • 目标微网索引(0-1代表其他两个微网)
  • 交易能源量(kW·h)
  • 交易价格(美分/kW·h)
  • 约束:能源量不超过电池容量,价格需在成本与公共电网电价间
  • 核心交互逻辑(step方法)
    1. 动作解析:提取动作类型、目标微网、交易量和价格
    2. 有效性校验:检查交易行为与自身供需状态是否匹配(如盈余时不能购买)
    3. 交易执行:计算输电损耗(基于距离矩阵),更新双方电池容量
    4. 状态更新:推进时间步,更新发电量、负荷需求等环境状态
    5. 奖励计算:根据交易收益、供需平衡情况生成奖励信号
  • 奖励机制设计
  • 基础奖励:交易价格优于公共电网时的价差收益(购买时低价奖励,出售时高价奖励)
  • 特殊奖励:实现完全供需平衡时+100奖励
  • 惩罚项:
  • 交易行为与状态冲突(如赤字时出售):-10
  • 价格不合理(超出成本/电网价):-5
  • 交易量超出实际能力:-3

三、强化学习算法模块

1. 算法核心框架(core_*.py)

三类算法均采用Actor-Critic架构,核心差异体现在策略更新方式:

  • 通用组件
  • mlp():快速构建多层感知机,支持自定义隐藏层数量与神经元数
  • 网络结构:
  • Actor网络:输入状态,输出连续动作(DDPG用Tanh限制范围,PPO/VPG用高斯分布建模)
  • Critic网络:DDPG中输入"状态+动作"输出Q值;PPO/VPG中输入状态输出V值
  • DDPG核心(core_DDPG.py)
  • 双网络设计:主网络(Actor/QFunction)与目标网络(ActorTarg/QFunctionTarg
  • 目标网络更新:采用Polyak平均(polyak=0.995)缓慢跟踪主网络参数
  • 损失函数:Q网络为MSE损失,Actor网络为Q值梯度上升
  • PPO核心(core_PPO.py)
  • 单一网络结构:ActorCritic同时输出策略分布与状态价值
  • 关键损失:剪辑损失(clip_ratio=0.2)限制策略更新幅度
  • 优势估计:采用GAE-Lambda(lam=0.97)减少优势估计方差
  • VPG核心(core_vpg.py)
  • 基础策略梯度实现:通过蒙特卡洛回报估计策略梯度
  • 价值函数优化:独立的V网络,采用MSE损失拟合回报

2. 训练流程实现

  • DDPG训练流程(main_DDPG.py)
    1. 初始化:创建环境、Actor-Critic网络、经验回放池(ReplayBuffer
    2. 探索阶段:前10000步随机动作填充经验池
    3. 交互循环:
  • 策略执行:添加高斯噪声(act_noise=0.1)的探索动作
  • 经验存储:将(s,a,r,s',done)存入回放池
  • 网络更新:每50步采样100条经验,交替更新Q网络与Actor网络
    4. 目标网络软更新:每次主网络更新后执行Polyak平均
  • PPO训练流程(mainPPO.py)
    1. 并行初始化:MPI多进程(默认4进程)创建环境副本
    2. 轨迹收集:每个进程收集local
    stepsperepoch步数据存入PPOBuffer
    3. 优势计算:使用GAE-Lambda估计优势函数并标准化
    4. 策略优化:
  • 多轮更新(80次迭代)最小化剪辑损失
  • KL散度监控(target_kl=0.01)防止策略突变
    5. 价值网络更新:同步优化V值拟合误差
  • VPG训练流程(main_vpg.py)
    1. 轨迹收集:单进程或多进程收集完整episode数据
    2. 回报计算:基于蒙特卡洛方法计算折扣回报
    3. 策略更新:单次梯度上升最大化累积回报
    4. 价值更新:迭代优化V网络拟合回报值

四、工具支撑模块(utils目录)

1. 实验管理(logx.py)

  • Logger类:记录训练指标(回报、损失、参数数量等)至progress.txt
  • EpochLogger:扩展Logger支持按epoch统计平均回报、最大/最小回报
  • 自动存档:实验参数(config.json)与模型权重(pyt_save/)自动保存

2. 并行计算(mpi_tools.py)

  • 基于MPI实现多进程数据并行
  • 核心功能:
  • mpi_fork():创建指定数量的子进程
  • mpiavggrads():平均各进程梯度
  • sync_params():同步初始网络参数

3. 模型测试与可视化

  • test_policy.py:加载保存的模型,评估无探索策略的性能
  • plot.py:解析日志文件,生成训练曲线(支持多算法对比)

4. 实验配置(run_utils.py)

  • setuploggerkwargs():生成带时间戳的日志路径
  • ExperimentGrid:支持超参数网格搜索,批量执行实验

五、关键参数与配置

模块 核心参数 说明 默认值
微网环境 NETWORK_PRICE 公共电网电价(美分) 19

| | 电池容量 | 各微网储能上限 | 500/300/400 |

| | 距离矩阵 | 微网间输电距离(km) | 3x3矩阵 |

| DDPG | gamma | 折扣因子 | 0.99 |

| | replay_size | 经验池容量 | 1e6 |

| | 学习率 | pilr=1e-3, qlr=1e-3 | 1e-3 |

| PPO | clip_ratio | 策略更新剪辑系数 | 0.2 |

| | trainpiiters | 策略训练迭代次数 | 80 |

| | 并行进程数 | MPI进程数量 | 4 |

六、代码特色与研究适配性

  1. 场景真实性
    - 引入输电损耗物理模型(travelloss方法)
    - 基于实际负荷曲线(usage_trends.csv)和可再生能源数据建模
  1. 算法对比框架
    - 统一环境接口下实现三种主流算法
    - 一致的评估指标(平均回报、交易成本、供需平衡率)
  1. 研究扩展性
    - 模块化设计便于替换算法组件
    - 配置化参数支持快速调整实验方案
    - 完整的日志系统支持结果可复现性

该代码库为"深度强化学习在微网P2P交易中的应用"研究提供了完整实验平台,可直接用于算法性能对比,也可通过扩展环境模型(如添加更多微网节点、复杂交易规则)支持更深入的研究探索。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐