可以给出q-learning 算法实现的代码吗
时间: 2023-09-21 16:03:38 浏览: 70
当然可以!以下是 Python 代码实现 q-learning 算法:
```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.1 # 探索率
num_episodes = 1000 # 模拟次数
# Q-learning 算法实现
for i in range(num_episodes):
state = np.random.randint(0, 6) # 随机初始化状态
while state != 5: # 当状态不是终止状态时循环
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[state, action] += alpha * (reward + gamma * np.max(Q[next_state, :]) - Q[state, action])
state = next_state
# 打印最终 Q 表格
print(Q)
```
这里使用一个简单的迷宫环境作为示例,Q 表格的初始化为全零。在每次模拟中,随机选取一个状态作为起始状态,然后根据 Q 表格和探索率选择动作,更新 Q 表格。最终得到的 Q 表格就是学习到的策略。
阅读全文