how to

6-Dyna-Q-算法

Nov 8, 2024
notesjulyfun技术学习hrl
1 Minutes
128 Words
  • 在 Q-learning 之上自己再学个超级简单的环境,每次 Q-learning 完之后再根据这个环境去随机更新 $N$ 个.
    • 什么超绝朴素想法。

default

1
class DynaQ:
2
...
3
def q_learning(self, s0, a0, r, s1):
4
td_error = r + self.gamma * self.Q_table[s1].max(
5
) - self.Q_table[s0, a0]
6
self.Q_table[s0, a0] += self.alpha * td_error
7
8
def update(self, s0, a0, r, s1):
9
self.q_learning(s0, a0, r, s1)
10
self.model[(s0, a0)] = r, s1 # 将数据添加到模型中
11
for _ in range(self.n_planning): # Q-planning循环
12
# 随机选择曾经遇到过的状态动作对
13
(s, a), (r, s_) = random.choice(list(self.model.items()))
14
self.q_learning(s, a, r, s_)

done.

Article title:6-Dyna-Q-算法
Article author:Julyfun
Release time:Nov 8, 2024
Copyright 2025
Sitemap