事件驱动优化:现实场景举例
本文为 事件驱动优化 举一个 能源互联网 的例子(搬运自这篇综述)。
1 场景
- 问题概述:
- 建筑微电网中,分布式风力发电 供给 电动汽车充电,这样的协调优化问题。
- 电动汽车停在建筑停车场 一段时间(已知),建筑用风电 / 常规电网为它充电,希望充电后的电量能撑过 下一段行程(已知)。
- 风电免费,如果风电没法 cover 电动汽车充电需求,则使用收费的常规电网充电。
- 优化目标:尽可能少利用 电网的常规发电。
- 问题详述:
- 系统在 t 时刻的状态: \(S_t=[W_t,E^n_t,L^n_t]~ ~(n=1,2, ...,N)\) ,其中 \(W_t\) 表示 t 时刻的风电发电功率,\(E^n_t\) 表示电动汽车 n 当前剩余的充电需求(为满足下一次出行,最少需要再充多少),\(L^n_t\) 表示电动汽车 n 当前剩余停车时间(距离下一次离开还有多久)。
- 决策变量 / action:假设充电功率恒定 P = 1kW,我们需要决策 每时刻 每辆车 充或不充,因此 t 时刻的行动可表示为 \(A_t=[a_t^1,a_t^2,\cdots,a_t^N]\),其中 at ∈ {0, 1}(决策的离散时间间隔 ∆t = 30mins)。
- 目标函数:总充电费用,\(J=\mathbb E[\sum_{t=1}^T f_t(S_t,A_t)]\),其中 \(f_t(S_t,A_t)=C_t\cdot\max(P_t-W_t,~0)\) 为电网买电费用,\(C_t\) 是电网电价。
2 事件驱动建模
- 事件定义:
- 第一类:风力发电水平切换。
- \(e_0(k_0)=\{\langle S_{t-1},S_t\rangle~|~W_{t-1}\notin[k_0P,(k_0+1)P),~W_t\in[k_0P,(k_0+1)P)\}\),其中 \(k_0=0,1,\cdots,(N-1)\),共 N 个事件。即,上一时刻电量不在 [kP, (k+1)P) 区间,这一时刻变到了该区间。
- \(e_0(N)=\{\langle S_{t-1},S_t\rangle~|~W_{t-1}\notin[NP,\infty),~W_t\in[NP,\infty\}\)。即,上一时刻电量 ≤ NP,这一时刻电量>NP。
- 这个事件定义 类似状态定义,仅根据变化后的状态,定义 o(n) 个事件。但也与状态不同,只有从其他状态 j 变到 状态 i 才会触发事件 i。
- 第二类:电动汽车 n 的充电需求。
- \(e_n(1)=\{\langle S_{t-1},S_t\rangle~|~E_{t-1}^n<L_{t-1}^nP,~E_t^n=L_t^nP,~L_t^n>0\}\)。即,上一时刻(如果所有时间都充电)时间富裕,但这一时刻(所有时间都充电)时间刚好够用。(剩余需充电量均不为零,剩余时间均不为零)
- \(e_n(2)=\{\langle S_{t-1},S_t\rangle~|~E_{t-1}^n>0,~L_{t-1}^n>0,~E_t^n=0,~L_t^n>0\}\)。即,从 未充满状态 变到了 充满状态()。(剩余时间均不为零)
- \(e_n(3)=\{\langle S_{t-1},S_t\rangle~|~L_{t-1}^n>0,~L_t^n=0\}\)。即,车辆 n 停车完毕,该离开了。
- 1 2 3 这三个事件是互斥的。
- 第一类 第二类事件可能同时发生,因此定义 3^N * (N+1) 个互斥的事件,第一项为 N 辆车 每辆车都可能处于 3 种事件之一,第二项为风力发电水平的 N+1 个事件。
- 第一类:风力发电水平切换。
- 实验验证:
- 详见综述原文第 7 页。
- outperform 了贪婪策略(到达后就开始充电,直到最小充电需求满足,然后停止),同时决策次数也变少了(真的变少了吗?)
- 优化方法:
- 综述里没有写,是我个人的猜想:
- 用 本文第二部分 的 ε-greedy 策略,一直跑模拟器 / 直接拿概率算期望,计算 Q 因子。
- 策略更新:取令 Q 因子 argmax 的 action 作为新 action;或者,如果 (3)式 不满足(并且不能强行假装满足),根据策略梯度 搜索局部最优策略。