《强化学习:原理与Python实现 》 —2.3.2 Bellman最优方程
2.3.2 Bellman最优方程
最优价值函数具有一个重要的性质—Bellman最优方程(Bellman optimal equation)。Bellman最优方程可以用于求解最优价值函数。
回顾2.2节,策略的价值函数满足Bellman期望方程,最优价值函数也是如此。与此同时,将最优函数的性质:
代入Bellman期望方程,就可以得到Bellman最优方程。
Bellman最优方程有以下两个部分。
用最优动作价值函数表示最优状态价值函数,备份图见图2-4a:
用最优状态价值函数表示最优动作价值函数,备份图见图2-4b:
图2-4 最优状态价值函数和最优动作价值函数互相表示的备份图
基于最优状态价值函数和最优动作价值函数互相表示的形式,可以进一步导出以下两种形式。
用最优状态价值函数表示最优状态价值函数,备份图见图2-5a:
用最优动作价值函数表示最优动作价值函数,备份图见图2-5b:
图2-5 最优状态价值函数和最优动作价值函数自我表示的备份图
例如,对于表2-1的动力系统,我们可以列出其Bellman最优方程为:
用这个方程可以求得最优价值函数。
接下来我们用sympy求解这个方程。Bellman最优方程含有max() 运算,可以通过分类讨论来化解这个max() 运算,将优化问题转为普通线性规划问题。如果用这种方法,可以将这个方程组分为以下4类情况讨论,用代码清单2-2求解。
代码清单2-2 求解示例Bellman最优方程
代码清单2-2求得以下4种情况的解如下。
情况I:且。这时且
。这种情况的求解结果为:
其中。此时,且可以化简为:
情况II:且。这时且。这种情况的求解结果为:
其中。此时,且可以化简为:
情况III:且。这时且。这种情况的求解结果为:
此时,且可以化简为:
情况IV:且。这时且。这种情况的求解结果为:
其中。此时,且可以化简为:
对于给定数值的情况,更常将()松弛为(),并消去以减少决策变量,得到新的线性规划:
其中()是一组任意取值的正实数。Bellman最优方程的解显然在线性规划的可行域内。而由于(),因此线性规划的最优解肯定会让约束条件中的某些不等式取到等号,使得Bellman最优方程成立。可以证明,这个线性规划的最优解满足Bellman最优方程。
例如,在之前的例子中,如果限定,,,我们用这个线性规划求得最优状态价值为
进而由最优状态价值推算出最优动作价值为
- 点赞
- 收藏
- 关注作者
评论(0)