ADPRL - 近似动态规划和强化学习 - Note 6 - Mitigating the Curse of Dimensionality

Note 6 Mitigating the Curse of Dimensionality 减轻维度诅咒

6. Mitigating the Curse of Dimensionality 减轻维度诅咒

到目前为止,我们已经讨论了几种经典的 D P DP DP算法,即 V I 、 P I 、 O P I VI、PI、OPI VIPIOPI和优化的 λ \lambda λ- P I PI PI。所有这些方法中最关键的一个问题是维度诅咒,即在每一步,这些算法中的任何一种都需要更新所有状态的总成本函数。显然,当状态空间很大时,在 V I VI VI算法中计算总成本,或在 P I PI PI算法中推导 G I P GIP GIP,代价都会非常大。在这一节中,我们研究了两种流行的技术来缓解维度诅咒。

6.1 状态-动作总成本,即 Q Q Q函数 The state-action total cost, aka. the Q Q Q function

在上节中,我们研究了OPI算法的实用框架,使其在策略空间中更具数值可操作性。在计算出总成本函数后,可执行的策略可以通过定义3.5中所示的贪婪策略产生。更具体地说,对于每个状态 x ∈ X x \in \mathcal{X} xX,我们需要应用一个策略改进步骤,即反复解决最小化问题。显然,除了解决这些最小化问题的这种计算负担外,当状态空间很大时,维度诅咒很容易使情况恶化。

Watkins 提出,不要只评估所有状态的总成本,而要评估状态和动作对的总成本,以应对维数诅咒。这个概念被称为状态-动作总成本函数(state-action total cost function),也被称为 Q Q Q函数。具体来说,通过固定一对状态 x x x和动作 u u u与给定策略 π \pi π Q Q Q函数被定义为

Q π ( x , u ) = lim ⁡ N → ∞ E p π ( χ , μ ) [ ∑ k = 0 N γ k g ( x k , u k , x k + 1 ) ∣ x 0 = x , u 0 = u , u k = π ( x k ) ] (6.1) Q_{\pi}(x, u)=\lim _{N \rightarrow \infty} \mathbb{E}_{p_{\pi}(\chi, \mu)}\left[\sum_{k=0}^{N} \gamma^{k} g\left(x_{k}, u_{k}, x_{k+1}\right) \mid x_{0}=x, u_{0}=u, u_{k}=\pi\left(x_{k}\right)\right] \tag{6.1} Qπ(x,u)=NlimEpπ(χ,μ)[k=0Nγkg(xk,uk,xk+1)x0=x,u0=u,uk=π(xk)](6.1)

由于策略是确定性的马尔科夫过程,它与 成本函数 的联系可以被看作是

J π ( x ) = Q π ( x , π ( x ) ) (6.2) J^{\pi}(x)=Q_{\pi}(x, \pi(x)) \tag{6.2} Jπ(x)=Qπ(x,π(x))(6.2)

同样地,我们可以将 最优状态-动作函数(optimal state-action function) 定义为

Q ∗ ( x , u ) : = min ⁡ u 0 , … , u N lim ⁡ N → ∞ E p h ( χ , μ ) [ ∑ k = 0 N γ k g ( x k , u k , x k + 1 ) ∣ x 0 = x , u 0 = u ] (6.3) Q^{*}(x, u):=\min _{u_{0}, \ldots, u_{N}} \lim _{N \rightarrow \infty} \mathbb{E}_{p_{h}(\chi, \mu)}\left[\sum_{k=0}^{N} \gamma^{k} g\left(x_{k}, u_{k}, x_{k+1}\right) \mid x_{0}=x, u_{0}=u\right] \tag{6.3} Q(x,u):=u0,,uNminNlimEph(χ,μ)[k=0Nγkg(xk,uk,xk+1)x0=x,u0=u](6.3)

具体来说,最优动作价值函数 Q ∗ ( x , u ) Q^{*}(x, u) Q(x,u)是所有确定性马尔科夫策略的最小动作价值函数,即
Q ∗ ( x , u ) : = min ⁡ π ∈ P d m Q π ( x , u ) (6.4) Q^{*}(x, u):=\min _{\pi \in \mathfrak{P}_{d m}} Q_{\pi}(x, u) \tag{6.4} Q(x,u):=πPdmminQπ(x,u)(6.4)

而其与最优总成本函数的类似联系显示为
J ∗ ( x ) = min ⁡ u ∈ U Q ∗ ( x , u ) (6.5) J^{*}(x)=\min _{u \in \mathcal{U}} Q^{*}(x, u) \tag{6.5} J(x)=uUminQ(x,u)(6.5)

通过这样的构造,可以通过以下方式检索出最优策略。即,给定最优状态-动作总成本函数 Q ∗ Q^{*} Q,最优策略 π ∗ \pi^{*} π被构造为
π ∗ ( x ) ∈ argmin ⁡ u ∈ U Q ∗ ( x , u ) (6.6) \pi^{*}(x) \in \underset{u \in \mathcal{U}}{\operatorname{argmin}} Q^{*}(x, u) \tag{6.6} π(x)uUargminQ(x,u)(6.6)

此外,给定一个状态-动作总成本函数 Q Q Q,一个贪婪诱导策略 π g \pi_{g} πg
π g ( Q ) ( x ) ∈ argmin ⁡ u ∈ U Q ( x , u ) (6.7) \pi_{\mathfrak{g}}(Q)(x) \in \underset{u \in \mathcal{U}}{\operatorname{argmin}} Q(x, u) \tag{6.7} πg(Q)(x)uUargminQ(x,u)(6.7)

与贝尔曼算子类似,也可以将 状态-动作贝尔曼算子(state-action Bellman operator) 定义如下。

Proposition 6.1 Q Q Q 函数中的贝尔曼方程 (Bellman equation in Q Q Q functions)

给定一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},以及一个固定的确定性Markov策略 π \pi π,在任何状态-动作对 ( x , u ) (x, u) (x,u) Q Q Q函数满足以下等式

Q π ( x , u ) = E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ Q π ( x ′ , π ( x ′ ) ) ] (6.8) Q_{\pi}(x, u)=\mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma Q_{\pi}\left(x^{\prime}, \pi\left(x^{\prime}\right)\right)\right] \tag{6.8} Qπ(x,u)=Ep(xx,u)[g(x,u,x)+γQπ(x,π(x))](6.8)

其中, ( x ′ , u ′ ) \left(x^{\prime}, u^{\prime}\right) (x,u)是策略 π \pi π下的一对连续的状态 x x x和动作 u u u


Proof.

我们可以从总 Q Q Q函数的定义中直接推导为

