MAPDN:如何用多智能体强化学习解决电力配电网电压控制难题?
MAPDN:如何用多智能体强化学习解决电力配电网电压控制难题?
【免费下载链接】MAPDNThis repository is for an open-source environment for multi-agent active voltage control on power distribution networks (MAPDN).项目地址: https://gitcode.com/gh_mirrors/ma/MAPDN
在分布式能源大规模接入的今天,电力配电网的电压稳定性面临前所未有的挑战。传统集中式控制方法难以应对光伏逆变器、电动汽车充电桩等分布式设备的动态变化,而MAPDN项目为你提供了一个创新的解决方案:基于多智能体强化学习的主动电压控制环境。这个开源工具集让研究人员和工程师能够轻松实现智能化的分布式电压控制,确保电网安全稳定运行。
🎯 电力系统面临的真实挑战
想象一下,一个拥有数百个节点的配电网,每个节点都可能安装光伏发电设备。这些设备产生的电能会反向注入电网,导致局部电压升高甚至越限。传统的集中控制方式需要全局信息,响应速度慢,而分散控制又难以实现协同优化。
MAPDN项目正是为了解决这一难题而生。它模拟了三种不同规模的电力系统场景:
| 场景 | 负载数量 | 区域划分 | PV设备数量(智能体数) | 最大负载功率 | 最大PV功率 |
|---|---|---|---|---|---|
| Case33 | 32 | 4个区域 | 6个智能体 | 3.5 MW | 8.75 MW |
| Case141 | 84 | 9个区域 | 22个智能体 | 20 MW | 80 MW |
| Case322 | 337 | 22个区域 | 38个智能体 | 1.5 MW | 3.75 MW |
这些场景覆盖了从小型社区电网到中型城市电网的不同规模,让你能够在接近真实的环境中测试算法性能。
上图展示了Case33场景的电力系统拓扑结构。你可以看到节点编号、负荷位置、发电机分布以及四个控制区域的划分。每个太阳图标代表一个光伏设备,由独立的智能体控制。
🚀 技术实现:10种算法+5种屏障函数的强大组合
智能体架构设计
MAPDN采用了高度模块化的设计,让你能够灵活选择适合的智能体类型:
- MLP智能体:agents/mlp_agent.py 基于多层感知机,适合静态环境
- RNN智能体:agents/rnn_agent.py 包含循环神经网络,能处理时序依赖
- 高斯策略智能体:agents/mlp_agent_gaussian.py 支持连续动作空间的探索
10种先进的多智能体强化学习算法
项目集成了业界领先的MARL算法,覆盖了不同应用场景:
独立学习算法
- IAC:独立演员-评论家,每个智能体独立学习
- IDDPG:独立深度确定性策略梯度
- IPPO:独立近端策略优化
协同学习算法
- MADDPG:多智能体深度确定性策略梯度
- MAPPO:多智能体近端策略优化
- MAAC:多智能体演员-评论家
高级算法
- MATD3:多智能体双延迟深度确定性策略梯度
- COMA:反事实多智能体基线算法
- FacMADDPG:分解式MADDPG
- SQDDPG:随机量化深度确定性策略梯度
5种电压屏障函数
电压屏障函数是评估电压是否在安全范围内的核心组件:
- Bowl函数:平滑的二次函数,惩罚电压偏离参考值
- L1范数:绝对值惩罚,对异常值更敏感
- L2范数:平方惩罚,平滑处理小偏差
- Courant Beltrami函数:基于物理约束的复杂函数
- Bump函数:在边界处急剧增加的惩罚函数
这些函数在 environments/var_voltage_control/voltage_barrier/ 目录中实现,你可以根据具体需求选择或自定义。
两种控制模式
- 分布式控制:每个光伏逆变器由一个独立智能体控制,智能体之间通过协同合作实现全局优化
- 去中心化控制:每个区域内的设备由一个智能体控制,这是传统多智能体强化学习的常用方法
🛠️ 快速上手:5步启动你的第一个电压控制项目
步骤1:环境配置
首先克隆项目仓库并创建虚拟环境:
git clone https://gitcode.com/gh_mirrors/ma/MAPDN cd MAPDN conda env create -f environment.yml conda activate mapdn如果你使用Windows系统,请使用environment_win.yml文件。如需GPU加速,手动安装对应版本的PyTorch:
pip install torch==2.9.0+cu128 --index-url https://download.pytorch.org/whl/cu128步骤2:数据集准备
从Hugging Face下载电压控制数据:
# 下载数据集 wget https://huggingface.co/datasets/hsvgbkhgbv/Multi-Agent-Power-Distribution-Networks/resolve/main/voltage_control_data.zip # 解压并放置到正确位置 unzip voltage_control_data.zip mkdir -p environments/var_voltage_control/data mv case33_3min_final case141_3min_final case322_3min_final environments/var_voltage_control/data/步骤3:模型训练
使用MATD3算法在Case33场景上训练分布式电压控制模型:
python train.py --alg matd3 --alias 0 --mode distributed --scenario case33_3min_final --voltage-barrier-type l1 --save-path trial关键参数说明:
--alg:选择MARL算法(matd3、maddpg、mappo等)--mode:控制模式(distributed或decentralised)--scenario:电力系统场景--voltage-barrier-type:电压屏障函数类型--save-path:模型保存路径
步骤4:模型测试
训练完成后,测试模型性能:
python test.py --save-path trial --alg matd3 --alias 0 --mode distributed --scenario case33_3min_final --voltage-barrier-type l1 --test-mode single --test-day 730 --render使用--render参数可以实时可视化电压控制效果,观察智能体如何协同稳定电网电压。
步骤5:结果分析
训练过程中,TensorBoard日志会自动保存在trial/tensorboard/目录下。你可以使用以下命令启动TensorBoard:
tensorboard --logdir trial/tensorboard/在浏览器中打开http://localhost:6006,查看训练曲线、奖励变化和电压稳定性指标。
📊 与传统控制方法的对比
MAPDN不仅提供了强化学习方案,还包含了传统控制方法的实现,方便你进行性能对比:
下垂控制:traditional_control/pf_droop_matpower_all.m最优潮流控制:traditional_control/opf_matpower_all.m
这些Matlab脚本基于MATPOWER工具包实现,可以作为强化学习算法的基准参考。
🔧 高级使用技巧
自定义电力网络
如果你想在自己的电力网络拓扑上测试算法,MAPDN提供了灵活的接口:
from environments.var_voltage_control.voltage_control_env import VoltageControl import yaml # 加载环境配置 with open("./args/env_args/var_voltage_control.yaml", "r") as f: env_config = yaml.safe_load(f)["env_args"] # 自定义网络参数 env_config["data_path"] = "your_custom_network_data/" env_config["mode"] = "distributed" env_config["voltage_barrier_type"] = "l2" # 创建环境 env = VoltageControl(env_config)算法调参指南
在 args/alg_args/ 目录中,每个算法都有对应的配置文件。以MADDPG为例,你可以调整以下关键参数:
# args/alg_args/maddpg.yaml alg_args: lr: 0.0001 # 学习率 gamma: 0.99 # 折扣因子 tau: 0.01 # 目标网络更新率 hidden_dim: 64 # 隐藏层维度 buffer_size: 1000000 # 经验回放缓冲区大小多GPU训练
对于大规模场景(如Case322),你可以使用多GPU加速训练。修改训练脚本,添加GPU分配参数:
CUDA_VISIBLE_DEVICES=0,1 python train.py --alg mappo --scenario case322_3min_final --mode distributed🎨 项目架构优势
MAPDN采用了清晰的分层架构,让代码维护和扩展变得简单:
MAPDN/ ├── agents/ # 智能体实现 ├── critics/ # 评论家网络 ├── environments/ # 电压控制环境 ├── learning_algorithms/ # 学习算法 ├── models/ # 算法模型 ├── utilities/ # 工具函数 └── args/ # 配置文件这种模块化设计让你能够:
- 轻松替换智能体架构
- 快速尝试不同算法
- 自定义奖励函数
- 扩展新的电力系统场景
📈 实际应用价值
MAPDN不仅是一个研究工具,还具有重要的工程应用价值:
- 智能电网优化:帮助电网运营商实现自动化的电压控制
- 新能源接入:为大规模光伏并网提供智能调控方案
- 城市电网管理:提升城市配电网的稳定性和经济性
- 应急响应:在电网故障时快速恢复电压稳定
🎓 学术合作与支持
MAPDN项目由帝国理工学院和巴斯大学的研究团队共同开发,结合了电力系统专业知识和强化学习前沿技术。如果你在研究中使用了这个项目,请引用相关论文:
@inproceedings{NEURIPS2021_1a672771, author = {Wang, Jianhong and Xu, Wangkun and Gu, Yunjie and Song, Wenbin and Green, Tim C}, booktitle = {Advances in Neural Information Processing Systems}, title = {Multi-Agent Reinforcement Learning for Active Voltage Control on Power Distribution Networks}, year = {2021} }🚀 下一步行动建议
- 从Case33开始:建议初学者从Case33场景入手,快速验证算法效果
- 算法对比实验:尝试不同的MARL算法,找到最适合你场景的方案
- 自定义奖励函数:根据实际需求调整电压屏障函数的参数
- 扩展到实际系统:将训练好的模型部署到仿真或实际电网中
MAPDN为你打开了智能电网控制的大门。无论是学术研究还是工程应用,这个强大的工具集都能帮助你快速构建、测试和部署多智能体电压控制系统。现在就开始你的智能电网之旅吧!
【免费下载链接】MAPDNThis repository is for an open-source environment for multi-agent active voltage control on power distribution networks (MAPDN).项目地址: https://gitcode.com/gh_mirrors/ma/MAPDN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
