q-learnning代码
时间: 2023-08-27 14:07:01 浏览: 53
下面是一个简单的 Q-learning 的 Python 代码:
```python
import numpy as np
# 定义环境
env = np.array([[-1, -1, -1, -1, 0, -1],
[-1, -1, -1, 0, -1, 100],
[-1, -1, -1, 0, -1, -1],
[-1, 0, 0, -1, 0, -1],
[0, -1, -1, 0, -1, 100],
[-1, 0, -1, -1, 0, 100]])
# 初始化 Q 表
Q = np.zeros((6, 6))
# 设置参数
alpha = 0.8
gamma = 0.95
epsilon = 0.2
# 进行训练
for i in range(1000):
# 随机选择一个初始状态
state = np.random.randint(0, 6)
while state != 5: # 直到到达终止状态
# ε-greedy 选择下一步的动作
if np.random.rand() < epsilon:
action = np.random.randint(0, 6)
else:
action = np.argmax(Q[state])
# 执行动作,得到新状态和奖励
next_state = action
reward = env[state, action]
# 更新 Q 表
Q[state, action] = (1 - alpha) * Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state]))
state = next_state
# 输出 Q 表
print(Q)
```
这个代码中的环境是一个简单的迷宫,其中 -1 表示不可通行的空格,0 表示可通行但不得分的空格,100 表示可通行且得分的空格。Q 表的初始化全部为 0。在训练过程中,每次随机选择一个起始状态,然后进行 ε-greedy 的选择下一步的动作,执行动作得到新状态和奖励,并更新 Q 表。最终输出训练得到的 Q 表。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)