Q π ( x , u ) : = lim ⁡ N → ∞ E p π ( χ , μ ) [ ∑ k = 0 N γ k g ( x k , u k , x k + 1 ) ∣ x 0 = x , u 0 = u , u k = π ( x k ) ] = lim ⁡ N → ∞ E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ E p π ( χ , μ ) [ ∑ k = 0 N γ k g ( x k , u k , x k + 1 ) ∣ x 0 = x ′ , u k = π ( x k ) ] ] = E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ Q π ( x ′ , π ( x ′ ) ) ] (6.9) \begin{aligned} Q_{\pi}(x, u): &=\lim _{N \rightarrow \infty} \mathbb{E}_{p_{\pi}(\chi, \mu)}\left[\sum_{k=0}^{N} \gamma^{k} g\left(x_{k}, u_{k}, x_{k+1}\right) \mid x_{0}=x, u_{0}=u, u_{k}=\pi\left(x_{k}\right)\right] \\ &=\lim _{N \rightarrow \infty} \mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma \mathbb{E}_{p_{\pi}(\chi, \mu)}\left[\sum_{k=0}^{N} \gamma^{k} g\left(x_{k}, u_{k}, x_{k+1}\right) \mid x_{0}=x^{\prime}, u_{k}=\pi\left(x_{k}\right)\right]\right] \\ &=\mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma Q_{\pi}\left(x^{\prime}, \pi\left(x^{\prime}\right)\right)\right] \end{aligned} \tag{6.9} Qπ(x,u):=NlimEpπ(χ,μ)[k=0Nγkg(xk,uk,xk+1)x0=x,u0=u,uk=π(xk)]=NlimEp(xx,u)[g(x,u,x)+γEpπ(χ,μ)[k=0Nγkg(xk,uk,xk+1)x0=x,uk=π(xk)]]=Ep(xx,u)[g(x,u,x)+γQπ(x,π(x))](6.9)


按照构建 J J J中的贝尔曼算子的同样思路,我们可以在 Q Q Q函数中定义一个相关的贝尔曼算子。

定义6.1(状态-动作贝尔曼算子) (The State-action Bellman Operator)

给出一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},令 K : = ∣ X ∣ K:=|\mathcal{X}| K:=X L : = ∣ U ∣ L:=|\mathcal{U}| L:=U。 给出一个状态-动作总成本 Q ∈ R K × L Q \in \mathbb{R}^{K \times L} QRK×L,状态-动作贝尔曼算子定义如下

H π : R K × L → R K × L , Q ↦ H π ( Q ) (6.10) \mathrm{H}_{\pi}: \mathbb{R}^{K \times L} \rightarrow \mathbb{R}^{K \times L}, \quad Q \mapsto \mathrm{H}_{\pi}(Q) \tag{6.10} Hπ:RK×LRK×L,QHπ(Q)(6.10)

H π ( Q ) ( x , u ) = E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ Q ( x ′ , π ( x ′ ) ) ] (6.11) \mathrm{H}_{\pi}(Q)(x, u)=\mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma Q\left(x^{\prime}, \pi\left(x^{\prime}\right)\right)\right] \tag{6.11} Hπ(Q)(x,u)=Ep(xx,u)[g(x,u,x)+γQ(x,π(x))](6.11)

其中 ( x ′ , u ′ ) \left(x^{\prime}, u^{\prime}\right) (x,u)是状态 x x x和动作 u u u的连续对。

同样地,我们可以在最优 Q Q Q函数中得到贝尔曼方程。

Proposition 6.2 无限范围的最优贝尔曼方程 (Optimal Bellman equation for infinite horizon)

给定一个无限范围MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},一个最优状态-动作总成本函数 Q ∗ Q^{*} Q满足以下等式

Q ∗ ( x , u ) = E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ min ⁡ u ′ Q ∗ ( x ′ , u ′ ) ] (6.12) Q^{*}(x, u)=\mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma \min _{u^{\prime}} Q^{*}\left(x^{\prime}, u^{\prime}\right)\right] \tag{6.12} Q(x,u)=Ep(xx,u)[g(x,u,x)+γuminQ(x,u)](6.12)

其中 ( x ′ , u ′ ) (x^{\prime}, u^{\prime}) (x,u)是状态 x x x和动作 u u u的连续对。


Proof

回顾最优 Q Q Q函数的属性,我们有

Q ∗ ( x , u ) = min ⁡ π ∈ P d m Q π ( x , u ) = min ⁡ π E p π ( x ′ ∣ x ) [ g ( x , u , x ′ ) + γ Q π ( x ′ , π ( x ′ ) ) ] = E p π ( x ′ ∣ x ) [ g ( x , u , x ′ ) + γ J ∗ ( x ′ ) ] = E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ min ⁡ u ′ Q ∗ ( x ′ , u ′ ) ] (6.13) \begin{aligned} Q^{*}(x, u) &=\min _{\pi \in \mathbb{P}_{d m}} Q_{\pi}(x, u) \\ &=\min _{\pi} \mathbb{E}_{p_{\pi}\left(x^{\prime} \mid x\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma Q_{\pi}\left(x^{\prime}, \pi\left(x^{\prime}\right)\right)\right] \\ &=\mathbb{E}_{p_{\pi}\left(x^{\prime} \mid x\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma J^{*}\left(x^{\prime}\right)\right] \\ &=\mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma \min _{u^{\prime}} Q^{*}\left(x^{\prime}, u^{\prime}\right)\right] \end{aligned} \tag{6.13} Q(x,u)=πPdmminQπ(x,u)=πminEpπ(xx)[g(x,u,x)+γQπ(x,π(x))]=Epπ(xx)[g(x,u,x)+γJ(x)]=Ep(xx,u)[g(x,u,x)+γuminQ(x,u)](6.13)


Remark 6.1

显然, Q Q Q中的最优贝尔曼方程的证明比 J J J中的对应方的证明要简单得多。此外,状态总成本函数 J J J中的最优贝尔曼方程也可以通过回顾状态总成本函数和状态-动作总成本函数之间的关系来证明。我们对公式(6.12)的两边进行最小化处理

min ⁡ u ∈ U Q ∗ ( x , u ) = min ⁡ u ∈ U E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ min ⁡ u ′ Q ∗ ( x ′ , u ′ ) ] (6.14) \min _{u \in \mathcal{U}} Q^{*}(x, u)=\min _{u \in \mathcal{U}} \mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma \min _{u^{\prime}} Q^{*}\left(x^{\prime}, u^{\prime}\right)\right] \tag{6.14} uUminQ(x,u)=uUminEp(xx,u)[g(x,u,x)+γuminQ(x,u)](6.14)

根据公式 ( 6.5 ) (6.5) (6.5)中最优 Q Q Q函数的属性,我们有

J ∗ ( x ) = min ⁡ u ∈ U E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ J ∗ ( x ′ ) ] (6.15) J^{*}(x)=\min _{u \in \mathcal{U}} \mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma J^{*}\left(x^{\prime}\right)\right] \tag{6.15} J(x)=uUminEp(xx,u)[g(x,u,x)+γJ(x)](6.15)

这仅仅是 J J J中的最佳贝尔曼方程。

