赞
踩
以下是一个简单的Q-learning算法的Python实现示例:
import numpy as np # 定义环境 # 假设状态空间包含3个状态,动作空间包含2个动作 num_states = 3 num_actions = 2 # 初始化Q表格 Q = np.zeros((num_states, num_actions)) # 定义超参数 num_episodes = 1000 # 迭代次数 max_steps = 100 # 每个episode的最大步数 epsilon = 0.3 # ε-greedy策略中的ε alpha = 0.5 # 学习率 gamma = 0.9 # 折扣因子 # Q-learning算法 for episode in range(num_episodes): state = 0 # 初始状态为0 for step in range(max_steps): # 选择动作 if np.random.uniform(0, 1) < epsilon: action = np.random.randint(num_actions) # ε-greedy策略中的随机动作 else: action = np.argmax(Q[state, :]) # 根据Q表格选择最优动作 # 执行动作,观察下一个状态和奖励 if state == 0 and action == 0: next_state = 1 reward = -1 elif state == 0 and action == 1: next_state = 2 reward = 1 else: next_state = state reward = 0 # 更新Q值 Q[state, action] = Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state, :]) - Q[state, action]) # 更新状态 state = next_state # 到达终止状态,结束当前episode if state == num_states - 1: break # 打印学到的Q表格 print("Learned Q-table:") print(Q)
在这个示例中,我们定义了一个简单的环境,包含3个状态和2个动作。然后,我们使用Q-learning算法来学习Q表格。在每个episode中,我们选择当前状态下的动作,并执行该动作,观察下一个状态和奖励。然后,我们使用Q-learning的更新公式更新Q表格中的Q值。最后,我们输出学到的Q表格。
请注意,这只是一个简单的示例,并且可能无法处理更复杂的问题。在实际应用中,可能需要对算法进行更多的改进和优化,例如使用近似方法、调整超参数等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。