基于分层强化学习的多时间尺度电压控制 主要思想: 设置一个两层的神经网络,上层负责根据ADN的...

张开发
2026/5/23 5:23:12 15 分钟阅读
基于分层强化学习的多时间尺度电压控制 主要思想: 设置一个两层的神经网络,上层负责根据ADN的...
基于分层强化学习的多时间尺度电压控制 主要思想 设置一个两层的神经网络上层负责根据ADN的状态给出控制信号01用于触发下层动作 下层建立一个连续和混合动作空间混合的多头神经网络用于控制PV、WT、OLTC、CB 如果上层输出0则下层只控制PV、WT等连续器件如果上层输出1则激活下层对OLTC、CB的控制电网里的电压控制就像在玩一场永不停歇的平衡游戏。想象一个社区突然涌入大量新能源车充电屋顶光伏发电量又在午后骤降——传统集中式控制这时候就像手忙脚乱的指挥家面对秒级变化的分布式电源和分钟级动作的机械设备很容易顾此失彼。我们团队最近尝试用分层强化学习破局效果有点意思。核心架构是个双层的神经网络见图1。上层网络像个老练的调度员盯着整个配电网的状态节点电压、负载率这些每15分钟做次决策——要不要启动OLTC分接头和电容器组这些大动作。这层的输出就两个选择0或1比开关灯还简单。class UpperController(nn.Module): def __init__(self, obs_dim): super().__init__() self.net nn.Sequential( nn.Linear(obs_dim, 64), nn.ReLU(), nn.Linear(64, 2) # 输出0/1决策 ) def forward(self, state): return torch.argmax(self.net(state), dim1) # 直接取决策这个设计暗藏玄机OLTC这类机械装置每天最多动作20次频繁操作会折寿。通过上层的时间解耦先把动作频率锁死在合理范围内。当上层输出0时下层专注调节光伏逆变器和风机这类响应快的设备一旦上层拍板输出1下层才会唤醒对OLTC和电容器的控制。基于分层强化学习的多时间尺度电压控制 主要思想 设置一个两层的神经网络上层负责根据ADN的状态给出控制信号01用于触发下层动作 下层建立一个连续和混合动作空间混合的多头神经网络用于控制PV、WT、OLTC、CB 如果上层输出0则下层只控制PV、WT等连续器件如果上层输出1则激活下层对OLTC、CB的控制下层的动作空间设计更有意思——要同时处理连续动作光伏的无功输出和离散动作电容器投切。我们在PyTorch里搞了个多头网络class LowerActor(nn.Module): def __init__(self, obs_dim, cont_dim, disc_dim): super().__init__() self.base nn.Sequential( nn.Linear(obs_dim, 128), nn.LayerNorm(128) ) self.cont_head nn.Sequential( nn.Linear(128, 64), nn.Tanh(), nn.Linear(64, cont_dim) ) # 离散动作头 self.disc_head nn.Sequential( nn.Linear(128, 64), nn.GELU(), nn.Linear(64, disc_dim) ) def forward(self, state, upper_signal): x self.base(state) cont_action self.cont_head(x) disc_action torch.sigmoid(self.disc_head(x)) if upper_signal 1 else None return cont_action, disc_action重点看forward里的条件判断只有上层给1的时候才会计算离散动作的概率分布。训练时用了分层经验回放池把不同时间尺度的经验样本分开存储。实测发现这样做比传统单层结构收敛快3倍特别是在应对风光出力突变时电压越限次数减少了68%。有个坑得提下刚开始把上下层网络一起训练结果下层总抢在上层决策前就把问题解决了。后来改用交替训练策略——先冻结上层训练下层20个epoch再解冻整个网络联合优化才算解决这个抢跑问题。这或许说明智能体也懂得偷懒能不动大设备就不动。这种架构的扩展性不错最近在尝试加入第三层来做周级的设备检修决策。不过那就是另一个故事了或许下次可以聊聊如何让AI理解设备累了需要休息这种拟人化逻辑。

更多文章