定义6.2 最优状态-动作贝尔曼算子 (The Optimal State-action Bellman Operator)

给定一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},令 K : = ∣ X ∣ K:=|\mathcal{X}| K:=X L : = ∣ U ∣ L:=|\mathcal{U}| L:=U。 给定一个状态-动作总成本 Q ∈ R K × L Q\in \mathbb{R}^{K\times L} QRK×L,最优状态-动作贝尔曼算子定义如下
H g : R K × L → R K × L , Q ↦ H g ( Q ) (6.16) \mathrm{H}_{\mathfrak{g}}: \mathbb{R}^{K \times L} \rightarrow \mathbb{R}^{K \times L}, \quad Q \mapsto \mathrm{H}_{\mathfrak{g}}(Q) \tag{6.16} Hg:RK×LRK×L,QHg(Q)(6.16)

H g Q ( x , u ) = min ⁡ u ′ E p ( x ′ ∣ x , u ) [ g ( x , u , x ′ ) + γ Q ( x ′ , u ′ ) ] (6.17) \mathrm{H}_{\mathfrak{g}} Q(x, u)=\min _{u^{\prime}} \mathbb{E}_{p\left(x^{\prime} \mid x, u\right)}\left[g\left(x, u, x^{\prime}\right)+\gamma Q\left(x^{\prime}, u^{\prime}\right)\right] \tag{6.17} HgQ(x,u)=uminEp(xx,u)[g(x,u,x)+γQ(x,u)](6.17)

显而易见, Q Q Q中的两个贝尔曼算子与 J J J中的对应算子具有相同的属性。在此,我们只介绍这些结果,不做进一步证明。

Lemma 6.1 Q Q Q-贝尔曼算子的单调性属性 (Monotonicity property of Q Q Q-Bellman operator)

给定一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},以及 Q , Q ′ ∈ R K × L Q, Q^{\prime}\in \mathbb{R}^{K \times L} Q,QRK×L。 如果 Q ( x , u ) ≤ Q ′ ( x , u ) Q(x, u) \leq Q^{\prime}(x, u) Q(x,u)Q(x,u) 对于所有 ( x , u ) ∈ X × U (x, u) \in \mathcal{X} \times \mathcal{U} (x,u)X×U 都成立,那么我们有

(1) H π k Q ( x , u ) ≤ H π k Q ′ ( x , u ) \mathrm{H}_{\pi}^{k} Q(x, u) \leq \mathrm{H}_{\pi}^{k} Q^{\prime}(x, u) HπkQ(x,u)HπkQ(x,u),

(2) H g k Q ( x , u ) ≤ H g k Q ′ ( x , u ) \mathrm{H}_{\mathfrak{g}}^{k} Q(x, u) \leq \mathrm{H}_{\mathfrak{g}}^{k} Q^{\prime}(x, u) HgkQ(x,u)HgkQ(x,u).

Lemma 6.2 Q Q Q-贝尔曼算子的恒定转移特性(Constant shift property of Q Q Q-Bellman operator)

给出一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ}, 和 Q , Q ′ ∈ R K × L Q, Q^{\prime}\in \mathbb{R}^{K \times L} Q,QRK×L。令 Q ′ Q^{\prime} Q Q Q Q的恒定移位函数,即 Q ′ ( x , u ) = Q ( x , u ) + c Q^{\prime}(x, u)=Q(x, u)+c Q(x,u)=Q(x,u)+c。那么我们有

(1) H π k Q ′ ( x , u ) = H π k Q ( x , u ) + γ k c \mathrm{H}_{\pi}^{k} Q^{\prime}(x, u)=\mathrm{H}_{\pi}^{k} Q(x, u)+\gamma^{k} c HπkQ(x,u)=HπkQ(x,u)+γkc,

(2) H a k Q ′ ( x , u ) = H g k Q ( x , u ) + γ k c \mathrm{H}_{\mathrm{a}}^{k} Q^{\prime}(x, u)=\mathrm{H}_{\mathrm{g}}^{k} Q(x, u)+\gamma^{k} c HakQ(x,u)=HgkQ(x,u)+γkc.

这样,我们就可以证明 Q Q Q中两个贝尔曼算子的收缩特性了。

Proposition 6.3 贝尔曼算子在 Q Q Q函数中的收缩特性 (Contraction property of the Bellman operators in Q Q Q function)

给定一个无限范围MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},两个最优贝尔曼算子 H g \mathrm{H}_{\mathfrak{g}} Hg H π \mathrm{H}_{\pi} Hπ是相对于无穷范数 γ \gamma γ的模收缩,即,对于 Q , Q ′ ∈ R K × L Q, Q^{\prime} \in \mathbb{R}^{K \times L} Q,QRK×L

∥ H g Q − H g Q ′ ∥ ∞ ≤ γ ∥ Q − Q ′ ∥ ∞ (6.18) \left\|\mathrm{H}_{\mathfrak{g}} Q-\mathrm{H}_{\mathfrak{g}} Q^{\prime}\right\|_{\infty} \leq \gamma\left\|Q-Q^{\prime}\right\|_{\infty} \tag{6.18} HgQHgQγQQ(6.18)

∥ H π Q − H π Q ′ ∥ ∞ ≤ γ ∥ Q − Q ′ ∥ ∞ . (6.19) \left\|\mathrm{H}_{\pi} Q-\mathrm{H}_{\pi} Q^{\prime}\right\|_{\infty} \leq \gamma\left\|Q-Q^{\prime}\right\|_{\infty} . \tag{6.19} HπQHπQγQQ.(6.19)


Proof.
令初始误差 c : = ∥ Q − Q ′ ∥ ∞ c:=\left\|Q-Q^{\prime}\right\|_{\infty} c:=QQ。然后对于所有 ( x , u ) ∈ X × U (x, u) \in \mathcal{X} \times \mathcal{U} (x,u)X×U,我们有

Q ( x , u ) − c ≤ Q ′ ( x , u ) ≤ Q ( x , u ) + c (6.20) Q(x, u)-c \leq Q^{\prime}(x, u) \leq Q(x, u)+c \tag{6.20} Q(x,u)cQ(x,u)Q(x,u)+c(6.20)

通过应用 Q Q Q最优贝尔曼算子的单调性属性和恒定位移属性,对于所有 ( x , u ) ∈ X × U (x, u) \in \mathcal{X} \times \mathcal{U} (x,u)X×U,我们得到
H g Q ( x , u ) − γ c ≤ H g Q ′ ( x , u ) ≤ H g Q ( x , u ) + γ c . (6.21) \mathrm{H}_{\mathfrak{g}} Q(x, u)-\gamma c \leq \mathrm{H}_{\mathfrak{g}} Q^{\prime}(x, u) \leq \mathrm{H}_{\mathfrak{g}} Q(x, u)+\gamma c . \tag{6.21} HgQ(x,u)γcHgQ(x,u)HgQ(x,u)+γc.(6.21)

作为结果,我们有

