Skip to main content

3 posts tagged with "RL"

View All Tags

CityLearn v1.0 - An OpenAI Gym Environment for Demand Response with Deep Reinforcement Learning

· 5 min read
zqqqj
super bug engineer 4 nlp,robot,cv,ml and ds

abstract

需求响应(Demand Response, DR)可在美国电力需求峰值中减少约 20%,而建筑物占总电力需求的约 70%。然而,建筑能耗系统动态复杂且难以建模,传统方法难以协调不同建筑或能源系统。强化学习(RL)因其自适应、无需模型的特性,能基于历史与实时数据实现智能能耗控制。 然而,目前 DR 领域的研究缺乏统一标准,实验难以复现,算法性能也难以比较。为此,作者提出 CityLearn —— 一个基于 OpenAI Gym 的开源强化学习仿真环境,可让研究者方便地实现、共享、复现并比较不同的 DR 控制算法。该框架模块化、可扩展,支持多种储能与发电设备模型。

introduction

美国建筑能耗占全国电力消耗的约 70%,且城市区域的电力需求不断上升,造成输电压力与电价上涨。需求响应(DR)通过激励机制引导用户调整用电模式,从而削减峰值负荷、提高电网稳定性。 然而,为了让 DR 真正有效,需要智能、分布式的负载协调。如果所有设备同时响应相同信号,可能只是“移峰”而非“削峰”。传统控制方法(如 MPC)虽有效,但需依赖昂贵且精确的物理建模。 强化学习(RL)可以在无模型的条件下,通过与环境交互学习最优策略,从实时和历史数据中自动优化建筑能耗管理。但该领域缺乏统一标准,使得不同研究难以比较。为此,作者提出了 CityLearn —— 一个面向城市级能耗优化的强化学习仿真框架,用于统一测试环境、便于算法比较与复现

CityLearn

CityLearn 的目标是:为城市级的建筑群(而非单栋建筑)提供一个标准化的 RL 研究平台

1. architecture

使用 bottom-up design: bottom components:能量存储系统(如蓄热、蓄电池)与能量供应系统(如热泵、太阳能)。 Building class:每栋建筑整合了自身的设备模型与能耗需求。 CityLearn class:整合多个建筑,并继承自 OpenAI Gym 环境,使其成为一个可直接与 RL 智能体交互的仿真环境。

2. 功能特性

语言: Python,可从 GitHub 免费下载。 灵活数据输入:可加载实际建筑的供热/制冷需求数据,也可使用代理模型(surrogate models)。 设备模型:v1.0 版本包含空气源热泵(air-to-water heat pump)、热能储存系统、以及电池模型 建筑热负荷来源:使用 CitySim simu,该工具能在城市尺度下利用几何与物理简化模型估算建筑的热负荷,考虑了太阳辐射、室内活动、热损失等因素。

3. relationship with OpenAI Gym

  1. 继承 Gym 环境接口,实现与强化学习算法的无缝集成
  2. 研究者可直接将现有 Gym 智能体(如 DDPG、PPO、A3C 等)应用于建筑能耗控制。
  3. Gym 生态允许算法间的统一评测与可重现比较,就像 RL 研究中常见的 Atari 或 robotics 环境一样。

4. 流程图

