事件驱动优化:概念、模型与重要性
1 什么是事件驱动
直观地讲,什么是事件驱动?
- 事件驱动:事件的发生 触发行动/决策。
- 比如跑步比赛,发令枪响(事件发生)你才决定开始跑,而不是每 0.1s 做一次“是否跑”的决策。
- 比如排队系统,一个人的到来(事件发生)触发了 “是否让他进入大厅排队” 的决策,否则没有决策的必要。
因此,对某些场景来说,事件驱动建模很合理。
2 一些数学定义
前提条件:系统是 包含有限状态的 平稳 Markov Chain。
首先,给出模型的数学表达,包括系统状态,事件 \(e\),收益 \(f\),策略 \(d\):
-
系统状态:状态空间 \(S={1, 2, \cdots, S}\),状态一般用 \(i~j\) 这样的字母来表示。
-
事件:
-
一个事件 \(e\) 是一组状态转移的集合,\(e=\{{\langle i,j \rangle}|i,j具有相同特征\}\)。
-
事件包含三类:可观事件、可控事件、自然转移事件。在事件驱动语境,“事件”通常指可观事件。搬运综述的例子:
例如排队接入控制问题: 定义系统状态为各个服务台中顾客数构成的向量, 对于该系统, 首先观测到顾客到达(可观事件发生), 基于该事件决定接收或拒绝到达的顾客(可控事件发生), 如被接收, 顾客随机进入某个服务台(自然转移事件发生), 这三个事件发生的顺序具有逻辑关系, 共同决定系统的状态转移. 然而, 在 MDP 中, 这三类事件被当作同时发生, 共同决定系统的一步状态转移.
-
输入输出:事件 \(e\)(状态转移集合)中,
- 输入状态集合为 \(I(e)=\{i\in S|\exists~j\in S~(\langle i,j\rangle\in e)\}\),状态 \(j\) 的输入集合为 \(I_j(e)=\{i\in S|\langle i,j\rangle\in e\}\);
- 输出状态集合为 \(O(e)=\{j\in S|\exists~i\in S~(\langle i,j\rangle\in e)\}\),状态 \(i\) 的输出集合为 \(O_i(e)=\{j\in S|\langle i,j\rangle\in e\}\)
-
事件空间:\(\mathcal E=\{e_\phi, e_1, \cdots,e_V\}\),\(e_\phi\) 代表不采取任何行动的事件集合,V 是事件总数。一般而言,各个事件互斥(交集为空)。
-
-
策略:策略 \(d\) 是 事件空间 \(\mathcal E\) → 动作空间 \(\mathcal A\) 的映射;决策只被事件类型决定,和状态没关系。
-
收益:报酬函数 \(f(i,a)=f(i,d(i))\),只取决于状态 \(i\) 和行动 \(a\) 。
然后,定义评价指标 \(\eta^h\) 为收益求和。公式里,大写 X E 为 系统状态 事件,\(E_0\) 是初始时刻观察到的事件。(和强化学习一样,但不知是否有 discount factor,综述里没有写 discount):
最优策略 \(d^*\) 就是 \(\eta\) 的 argmax 策略了。
3 为什么 事件驱动 而非 MDP
- 事件驱动 在克服维数灾难上有优势。MDP 状态太多,很可能随系统规模指数级增长,相反 事件可以定义的很简洁。
- 真实系统的状态并不好观测,观测不到状态就没法做 MDP,相反 事件是好观测的。
- MDP 太通用,难以利用系统结构 简化/加速 优化过程,相反 可以利用系统特殊结构定义事件。
4 顺便说一些背景
- 对系统优化的 MDP 解法,突破性工作可分为两类:
- 利用问题结构,合并状态 减少状态数量,或搜索策略时进行剪枝。
- 寻找 MDP 的近似求解,比如神经元动态规划 [11]、强化学习 [12]、近似动态规划 [13]。(冒出了将两者相结合的念头)
- 基于事件的优化模型,最早由曹希仁教授在2005 年提出 [23]。
- 原文中,文献 23 24 25 貌似是经典文献。