∥ H g Q − H g Q ′ ∥ ∞ ≤ γ c = γ ∥ Q − Q ′ ∥ ∞ . (6.22) \left\|\mathrm{H}_{\mathfrak{g}} Q-\mathrm{H}_{\mathfrak{g}} Q^{\prime}\right\|_{\infty} \leq \gamma c=\gamma\left\|Q-Q^{\prime}\right\|_{\infty} . \tag{6.22} HgQHgQγc=γQQ.(6.22)

同样的论证也适用于贝尔曼算子 H π \mathrm{H}_{\pi} Hπ


显然, Q Q Q中的两个贝尔曼算子都表现出与它们在状态总成本函数中的对应物完全相同的属性。因此,所有经典的DP算法都可以用同样的方式构造,并且与它们的对应算法有相同的收敛特性。在Algorithm 5中给出了 Q Q Q函数中的价值迭代算法,称为 Q Q Q-VI算法,在Algorithm 6中描述了 Q Q Q函数中的最优策略迭代算法。在下文中,我们只描述 Q Q Q-VI算法的收敛特性,而将 Q Q Q中其他DP算法的证明留为练习。

在这里插入图片描述

在这里插入图片描述

Theorem 6.1 Q Q Q-VI算法的收敛性 (Convergence of the Q Q Q-VI algorithm)

给定一个无限范围的MDP { X , U , p , g , γ } \{\mathcal{X}, \mathcal{U}, p, g, \gamma\} {X,U,p,g,γ},对于任何有界的状态-动作总成本函数 Q ∈ R K × L Q\in \mathbb{R}^{K \times L} QRK×L,我们对所有 ( x , u ) ∈ X × U (x, u)\in \mathcal{X} \times \mathcal{U} x,uX×U

Q ∗ ( x , u ) = lim ⁡ k → ∞ H g k Q ( x , u ) Q^{*}(x, u)=\lim _{k \rightarrow \infty} \mathrm{H}_{\mathfrak{g}}^{k} Q(x, u) Q(x,u)=klimHgkQ(x,u)


Proof.
这个结果是直接来自于巴拿赫固定点定理。


6.2 异步动态规划 Asynchronous Dynamic Programming

尽管维数的诅咒可以通过定义 Q Q Q函数来稍微缓解,但DP算法的构建需要在冻结总成本的估计值的同时执行。与其在每次扫描中冻结和更新所有的状态,不如简单地考虑一种异步更新策略的可能性,即分布式DP范式(distributive DP paradigm)。也就是说,我们的目标是将DP算法的计算并行化,以获得计算效率或减少存储的好处。

值得注意的是,同步VI 的标准实现确实是坐标下降算法(coordinate descent algorithm)的一个版本,它也被称为雅可比算法(Jacobi algorithm)。也就是说,所有状态的总成本函数同时被单独更新。一个简单的潜在改进是在没有完成全部的更新扫描的情况下执行更新。这样的策略是已知的高斯-赛德尔算法(Gauss-Seidel algorithm)。由于单调性和恒定位移是正常贝尔曼算子和最优贝尔曼算子的两个共同属性,我们提出以下两个假设来支持我们对高斯-塞德尔定点算法收敛特性的进一步分析。请注意,下面的结果并没有指定任何具体的DP算法,所以是可以作为 J J J Q Q Q中DP的通用框架。

Assumption 6.1 单调性 (Monotonicity)

T : R K . → R K \mathrm{T}: \mathbb{R}^{K}. \rightarrow \mathbb{R}^{K} T:RK.RK 是一个自映射。给定 J , J ′ ∈ R K J, J^{\prime}\in \mathbb{R}^{K} J,JRK,如果 J ≤ J ′ J\leq J^{\prime} JJ,我们假定 T \mathrm{T} T的单调性为
T J ≤ T J ′ (6.23) \mathrm{T} J \leq \mathrm{T} J^{\prime} \tag{6.23} TJTJ(6.23)

Assumption 6.2 恒定位移 (Constant shift)

T : R K . → R K \mathrm{T}: \mathbb{R}^{K}. \rightarrow\mathbb{R}^{K} T:RK.RK 是一个自映射。给定 J ′ : X → R J^{\prime}: \mathcal{X} \rightarrow \mathbb{R} J:XR J J J的恒定移位函数,即 J ′ ( x ) = J ( x ) + c J^{\prime}(x)=J(x)+c J(x)=J(x)+c对于所有 x ∈ X x \in \mathcal{X} xX。那么,我们假设 T \mathrm{T} T的恒定移位为
T J ′ ( x ) = T J ( x ) + γ c . (6.24) \mathrm{T} J^{\prime}(x)=\mathrm{T} J(x)+\gamma c . \tag{6.24} TJ(x)=TJ(x)+γc.(6.24)
有了这两个假设,很容易看出自映射 T \mathrm{T} T是一个收缩。

Theorem 6.2 映射 T \mathrm{T} T的收敛性

令自映射 T : R K → R K \mathrm{T}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K} T:RKRK满足假设 Assumptions 6.1和6.2。那么 T \mathrm{T} T是一个 γ \gamma γ对于最大范数的收缩映射,即给定任意 J , J ′ ∈ R K J, J^{\prime} \in \mathbb{R}^{K} J,JRK,以下不等式成立

∥ T J − T J ′ ∥ ∞ ≤ γ ∥ J − J ′ ∥ ∞ (6.25) \left\|\mathrm{T} J-\mathrm{T} J^{\prime}\right\|_{\infty} \leq \gamma\left\|J-J^{\prime}\right\|_{\infty} \tag{6.25} TJTJγJJ(6.25)


Proof.
给定 J , J ′ ∈ R K J, J^{\prime} \in \mathbb{R}^{K} J,JRK,我们定义 c : = ∥ J − J ′ ∥ ∞ c:=\left\|J-J^{\prime}\right\|_{\infty} c:=JJ。对于所有 x x x,我们有
J ( x ) − c ≤ J ′ ( x ) ≤ J ( x ) + c (6.26) J(x)-c \leq J^{\prime}(x) \leq J(x)+c \tag{6.26} J(x)cJ(x)J(x)+c(6.26)

单调性和恒定位移属性都确保了
T J ( x ) − γ c ≤ T J ′ ( x ) ≤ T J ( x ) + γ c (6.27) \mathrm{T} J(x)-\gamma c \leq \mathrm{T} J^{\prime}(x) \leq \mathrm{T} J(x)+\gamma c \tag{6.27} TJ(x)γcTJ(x)TJ(x)+γc(6.27)

结果即证。


现在,让我们开始构建一个用于构建高斯-赛德尔(Gauss-Seidel)扫描的复合算子。给定一个收缩 T : R K → R K \mathrm{T}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K} T:RKRK,定义 τ i : R K → R \tau_{i}: \mathbb{R}^{K} \rightarrow \mathbb{R} τi:RKR为分量上的映射,也就是说

