Sarsa 思维决策
作者: 莫烦 发布于: 2017-01-13
编辑: 学习资料:
接着上节内容, 我们来实现 RL_brain
的 SarsaTable
部分, 这也是 RL 的大脑部分, 负责决策和思考.
代码主结构¶
和之前定义 Qlearning 中的 QLearningTable
一样, 因为使用 tabular 方式的 Sarsa
和 Qlearning
的相似度极高,
我们甚至可以定义一个 主class RL
, 然后将 QLearningTable
和 SarsaTable
作为 主class RL
的衍生, 这个主 RL
可以这样定义. 所以我们将之前的 __init__
, check_state_exist
, choose_action
, learn
全部都放在这个主结构中, 之后根据不同的算法更改对应的内容就好了. 所以还没弄懂这些功能的朋友们, 请回到之前的教程再看一遍.
如果是这样定义父类的 RL
class, 通过继承关系, 那之子类 QLearningTable
class 就能简化成这样:
学习¶
有了父类的 RL
, 我们这次的编写就很简单, 只需要编写 SarsaTable
中 learn
这个功能就完成了. 因为其他功能都和父类是一样的. 这就是我们所有的 SarsaTable
于父类 RL
不同之处的代码. 是不是很简单.
如果想一次性看到全部代码, 请去我的 Github