l2rpn比赛中的网络表示
l2rpn比赛中的网络表示
Sheldon Zheng网络的表示
在l2rpn环境中,节点或者说vertics被表示为母线,(bus/busbar),这个母线的定义是可以连接不同的电气元素的地方,需要注意的是母线不同于传输线,母线更多代表的是在一个站点内部的连接,类似于一个终端节点,可以连接电源、调相机、抑或是无功补偿设备。
其次,电力网络被抽象地表示为图(graph),图上的边则是连接两个母线的电力线。在grid2op中,不管是几回线,只要起点和终点相同,就被表示为一条线。
这个图可以使用grid2op.Observation.BaseObservation.get_energy_graph()
函数来表示,该函数返回一个networkx的图实例,也就意味着可以打印出来。

可以看到这个图是一个networkx的Graph类
然后可以打印出来这个图的样子,但是首先使用自带的print看看是多少个节点和边:

然后看看是什么样子,这里可以使用grid2op自带的打印函数PlotMatplot
,可以从PlotGrid包中调用得到,在getting_started中的第六章讲过。
1 | from grid2op.PlotGrid import PlotMatplot |

这里需要注意,在jupyter
notebook上如果不加layout
进行接收的话,则会画出来两个图。
教程里作者着重强调了grid2op是一个电力网络决策平台,而不是一个对电网内部物理规律的建模。它的主要目的是在网络层面的过程决策,而不是物理细节上的仿真。
这样就很好,关注于算法,更加聚焦。传统的电网方针软件,如PSASP这样的暂态仿真,关注的是给定网络架构后各个细节上的仿真,而特定网络架构(运行方式)则全靠人来决定,这样有时候就无法得到最优解,只能得到人的经验为前提下的次优解法。
在grid2op中chronics是一个比较特殊的单位,可以理解成是时间序列,是提供数据来在一个时间步长和另一个时间步长之间改变电力流输入参数的东西。
grid2op中的模块
模块名称 | 主要用途 |
---|---|
grid2op.Environment |
环境构建 |
grid2op.Chronics |
负责将数据(负载、发电量、计划维护等)提供给环境 |
grid2op.Backend |
进行电网状态计算 |
grid2op.Agent |
负责管理电网安全的控制员 |
grid2op.Action |
代理向环境发送的控制 |
grid2op.Observartion |
环境发送给代理的信息表示代理看到的电网状态 |
grid2op.Opponent |
用于模拟电力线意外断开 |
grid2op.Rules |
计算某个动作在给定的时间步骤中是否“合法” |
grid2op.Parameters |
存储定义的参数,例如,哪种情况下某个操作是合法的,或者电力线可以保持溢出多长时间等等。 |
grid2op环境具有以下多个共同特性:
高度约束的环境:这些环境遵循物理定律。你不能直接选择某条输电线上的功率流量,而是通过选择电网的“拓扑结构”以及(在某些限制条件下)发电机的功率装机来进行控制。在任何时间步内,电网状态必须满足基尔霍夫电路定律。
随机环境:在所有环境中,你都无法预知未来,这使得这些环境成为“部分可观测”环境(类似于在迷宫中,你并不能“从上方”俯瞰,而是只能“以第一人称视角”看到前方的情况)。如果存在危险或对抗性因素,这些环境可能会变得“更加随机”,例如,恶意代理可能会进行针对性的攻击,以危害你的策略。
包含连续和离散的观察空间:观察空间的某些部分是连续的(例如,某条输电线上的流量或某发电机的输出量),而有些部分则是离散的(例如,输电线的状态——连接/断开,或者该输电线超载的时间等)。
包含连续和离散的动作空间:首选的动作类型是拓扑结构,这是离散类型的动作(例如,你可以连接/断开一条输电线),但也存在一些连续的动作(例如,你可以实时调整一组发电机的输出)。
动态图操作:电力网络可以建模为图。在这些环境中,观察和动作都集中在图的操作上。观察包含了电网的完整状态,包括“拓扑结构”(你可以将其视为一个图),而动作则集中在调整这个图,使电网尽可能地稳健和安全。与大多数文献中的问题不同,在grid2op中,你需要找到一个符合某些边和节点约束的图。
强调安全性和稳定性:电力系统是高度关键的系统(谁会愿意让发电厂短路?或者引发停电导致医院无法救治患者?),因此,在任何情况下,控制系统都必须确保电网的安全。
- 上面是直接复制的文档,还是需要讲究一点的