T : R K → R K , J ↦ [ τ 1 ( J ) , … , τ K ( J ) ] ⊤ (6.28) \mathrm{T}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K}, \quad J \mapsto\left[\tau_{1}(J), \ldots, \tau_{K}(J)\right]^{\top} \tag{6.28} T:RKRK,J[τ1(J),,τK(J)](6.28)

然后,令 J = [ v 1 , … , v K ] ⊤ ∈ R K J=\left[v_{1}, \ldots, v_{K}\right]^{\top} \in \mathbb{R}^{K} J=[v1,,vK]RK, 对于所有 i = i= i= 1 , … , K 1, \ldots, K 1,,K 我们定义分量上的贝尔曼算子为

T i : R K → R K , J ↦ T i ( J ) , (6.29) \mathrm{T}_{i}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K}, \quad J \mapsto \mathrm{T}_{i}(J), \tag{6.29} Ti:RKRK,JTi(J),(6.29)

( T i ( J ) ) j = { τ i ( J ) , j = i v j ,  otherwise  (6.30) \left(\mathrm{T}_{i}(J)\right)_{j}= \begin{cases}\tau_{i}(J), & j=i \\ v_{j}, & \text { otherwise }\end{cases} \tag{6.30} (Ti(J))j={τi(J),vj,j=i otherwise (6.30)
然后,高斯-塞德尔算法的一次扫描可以被表述为分量上的贝尔曼算子的组成部分
T g s : R K → R K , J ↦ ( T K ∘ … ∘ T 1 ) J (6.31) \mathrm{T}_{g s}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K}, \quad J \mapsto\left(\mathrm{T}_{K} \circ \ldots \circ \mathrm{T}_{1}\right) J \tag{6.31} Tgs:RKRK,J(TKT1)J(6.31)

Lemma 6.3

高斯-塞德尔贝尔曼算子 T g s \mathrm{T}_{g s} Tgs是相对于无穷范数的模的 γ \gamma γ收缩,即对于 J , J ′ ∈ R K J, J^{\prime} \in \mathbb{R}^{K} J,JRK,我们有
∥ T g s J − T g s J ′ ∥ ∞ ≤ γ ∥ J − J ′ ∥ ∞ . (6.32) \left\|\mathrm{T}_{g s} J-\mathrm{T}_{g s} J^{\prime}\right\|_{\infty} \leq \gamma\left\|J-J^{\prime}\right\|_{\infty} . \tag{6.32} TgsJTgsJγJJ.(6.32)


Proof.
c : = ∥ J − J ′ ∥ ∞ c:=\left\|J-J^{\prime}\right\|_{\infty} c:=JJ。然后对于所有 x ∈ X x \in \mathcal{X} xX, 我们有

J ( x ) − c ≤ J ′ ( x ) ≤ J ( x ) + c . (6.33) J(x)-c \leq J^{\prime}(x) \leq J(x)+c . \tag{6.33} J(x)cJ(x)J(x)+c.(6.33)

我们按照 T i \mathrm{T}_{i} Ti的排序,将所有状态列举为 { x 1 , … , x K } = X \left\{x_{1}, \ldots, x_{K}\right\}=\mathcal{X} {x1,,xK}=X。然后,将一个分量上的贝尔曼算子 T i \mathrm{T}_{i} Ti应用到上述不等式队列中,就可以得到

T i J ( x i ) − γ c ≤ T i J ′ ( x i ) ≤ T i J ( x i ) + γ c (6.34) \mathrm{T}_{i} J\left(x_{i}\right)-\gamma c \leq \mathrm{T}_{i} J^{\prime}\left(x_{i}\right) \leq \mathrm{T}_{i} J\left(x_{i}\right)+\gamma c \tag{6.34} TiJ(xi)γcTiJ(xi)TiJ(xi)+γc(6.34)

然后对于所有 j ≠ i j \neq i j=i

T i J ( x j ) − c ≤ T i J ′ ( x j ) ≤ T i J ( x j ) + c . (6.35) \mathrm{T}_{i} J\left(x_{j}\right)-c \leq \mathrm{T}_{i} J^{\prime}\left(x_{j}\right) \leq \mathrm{T}_{i} J\left(x_{j}\right)+c . \tag{6.35} TiJ(xj)cTiJ(xj)TiJ(xj)+c.(6.35)
因此,在应用高斯-塞德尔-贝尔曼算子的一个步骤后,我们对所有 x ∈ X x \in \mathcal{X} xX
T g s J ( x ) − γ c ≤ T g s J ′ ( x ) ≤ T g s J ( x ) + γ c , (6.36) \mathrm{T}_{g s} J(x)-\gamma c \leq \mathrm{T}_{g s} J^{\prime}(x) \leq \mathrm{T}_{g s} J(x)+\gamma c, \tag{6.36} TgsJ(x)γcTgsJ(x)TgsJ(x)+γc,(6.36)

然后对于所有 x ∈ X x \in \mathcal{X} xX

∣ T g s J ( x ) − T g s J ′ ( x ) ∣ ≤ γ c = γ ∣ J ( x ) − J ′ ( x ) ∣ . (6.37) \left|\mathrm{T}_{g s} J(x)-\mathrm{T}_{g s} J^{\prime}(x)\right| \leq \gamma c=\gamma\left|J(x)-J^{\prime}(x)\right| . \tag{6.37} TgsJ(x)TgsJ(x)γc=γJ(x)J(x).(6.37)


Proposition 6.4(高斯-赛德尔VI算法的收敛性)(Convergence of Gauss-Seidel VI algorithm)

令高斯-赛德尔VI算法(Algorithm 7)从初始估计值 J ∈ R K J\in \mathbb{R}^{K} JRK迭代到无穷大,那么它收敛到唯一的固定点 J ∗ J^{*} J,即

lim ⁡ k → ∞ T g s k J = J ∗ . (6.38) \lim _{k \rightarrow \infty} \mathrm{T}_{g s}^{k} J=J^{*} . \tag{6.38} klimTgskJ=J.(6.38)


Proof.
这个结果来自于巴拿赫固定点算法的标准论证。


为了进一步利用并行化的潜在好处,我们可以将选择分量更新的过程随机化。也就是说,与其像高斯-赛德尔VI算法那样依次更新所有状态的总成本函数,不如随机更新状态的总成本函数,见 Algorithm 8 8 8

在这里插入图片描述

η \eta η是一个离散的随机变量,其结果为 { 1 , … , K } . \{1, \ldots, K\}. {1,,K}. 我们假设其概率密度函数 p ( η ) > 0 p(\eta)>0 p(η)>0为所有可能结果。如果我们从 p ( η ) > 0 p(\eta)>0 p(η)>0中抽取无限多的独立样本,那么它就能保证 J J J的所有坐标被无限次地访问。也就是说,将有一个有限数 k k k,使 J J J的所有坐标至少被访问一次。给出 k k k独立样本 η ˉ = { η 1 , … , η k } \bar{\eta}=\left\{\eta_{1}, \ldots, \eta_{k}\right\} ηˉ={η1,,ηk} 按照 p ( η ) > 0 p(\eta)>0 p(η)>0抽取,我们构建一个自映射为
T η ˉ : R K → R K , J ↦ ( T η k ∘ … ∘ T η 1 ) J (6.39) \mathrm{T}_{\bar{\eta}}: \mathbb{R}^{K} \rightarrow \mathbb{R}^{K}, \quad J \mapsto\left(\mathrm{T}_{\eta_{k}} \circ \ldots \circ \mathrm{T}_{\eta_{1}}\right) J \tag{6.39} Tηˉ:RKRK,J(TηkTη1)J(6.39)

通过采用与证明Lemma 6.3中高斯-赛德尔贝尔曼算子的收缩特性相同的论据,我们得出以下结果。

Lemma 6.4 随机贝尔曼算子的收敛性

η ˉ = { η 1 , … , η k } \bar{\eta}=\left\{\eta_{1}, \ldots, \eta_{k}\right\} ηˉ={η1,,ηk} k k k独立样本,从 p ( η ) > 0 p(\eta)>0 p(η)>0中抽取,其中 η ∈ { 1 , … , K } \eta \in\{1, \ldots, K\} η{1,,K}。然后,有一个有限大的 k k k,所以随机贝尔曼算子 T η ˉ \mathrm{T}_{\bar{\eta}} Tηˉ是相对于无穷范数的模的 γ \gamma γ收缩,即对于 J , J ′ ∈ R K J, J^{\prime}\in \mathbb{R}^{K} J,JRK,我们有

∥ T η ˉ J − T η ˉ J ′ ∥ ∞ ≤ γ ∥ J − J ′ ∥ ∞ (6.40) \left\|\mathrm{T}_{\bar{\eta}} J-\mathrm{T}_{\bar{\eta}} J^{\prime}\right\|_{\infty} \leq \gamma\left\|J-J^{\prime}\right\|_{\infty} \tag{6.40} TηˉJTηˉJγJJ(6.40)


Proof.
这里的证明概念与证明高斯-赛德尔VI算法的收敛性完全相同。令 c : = ∥ J − J ′ ∥ ∞ c:=\left\|J-J^{\prime}\right\|_{\infty} c:=JJ。由于 k k k被假定为足够大,可以至少访问每个状态一次,很容易看出,在应用随机贝尔曼算子 T η ˉ \mathrm{T}_{\bar{\eta}} Tηˉ的一步后,我们对所有 x ∈ X x\in \mathcal{X} xX有,

T η ˉ J ( x ) − γ c ≤ T η ˉ J ′ ( x ) ≤ T η ˉ J ( x ) + γ c (6.41) \mathrm{T}_{\bar{\eta}} J(x)-\gamma c \leq \mathrm{T}_{\bar{\eta}} J^{\prime}(x) \leq \mathrm{T}_{\bar{\eta}} J(x)+\gamma c \tag{6.41} TηˉJ(x)γcTηˉJ(x)TηˉJ(x)+γc(6.41)

然后对于 x ∈ X x \in \mathcal{X} xX有,

∣ T η ˉ J ( x ) − T η ˉ J ′ ( x ) ∣ ≤ γ c = γ ∣ J ( x ) − J ′ ( x ) ∣ (6.42) \left|\mathrm{T}_{\bar{\eta}} J(x)-\mathrm{T}_{\bar{\eta}} J^{\prime}(x)\right| \leq \gamma c=\gamma\left|J(x)-J^{\prime}(x)\right| \tag{6.42} TηˉJ(x)TηˉJ(x)γc=γJ(x)J(x)(6.42)

证明结束。


显然,由于随机VI算法部署了一个完全随机的策略来挑选更新的状态,整个算法可以被看作是多个收缩的串联。在下文中,我们首先展示一个关于随机化固定点算法的一般结果。

Theorem 6.3 随机化固定点算法的收敛性 (Convergence of randomised fixed point algorithm)

对于 i ∈ N i \in \mathbb{N} iN给出一组收缩映射 T ( i ) : X → X \mathrm{T}^{(i)}: \mathcal{X} \rightarrow \mathcal{X} T(i):XX,且有收缩常数 γ i \gamma_{i} γi,并假定所有收缩映射都有相同的唯一固定点,即 T ( i ) ( J ∗ ) = J ∗ \mathrm{T}^{(i)}\left(J^{*}\right)=J^{*} T(i)(J)=J,以及 sup ⁡ i ∈ N γ i < 1 \sup _{i \in \mathbb{N}} \gamma_{i}<1 supiNγi<1。 那么对于任意 J ∈ X J\in \mathcal{X} JX,随机固定点算法收敛到固定点 J ∗ J^{*} J,即, j k ∈ N j_{k} \in \mathbb{N} jkN

lim ⁡ k → ∞ ( T ( j k ) ∘ … ∘ T ( j 1 ) ) J = J ∗ (6.43) \lim _{k \rightarrow \infty}\left(\mathrm{T}^{\left(j_{k}\right)} \circ \ldots \circ \mathrm{T}^{\left(j_{1}\right)}\right) J=J^{*} \tag{6.43} klim(T(jk)T(j1))J=J(6.43)

注: sup为最小上界函数


Proof
我们定义 γ ∗ : = sup ⁡ i ∈ N γ i < 1 \gamma^{*}:=\sup _{i \in \mathbb{N}} \gamma_{i}<1 γ:=supiNγi<1。那么对于所有 i ∈ N i \in \mathbb{N} iN,基本收缩不等式成立,即对于任意 J , J ′ ∈ X J, J^{\prime} \in \mathcal{X} J,JX

d ( J , J ′ ) ≤ 1 1 − γ i ( d ( J ,   T ( J ) ) + d ( J ′ , T ( J ′ ) ) ) ≤ 1 1 − γ ∗ ( d ( J ,   T ( J ) ) + d ( J ′ , T ( J ′ ) ) ) (6.44) \begin{aligned} d\left(J, J^{\prime}\right) & \leq \frac{1}{1-\gamma_{i}}\left(d(J, \mathrm{~T}(J))+d\left(J^{\prime}, \mathrm{T}\left(J^{\prime}\right)\right)\right) \\ & \leq \frac{1}{1-\gamma^{*}}\left(d(J, \mathrm{~T}(J))+d\left(J^{\prime}, \mathrm{T}\left(J^{\prime}\right)\right)\right) \end{aligned} \tag{6.44} d(J,J)1γi1(d(J, T(J))+d(J,T(J)))1γ1(d(J, T(J))+d(J,T(J)))(6.44)

因此,随机固定点算法产生的序列是柯西序列。然后,我们得到

d ( (   T ( j k ) ∘ … ∘ T ( j 1 ) ) J , J ∗ ) ≤ γ ∗ k 1 − γ ∗ d ( J ,   T ( J ) ) (6.45) d\left(\left(\mathrm{~T}^{\left(j_{k}\right)} \circ \ldots \circ \mathrm{T}^{\left(j_{1}\right)}\right) J, J^{*}\right) \leq \frac{\gamma^{* k}}{1-\gamma^{*}} d(J, \mathrm{~T}(J)) \tag{6.45} d(( T(jk)T(j1))J,J)1γγkd(J, T(J))(6.45)

即, 对于 k → ∞ k \rightarrow \infty k T ( j k ) ∘ … ∘ T ( j 1 ) ( J ) \mathrm{T}^{\left(j_{k}\right)} \circ \ldots \circ \mathrm{T}^{\left(j_{1}\right)}(J) T(jk)T(j1)(J) 收敛于 J ∗ J^{*} J


Proposition 6.5 随机化VI算法的收敛性 (Convergence of randomised VI algorithm)

{ 1 , … , η k } \left\{{1}, \ldots, \eta_{k}\right\} {1,,ηk}为从 p ( η ) > 0 p(\eta)>0 p(η)>0中抽取的 k k k个各自独立样本, η ∈ { 1 , … , K } \eta \in\{1, \ldots, K\} η{1,,K}。那么我们有

lim ⁡ k → ∞ ( T η k ∘ … ∘ T η 1 ) J = J ∗ (6.46) \lim _{k \rightarrow \infty}\left(\mathrm{T}_{\eta_{k}} \circ \ldots \circ \mathrm{T}_{\eta_{1}}\right) J=J^{*} \tag{6.46} klim(TηkTη1)J=J(6.46)

Remark 6.2

需要注意的是,异步或并行化策略只适用于迭代式策略评估和VI。由于 T π T_{\pi} Tπ T g T_{\mathfrak{g}} Tg的随机算子有不同的固定点,所以不能保证异步PI算法收敛到最优总成本函数。最后,这种并行化策略也适用于基于 Q Q Q函数的DP算法。由于与普通总成本函数的情况相似,发展和分析作为练习。

6.3 实例 E-Bus

Question 1: Optimistic λ \lambda λ -Policy Iteration: E-Bus, extended

Consider a group of electric buses running round trips 24 hours a day. The task is to identify optimal operating actions at different battery states. The battery’s endurance and charging speed gradually decrease with the increase of battery life. Hence, for different buses, they have different transition probabilities between battery states. The following figure illustrates the state transitions between different states.

  • Five states: H H H - high battery, E E E - empty battery, L 1 , L 2 , L 3 L_{1}, L_{2}, L_{3} L1,L2,L3 : three different low level battery statuses
  • Two actions: S S S- continue to serve, C - charge
  • Numbers on the edges refer to transition probabilities. p 1 = 0.4 , p 2 = 0.6 p_{1}=0.4, p_{2}=0.6 p1=0.4,p2=0.6
  • Discount factor γ = 0.9 \gamma=0.9 γ=0.9 .

在这里插入图片描述

We choose the number of unserviced passengers as the local costs:

  • In the high battery state, if it keeps the service, the unserviced passenger number is 0 .
  • In all the low battery stats, if it keeps the service, the unserviced passenger number is 2 .
  • In all the low battery state and empty battery, if it charges the battery, the unserviced passenger number is 5 .

Task 1: Let us initialize total cost J 0 = 0 J_{0}=0 J0=0 . Implement Value Iteration, Gauss-Seidel Value Iteration, and Randomized Value Iteration algorithm. Compare their convergence speeds in terms of the difference from each iterate to the corresponding accumulation point ∥ J k − J ∗ ∥ ∞ \left\|J_{k}-J^{*}\right\|_{\infty} JkJ against the index of sweep k k k .

Task 2: Discussion: When can Randomized VI achieve better performance in the aforementioned example?

Task 3: Now we try to apply VI in terms of State-Action total cost function Q Q Q . How many dimensions of Q Q Q function are there? Write down the optimal Bellman operator for Q ( L 1 , S ) Q\left(L_{1}, S\right) Q(L1,S) .

import random
import matplotlib.pyplot as plt
import matplotlib
import numpy as np

matplotlib.rcParams.update(matplotlib.rcParamsDefault)


INIT_J = 0  # define initial total cost
ITER_N = 100  # the number of iterations

# transition probability
p1 = 0.4
p2 = 0.6

# cost of each state-action pair
ghs = 0
gl1s = gl2s = gl3s = 2
gec = gl3c = gl2c = gl1c = 5

# discount factor
gamma = 0.9


# using VI to get optimal_J. i.e. J*:
k = 0
jh = jl1 = jl2 = jl3 = je = INIT_J
while k < 200:
    jh_ = p1 * (ghs + gamma * jl1) + p2 * (ghs + gamma * jl2)
    jl1_ = min(p1 * (gl1s + gamma * jl2) + p2 * (gl1s + gamma * jl3), gl1c + gamma * jh)
    jl2_ = min(p1 * (gl2s + gamma * jl3) + p2 * (gl2s + gamma * je), p1 * (gl2c + gamma * jl1) + p2 * (gl2c + gamma * jh))
    jl3_ = min(gl3s + gamma * je, p1 * (gl3c + gamma * jl2) + p2 * (gl3c + gamma * jl1))
    je_ = p1 * (gec + gamma * jl3) + p2 * (gec + gamma * jl2)

    jh, jl1, jl2, jl3, je = jh_, jl1_, jl2_, jl3_, je_
    k += 1

jh_optim, jl1_optim,jl2_optim,jl3_optim,je_optim = jh, jl1, jl2, jl3, je
print('After VI we get the optimal costs {:.4f} {:.4f} {:.4f} {:.4f} {:.4f}'.format(jh_optim, jl1_optim,jl2_optim,jl3_optim,je_optim))


# VI
jh = jl1 = jl2 = jl3 = je = INIT_J
vi_converge = []

for k in range(ITER_N):
    jh_ = p1 * (ghs + gamma * jl1) + p2 * (ghs + gamma * jl2)
    jl1_ = min(p1 * (gl1s + gamma * jl2) + p2 * (gl1s + gamma * jl3), gl1c + gamma * jh)
    jl2_ = min(p1 * (gl2s + gamma * jl3) + p2 * (gl2s + gamma * je), p1 * (gl2c + gamma * jl1) + p2 * (gl2c + gamma * jh))
    jl3_ = min(gl3s + gamma * je, p1 * (gl3c + gamma * jl2) + p2 * (gl3c + gamma * jl1))
    je_ = p1 * (gec + gamma * jl3) + p2 * (gec + gamma * jl2)

    jh, jl1, jl2, jl3, je = jh_, jl1_, jl2_, jl3_, je_
    k += 1
    # calculate the infinite norm of ||J_k - J*||
    infinity_gap = max(
        abs(jh-jh_optim),
        abs(jl1-jl1_optim),
        abs(jl2-jl2_optim),
        abs(jl3-jl3_optim),
        abs(je-je_optim)
    )
    vi_converge.append(infinity_gap)


plt.plot(range(ITER_N), vi_converge, 'o-', label='VI')


# Gauss-Seidel VI method
jh = jl1 = jl2 = jl3 = je = INIT_J
gauss_seidel_vi_converge = []

for k in range(ITER_N):
    jh = p1 * (ghs + gamma * jl1) + p2 * (ghs + gamma * jl2)
    jl1 = min(p1 * (gl1s + gamma * jl2) + p2 * (gl1s + gamma * jl3), gl1c + gamma * jh)
    jl2 = min(p1 * (gl2s + gamma * jl3) + p2 * (gl2s + gamma * je), p1 * (gl2c + gamma * jl1) + p2 * (gl2c + gamma * jh))
    jl3 = min(gl3s + gamma * je, p1 * (gl3c + gamma * jl2) + p2 * (gl3c + gamma * jl1))
    je = p1 * (gec + gamma * jl3) + p2 * (gec + gamma * jl2)



    # calculate the infinite norm of ||J_k - J*||
    infinity_gap = max(
        abs(jh-jh_optim),
        abs(jl1-jl1_optim),
        abs(jl2-jl2_optim),
        abs(jl3-jl3_optim),
        abs(je-je_optim)
    )

    gauss_seidel_vi_converge.append(infinity_gap)

plt.plot(range(ITER_N), gauss_seidel_vi_converge, '^-', label='Gauss-Seidel VI')


# Randomized VI
random_vi_converge = []
jh = jl1 = jl2 = jl3 = je = INIT_J
J = [0, 0, 0, 0, 0]
for k in range(ITER_N):
    jh,  jl1, jl2, jl3, je = J
    jh = p1 * (ghs + gamma * jl1) + p2 * (ghs + gamma * jl2)
    jl1 = min(p1 * (gl1s + gamma * jl2) + p2 * (gl1s + gamma * jl3), gl1c + gamma * jh)
    jl2 = min(p1 * (gl2s + gamma * jl3) + p2 * (gl2s + gamma * je), p1 * (gl2c + gamma * jl1) + p2 * (gl2c + gamma * jh))
    jl3 = min(gl3s + gamma * je, p1 * (gl3c + gamma * jl2) + p2 * (gl3c + gamma * jl1))
    je = p1 * (gec + gamma * jl3) + p2 * (gec + gamma * jl2)

    J_ = [jh, jl1, jl2, jl3, je]
    N = int(np.random.random() * 5)
    J[N] = J_[N]

    infinity_gap = max(
        abs(jh-jh_optim),
        abs(jl1-jl1_optim),
        abs(jl2-jl2_optim),
        abs(jl3-jl3_optim),
        abs(je-je_optim)
    )
    random_vi_converge.append(infinity_gap)

plt.plot(random_vi_converge, '*-', label='Randomized VI')

# the optimal Q function
Q_rand = np.array([0, 0, 0, 0, 0, 0, 0, 0])

for k in range(ITER_N):
    Q_HS, Q_L1S, Q_L1C, Q_L2S, Q_L2C, Q_L3S, Q_L3C, Q_EC = Q_rand
    Q_HS_ = ghs + gamma * min(p1 * Q_L1S + p2 * Q_L2S,
                              p1 * Q_L1C + p2 * Q_L2C)
    Q_L1S_ = gl1s + gamma * min(p1 * Q_L2S + p2 * Q_L3S,
                                p1 * Q_L2C + p2 * Q_L3C)
    Q_L1C_ = gl1c + gamma * Q_HS
    Q_L2S_ = min(p1 * (gl2s + gamma * Q_L3S),
                 p1 * (gl2s + gamma * Q_L3C) + p2 * (gl2s + gamma * Q_EC))
    Q_L2C_ = min(p1 * (gl2c + gamma * Q_L1C),
                 p1 * (gl2c + gamma * Q_L1S) + p2 * (gl2c + gamma * Q_HS))
    Q_L3S_ = gl3s + gamma * Q_EC
    Q_L3C_ = gl3c + gamma * min(p1 * Q_L2S + p2 * Q_L1S,
                                p1 * Q_L2C + p2 * Q_L1C)
    Q_EC_ = gec + gamma * min(p1 * Q_L3S + p2 * Q_L2S,
                              p1 * Q_L3C + p2 * Q_L2C)

    Q_rand = np.array([Q_HS_, Q_L1S_, Q_L1C_, Q_L2S_, Q_L2C_, Q_L3S_, Q_L3C_, Q_EC_])

Q_OPT = Q_rand
print('After VI we get the optimal Q funtion = {}'.format(Q_OPT))


Q_func = np.array([0, 0, 0, 0, 0, 0, 0, 0])
Q_diff = []

for k in range(ITER_N):
    Q_HS, Q_L1S, Q_L1C, Q_L2S, Q_L2C, Q_L3S, Q_L3C, Q_EC = Q_func

    Q_HS_ = ghs + gamma * min(p1 * Q_L1S + p2 * Q_L2S,
                              p1 * Q_L1C + p2 * Q_L2C)
    Q_L1S_ = gl1s + gamma * min(p1 * Q_L2S + p2 * Q_L3S,
                                p1 * Q_L2C + p2 * Q_L3C)
    Q_L1C_ = gl1c + gamma * Q_HS
    Q_L2S_ = min(p1 * (gl2s + gamma * Q_L3S),
                 p1 * (gl2s + gamma * Q_L3C) + p2 * (gl2s + gamma * Q_EC))
    Q_L2C_ = min(p1 * (gl2c + gamma * Q_L1C),
                 p1 * (gl2c + gamma * Q_L1S) + p2 * (gl2c + gamma * Q_HS))
    Q_L3S_ = gl3s + gamma * Q_EC
    Q_L3C_ = gl3c + gamma * min(p1 * Q_L2S + p2 * Q_L1S,
                                p1 * Q_L2C + p2 * Q_L1C)
    Q_EC_ = gec + gamma * min(p1 * Q_L3S + p2 * Q_L2S,
                              p1 * Q_L3C + p2 * Q_L2C)

    Q_func = np.array([Q_HS_, Q_L1S_, Q_L1C_, Q_L2S_, Q_L2C_, Q_L3S_, Q_L3C_, Q_EC_])

    Q_diff.append(max(abs(Q_func - Q_OPT)))

plt.plot(range(ITER_N), Q_diff, '*-', label='Q Function')


plt.ylabel(r"$\|\| J - J^*\|\|_{\infty}$")
plt.xlabel('Iteration k')

plt.legend()
plt.show()

The outputs are,

After VI we get the optimal costs 26.1268 28.5141 29.3736 30.7331 31.9256
After VI we get the optimal Q funtion = [ 7.18223061 11.32617948 11.46400755  5.74964075  6.12704272 13.74900208
 13.18600759 13.05444675]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stan Fu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值