part1

  1. 一个建筑对应一个 agent,智能体通过 Actor 网络(output:动作aa)和 Critic(output:qq)网络学习策略
  2. 输入为当前环境状态ss,输出是控制动作aa
  3. 训练时,agent 接收反馈(奖励rr,下一状态st+1s_{t+1}
  4. RL 经典交互循环为:(s,a,r,st+1)(s, a, r, s_{t+1})(state -> action -> reward -> next state)

part2

  1. 电网向各建筑提供电能。
  2. 电价(price)会随时间变化(例如分时电价或高峰电价)。
  3. 各建筑根据电价调整自己的用电需求(demand)。

强化学习的目标就是学会在不同电价和需求下,削峰填谷(peak shaving),以降低整体用电成本并平滑负荷曲线。

part3

  1. Heat pump(热泵):负责制冷或供热,是主要的能耗设备。
  2. Energy storage(储能系统):可以在低价时储能、高价时放能,用于平滑能耗。
  3. Building cooling loads(建筑冷负荷):代表建筑内部的能量需求(例如空调负荷)。 这三部分构成了一个局部能源系统并与电网交互,在此可以理解为数据集

part4 整个城市中有 n 栋建筑,对应 n 个 agents。各建筑既独立学习,又可以共享信息或通过价格信号间接协调,以此实现整体的分布式能耗优化 最终目标是让整个城区的负荷曲线更平滑,降低峰值功率需求。

demo

不演示了,因为是 v1 版本,我觉得已经过时了

conclusion

懒的说了,前面解释的很清楚了

CityLearn v2: Energy-flexible, resilient, occupant-centric, and carbon-aware management of grid-interactive communities

· 10 min read
zqqqj
super bug engineer 4 nlp,robot,cv,ml and ds

Abstract

随着越来越多的分布式能源成为需求侧基础设施的一部分,量化它们在社区规模上提供的能源灵活性非常重要,特别是要了解地理、气候和居住者行为差异对其有效性的影响,以及确定最佳控制策略以加速其在现实世界中的应用。CityLearn 为简单和先进的分布式能源控制算法提供基准测试环境,包括基于规则的、模型预测的和强化学习控制。本文介绍的 CityLearn v2 扩展了 CityLearn v1,它提供了一个模拟环境,利用美国建筑库存数据集的最终用途负载概况来创建虚拟网格交互社区,用于弹性、多代理分布式能源和具有动态乘员反馈的目标控制。这项工作详细介绍了 v2 环境设计,并提供了利用强化学习来管理电池储能系统充放电周期、车辆到电网控制以及热泵功率调制期间的热舒适性的应用示例

一. introduction

V1 版本很牛,RL 也很牛,但是出于一些缺陷我们创建了 v2 缺点: 灵活性有限 —— v1 的场景结构和数据接口固定,难以扩展到新的建筑类型、设备或能源载体; 可扩展性受限 —— v1 的配置较为僵化,不支持多层能源系统或跨区域交互; 可复现性不足 —— 不同研究者在构建实验时往往需要修改底层代码,导致实验结果难以公平比较。 V2 改进点: v2 版本在体系结构上进行了彻底重构,支持模块化设计和多层能源系统建模。研究者可以轻松地定义新的建筑类型、能源设备、价格信号、碳排放约束、以及能源共享机制。此外,v2 引入了统一的配置文件系统和标准化的评测接口,使不同实验能够方便地复现与对比。 通过这些改进,CityLearn v2 旨在成为一个面向未来的研究平台,支持: · 单智能体与多智能体强化学习; · 集中式与分布式控制; · 电力与热能的多能源协同; · 公平、透明的算法评测与结果共享。

常见缩写:

ESSs:energy storage systems DERs:Distributed energy resources,指分散在不同地点的小型能源设施,如太阳能电池板、风力涡轮机、燃料电池等,可以为当地的能源需求提供可再生能源。 EVs:Electric vehicles G2V:grid-to-vehicle V2G:and vehicle-to-grid PV:photovoltaic,光电伏打的,光电的 DR:demand response

二. environment

这是 Building model 的总体流程图

2.1 建筑模型(Building model)

针对小细节,由以下几个部分构成: 还需要声明的是,这些公式不需要转化为代码进行计算,这已经包含在运算包里了,这些公式主要是为了能了解环境中某一个细节是有哪些因素构成的(所以公式也较为简单)


2.1.1 电能与热能平衡(Electric and thermal energy balance)

建筑在每个时间步 ( t ) 的净能耗由其电力与热力流量平衡关系决定。
对任意建筑 ( b ),电力平衡可表示为:

Et,bgrid=Et,bloadEt,bPVEt,bdischarge+Et,bchargeE_{t,b}^{\text{grid}} = E_{t,b}^{\text{load}} - E_{t,b}^{\text{PV}} - E_{t,b}^{\text{discharge}} + E_{t,b}^{\text{charge}}

其中:

  • (E_{t,b}^{\text{grid}}):从电网汲取的净电能;
  • (E_{t,b}^{\text{load}}):总电力负荷(包括 HVAC、DHW、家电与电动车等);
  • (E_{t,b}^{\text{PV}}):光伏系统输出;
  • (E_{t,b}^{\text{discharge}})(E_{t,b}^{\text{charge}}):分别为储能放电与充电功率。

热力系统的能量守恒为:

Qt+1,bstorage=Qt,bstorage+ηcQt,bchargeΔt1ηdQt,bdischargeΔtQ_{t+1,b}^{\text{storage}} = Q_{t,b}^{\text{storage}} + \eta_c Q_{t,b}^{\text{charge}} \Delta t - \frac{1}{\eta_d} Q_{t,b}^{\text{discharge}} \Delta t

能量约束为:

QminQt,bstorageQmaxQ_{\min} \le Q_{t,b}^{\text{storage}} \le Q_{\max}

2.1.2 HVAC 与空间热动力学(HVAC and space thermal dynamics)

室内温度动态遵循一阶热阻–热容(RC)模型:

Tt+1,bin=Tt,bin+ΔtCb[Tt,boutTt,binRb+ηbHVACPt,bHVAC]T_{t+1,b}^{\text{in}} = T_{t,b}^{\text{in}} + \frac{\Delta t}{C_b} \left[ \frac{T_{t,b}^{\text{out}} - T_{t,b}^{\text{in}}}{R_b} + \eta_b^{\text{HVAC}} P_{t,b}^{\text{HVAC}} \right]

参数定义:

  • (R_b, C_b):建筑热阻与热容;
  • (T^{\text{in}}):室内温度;
  • (T^{\text{out}}):室外温度;
  • (\eta_b^{\text{HVAC}}):HVAC 效率;
  • (P_{t,b}^{\text{HVAC}}):HVAC 功率输入;
  • (\Delta t):时间步长。

2.1.3 生活热水系统(Domestic hot water, DHW)

热水储能的动态方程:

E_{t+1,b}^{\text{DHW}} = E_{t,b}^{\text{DHW}} + \eta_c P_{t,b}^{\text{heat}} \Delta t - \frac{1}{\eta_d} P_{t,b}^{\text{draw}} \Delta t

其中:

  • (P_{t,b}^{\text{heat}}):热水设备功率;
  • (P_{t,b}^{\text{draw}}):用水导致的热能损耗;
  • (\eta_c, \eta_d):充放热效率;
  • (E_{t,b}^{\text{DHW}}):热水罐储能。

2.1.4 电力储能系统(Electrical storage system)

电池能量更新方程:

Et+1,bbat=Et,bbat+ηcPt,bchΔt1ηdPt,bdisΔtE_{t+1,b}^{\text{bat}} = E_{t,b}^{\text{bat}} + \eta_c P_{t,b}^{\text{ch}} \Delta t - \frac{1}{\eta_d} P_{t,b}^{\text{dis}} \Delta t

功率约束:

0Pt,bchPmaxch,0Pt,bdisPmaxdis0 \le P_{t,b}^{\text{ch}} \le P_{\max}^{\text{ch}}, \quad 0 \le P_{t,b}^{\text{dis}} \le P_{\max}^{\text{dis}}

2.1.5 光伏发电(Photovoltaic generation)

Pt,bPV=AbPVηbPVGtP_{t,b}^{\text{PV}} = A_b^{\text{PV}} \cdot \eta_b^{\text{PV}} \cdot G_t

其中:

  • (A_b^{\text{PV}}):光伏阵列面积;
  • (\eta_b^{\text{PV}}):光伏转换效率;
  • (G_t):太阳辐照度。

2.1.6 电动车充电(Electric vehicle, EV)

Et+1,bEV=Et,bEV+ηcPt,bEVΔtE_{t+1,b}^{\text{EV}} = E_{t,b}^{\text{EV}} + \eta_c P_{t,b}^{\text{EV}} \Delta t

约束条件:

EminEVEt,bEVEmaxEV,0Pt,bEVPmaxEVE_{\min}^{\text{EV}} \le E_{t,b}^{\text{EV}} \le E_{\max}^{\text{EV}}, \quad 0 \le P_{t,b}^{\text{EV}} \le P_{\max}^{\text{EV}}

2.1.7 住户交互模型(Occupant interaction model)

Tt,bset,eff=Tt,bset,agent+δt,bT_{t,b}^{\text{set,eff}} = T_{t,b}^{\text{set,agent}} + \delta_{t,b}
  • (T_{t,b}^{\text{set,agent}}):智能体设定温度;
  • (\delta_{t,b}):住户偏差(可随机或基于舒适度模型)。

2.1.8 舒适度约束(Comfort constraints)

Tmin,bTt,binTmax,bT_{\min,b} \le T_{t,b}^{\text{in}} \le T_{\max,b}

惩罚项:

rt,bcomfort=αbmax(0,Tt,binTmax,b)βbmax(0,Tmin,bTt,bin)r_{t,b}^{\text{comfort}} = -\alpha_b \cdot \max(0, T_{t,b}^{\text{in}} - T_{\max,b}) - \beta_b \cdot \max(0, T_{\min,b} - T_{t,b}^{\text{in}})

2.1.9 成本与排放(Energy cost and emissions)

Ct,b=ptEt,bgrid,Zt,b=ϵtEt,bgridC_{t,b} = p_t \cdot E_{t,b}^{\text{grid}}, \quad Z_{t,b} = \epsilon_t \cdot E_{t,b}^{\text{grid}}

其中:

  • (p_t):时变电价;
  • (\epsilon_t):单位电能碳排放(kgCO₂e/kWh)。

2.1.10 总结(Summary)

建筑模型集成了电力、热力、储能、光伏、热水、电动车与住户行为的多物理量方程。
环境会自动根据这些方程更新建筑状态,为强化学习智能体提供观测、动作空间及奖励反馈。

**说明:**这些物理/能量学公式都已在框架内部实现。实际使用时主要通过配置场景与输出动作即可,但是理解这些公式有助于掌握环境机制与调参逻辑。所以依旧先给出具体公式

2.2 Power outage model(停电模型)

停电模型,用于模拟建筑在电网中断事件下的运行行为。该模型允许用户定义停电的持续时间、发生时刻、影响范围(单建筑或全区),

模型定义

用二值变量 o_t 表示时间步 t 的供电状态:

ot={1,若发生停电 (power outage)0,若正常供电 (normal operation)o_t = \begin{cases} 1, & \text{若发生停电 (power outage)} \\ 0, & \text{若正常供电 (normal operation)} \end{cases}

( o_t = 1) 时,建筑无法从电网获取电能,因此电网交互项被强制为零:

Et,bgrid=0E_{t,b}^{\text{grid}} = 0

此时,建筑的能量供应必须来自于:

  • 本地储能(电池或热储能);
  • 局部可再生能源(例如光伏发电);
  • 或削减部分非关键负荷(load shedding)。

能量守恒与储能支撑

在停电状态下,建筑能量平衡更新为:

Et+1,bstorage=Et,bstorage+ηcPt,bchargeΔt1ηdPt,bdischargeΔtE_{t+1,b}^{\text{storage}} = E_{t,b}^{\text{storage}} + \eta_c P_{t,b}^{\text{charge}}\Delta t - \frac{1}{\eta_d} P_{t,b}^{\text{discharge}}\Delta t

其中:

  • 储能系统在供电中断期间成为主要能量来源;
  • 动作空间可能受到额外约束(如最大放电功率);
  • 恢复供电后,系统自动切换回正常模式 (o_t = 0)

评估指标

CityLearn v2 为停电模型提供韧性相关指标,包括:

  • 自给率(self-sufficiency ratio):停电期间本地可满足的能量比例;
  • 负荷损失率(load loss ratio):停电期间未被满足的能量占比;
  • 恢复时间(recovery duration):储能充电恢复至正常状态所需时间。

小结

这是一个韧性(resilience)测试机制,可以帮助研究者评估强化学习控制策略在 电网韧性自恢复能力关键负荷保障 方面的性能。 该模块同样也内置于环境中,无需手动实现,只需在场景配置文件中指定停电时段与策略响应参数即可启用。

2.3 Key performance indicators(KPI)

就是指标,注意是个最小化指标(越小越好)

2.4 Datasets

没啥好说的

2.5 Environment design workflow

以 EULP dataset 为例,给出改框架的具体流程 1:数据收集 收集建筑元数据(如建筑类型、区域气候区、设备可用性等) 收集真实或合成的负荷/光伏/天气/电价/碳排放时间序列数据 2:负荷模拟与数据集准备 通过建筑热模型、设备模型、行为模型等将原始数据处理为可用的仿真输入(如每栋建筑每小时的负荷、PV 输出、储能状态等),构建环境配置文件(building attributes, DER sizing, shared storage, outage model 等),并生成场景 YAML/JSON 文件 3:控制模拟与结果报告 将环境载入框架,训练或评估 RL 或其它控制策略,接着执行动作-观测-奖励(RL 流程)循环,采集结果。最后根据 KPI 计算性能指标,输出报告或日志

三. Control

没啥用,反正就是阐讲 CityLearn 的控制接口结构及三种控制配置(单智能体、独立多智能体、协同多智能体),同时说明该框架不仅支持 RL,还兼容 RBC 与 MPC 等传统控制算法,以实现从启发式控制到学习控制的统一研究平台。

单智能体配置下,控制智能体与多个建筑呈一对多关系: 一个集中式智能体收集所有建筑的观测,为区域内所有 DER (分布式能源资源) 分配动作,并在每个时间步接收一个统一的奖励值,用以学习通用控制策略。这种方式类似于能源聚合商(energy aggregator)集中管理灵活负荷的分布式控制。

独立多智能体配置下,控制智能体与建筑是一对一关系: 每个建筑对应一个智能体,因此每个时间步产生与建筑数相等的奖励,并为每栋建筑分别学习独立的控制策略。

协同多智能体配置与独立多智能体类似, 但智能体之间可以共享信息,以实现协作目标(例如降低区域峰值负荷) 或竞争目标(例如在能源灵活性市场中进行价格竞标)。

四. Examples

篇幅原因,看下一篇吧。因为打算复现+解释

AI世界大入门

· 6 min read
zqqqj
super bug engineer 4 nlp,robot,cv,ml and ds

introduction

这篇文章旨在理解一大堆杂七杂八的,狗屁倒灶的,ai 方向的专用名词,例 AI,NLP,CV,深度学习,强化学习等等等 我相信初学者肯定会对这些名词感到困惑,就如同第一天我在面试时提出的问题: “我就只会数学建模和西瓜皮上的那些算法,好奇的问一下深度学习是啥?” 这个问题对现在的我来说也相当困惑,当然我相信写完这篇文章会让我的理顺这些东西

preliminary knowledge

首先,给我整个 AI 的框架

人工智能(Artificial Intelligence, AI)

├── 机器学习(Machine Learning, ML)
│ ├── 监督学习(Supervised Learning)
│ ├── 无监督学习(Unsupervised Learning)
│ ├── 强化学习(Reinforcement Learning, RL)
│ └── 其他(半监督、主动学习等)

├── 深度学习(Deep Learning, DL)
│ ├── 神经网络(CNN, RNN, Transformer)
│ ├── 自监督学习(Self-supervised)
│ ├── 生成模型(GAN, Diffusion, VAE)
│ └── PINNs / SciML(物理引导模型)

└── 应用领域
├── NLP(自然语言处理)
├── CV(计算机视觉)
├── Speech(语音)
└── 多模态 / 大模型(GPT, Gemini, etc.)

按照参差结构来讲,先从最简单的开始吧

1. 应用领域

搜索算法,符号推理这些其实都可以类比到实习中的“搜推广”(搜索推荐广告)算法工程师。这些东西其实都可以归结为应用领域或技术范式。如下所示

名称类别解释
NLP(自然语言处理)应用领域使用深度学习模型(如 Transformer)处理文本
CV(计算机视觉)应用领域使用 CNN 或 ViT 处理图像
Diffusion / GAN / VAE生成模型深度学习中的一种模型类型(生成任务)
大模型(Foundation Model)模型规模/范式基于深度学习(Transformer)的通用大模型,如 GPT、Gemini

2. 机器学习

机器学习就是大部分西瓜皮上的内容了,他的本意就是“让计算机自己去学习”,所以就会自然而言的牵扯到两大类别,即无监督学习和有监督学习,具体含义如下

类型中文含义训练方式示例
监督学习 (Supervised Learning)有标签学习已知输入与期望输出,通过最小化预测误差进行训练分类、回归、图像识别
无监督学习 (Unsupervised Learning)无标签学习在未标注数据中自动提取潜在结构或模式聚类、降维、自编码器
强化学习 (Reinforcement Learning)奖励驱动学习智能体与环境交互,通过试错获得最大累计奖励游戏 AI、机器人控制

对于强化学习而言,这部分会在后续着重介绍(因为我真的不懂)。但是一般而言,按照“想让机器学到什么”的定义,又可如下分类 · 监督学习用于“从已有示例中学习” · 无监督学习用于“理解数据结构” · 强化学习用于“学习行动策略”

3. 深度学习

深度学习是机器学习的一个重要分支,可以理解为使用多层神经网络(Neural Networks)自动学习数据特征的一类方法 换句话说,它依然遵循“最小化误差(loss function)”的思想,但与传统机器学习不同,
深度学习不再需要人手去“提取特征”,而是通过层层网络结构自动完成特征提取与抽象表示

从集合关系上看: 深度学习 ⊂ 神经网络 ⊂ 机器学习 ⊂ 人工智能 例子:

层级学到的特征(以图像识别为例)
第 1 层学到边缘、线条等简单模式
第 2 层学到角点、纹理、局部形状
第 3 层学到眼睛、鼻子等复杂结构
第 4 层及以上学到“猫脸”“汽车”等语义概念

difference between Deep Learning(DL) and machine Learning(ML)

尽管两者的本质都是最小化误差(如 loss function),但核心目的是不同的。ML 的目的是寻找使预测误差最小的参数。(比如在 n 次线性函数中找最优参数,神经网络调整通过 Adam 反向传播调整网络权重)

算法优化目标损失函数举例
线性回归拟合直线MSE(均方误差)
逻辑回归分类概率交叉熵(Cross Entropy)
SVM最大化间隔Hinge Loss
决策树信息增益最大化熵(Entropy)

DL 也确实是继承了这个想法(最小化误差),但它的关键区别在于 “模型复杂度” 和 “特征获取方式”

方面机器学习(ML)深度学习(DL)
特征需要人工提取(feature engineering)网络自动学习特征
模型结构简单模型(线性/树/核函数)多层非线性神经网络
参数规模少(几十~几百)多(百万~数十亿)
优化方法梯度下降、凸优化反向传播 + SGD/Adam
可解释性
数据需求较少巨量数据

其实可以理解为,DL 本质就是神经网络,只是这个网络又大(神经元)又深(多层)。深度学习不只是有神经网络,还包括优化算法、损失函数、正则化、数据增强等。神经网络是模型,深度学习是方法。 最大的目的就是:为了学习特征。区别在于可以更好的处理高度非线形问题

强化学习

说了这么多,终于可以讲强化学习了,强化学习是让智能体(Agent)通过与环境(Environment)交互,并根据奖励(Reward)反馈,学习最优决策策略(Policy)的方法。 需要注意的是,这是一个最大化优化,不是 loss 这样的最小化优化(奖励必然是越多越好)

继续举例五大基本元素

元素英文含义举例(机器人走迷宫)
Agent智能体负责做决策的学习者机器人本身
Environment环境Agent 所处的世界迷宫
State状态(s)当前环境的观测机器人现在的位置
Action动作(a)Agent 可以执行的操作向上/下/左/右移动
Reward奖励(r)环境给的反馈信号到终点+1,撞墙-1

p-code 如下:

for episode in range(N):
state = env.reset() # Agent观察环境(init啦其实就是)
while not done: # 开始训练
action = agent.select_action(state) # 选择一个动作
next_state, reward, done = env.step(action) # 环境给出新的状态和奖励;
agent.learn(state, action, reward, next_state) # Agent根据奖励更新策略
state = next_state

所以,强化学习不是预测一个矢量或标量,他的目的应该是学习一种策略

ps:some cases

领域应用场景说明
游戏AlphaGo、Atari、Dota2通过自我博弈学习最优策略
机器人控制行走、抓取、平衡连续动作空间优化
自动驾驶路径规划、决策控制学习最优驾驶策略
智能电网城市能源优化(CityLearn)控制能耗和储能系统
金融投资组合优化最大化长期收益