Q-learning代码复现
时间: 2024-09-24 21:11:18 浏览: 37
Q-learning是一种基于强化学习的模型-free算法,用于解决马尔科夫决策过程(MDP)的问题。其核心思想是通过迭代地更新状态-动作值函数Q(s, a),使其逼近最优策略下的期望累积奖励。下面是一个简单的Python代码示例,使用`numpy`库来实现Q-learning算法:
```python
import numpy as np
# 初始化Q表
Q = np.zeros((env.observation_space.n, env.action_space.n))
# 设置超参数
alpha = 0.5 # 学习率
gamma = 0.9 # 折扣因子
epsilon = 0.1 # 探索率
n_episodes = 1000 # 总训练次数
for episode in range(n_episodes):
state = env.reset() # 获取初始状态
done = False
while not done:
if np.random.rand() < epsilon: # 随机探索
action = env.action_space.sample()
else:
action = np.argmax(Q[state]) # 选择最大Q值的动作
next_state, reward, done, _ = env.step(action) # 执行动作并获取反馈
max_next_q = np.max(Q[next_state]) # 计算目标Q值
# 更新Q表
Q[state, action] = (1 - alpha) * Q[state, action] + alpha * (reward + gamma * max_next_q)
# 每隔一定步数降低探索率,通常随着训练的进行逐渐减少
if episode % 100 == 0:
epsilon *= 0.95
print("Q-table after training:")
print(Q)
```
这里`env`代表环境,比如`gym`中的游戏环境。注意这只是一个基本框架,实际应用时需要根据具体环境和需求做适当的调整。
阅读全文