您的位置:首页 > 游戏 > 手游 > 长沙公交优化_网业端云服务_专业培训大全_网络推广方式有哪些

长沙公交优化_网业端云服务_专业培训大全_网络推广方式有哪些

2024/10/6 0:27:53 来源:https://blog.csdn.net/wx740851326/article/details/142371864  浏览:    关键词:长沙公交优化_网业端云服务_专业培训大全_网络推广方式有哪些
长沙公交优化_网业端云服务_专业培训大全_网络推广方式有哪些

大家好,这里是小琳AI课堂。今天我们通过一个Python示例来进一步理解强化学习中的Q-learning算法。这个示例将带我们穿越一个迷宫,用代码的形式展示智能体是如何通过试错来找到出口的。🔍
首先,我们需要安装两个Python库:numpypandas。如果你还没有安装它们,可以通过以下命令来安装:

pip install numpy
pip install pandas

接下来,我们定义一个迷宫环境MazeEnv类。这个类包含了迷宫的地图、起始点和终点。我们的智能体需要在迷宫中找到通往终点的路径。
MazeEnv类中,我们有两个关键方法:

  • reset:将智能体放回起始点,为新的回合做准备。
  • step:智能体在这个方法中执行动作,环境根据动作给出新的状态、奖励和是否完成标志。
import numpy as np
import pandas as pd# 定义环境
class MazeEnv:def __init__(self):self.maze = np.array([[0, 0, 0, 0, 0],[0, -1, 0, 0, 0],[0, 0, 0, 0, 0],[0, 0, 0, 0, 1]])self.start = (0, 0)self.end = (3, 4)def reset(self):self.position = self.startreturn self.positiondef step(self, action):if action == 'up':new_position = (self.position[0] - 1, self.position[1])elif action == 'down':new_position = (self.position[0] + 1, self.position[1])elif action == 'left':new_position = (self.position[0], self.position[1] - 1)elif action == 'right':new_position = (self.position[0], self.position[1] + 1)# 检查是否超出边界if (new_position[0] < 0 or new_position[0] >= self.maze.shape[0]) or \(new_position[1] < 0 or new_position[1] >= self.maze.shape[1]):reward = -1done = Falseelse:# 更新位置self.position = new_position# 如果到达终点,给予奖励并结束回合if self.position == self.end:reward = 10done = True# 如果碰到障碍物,给予惩罚elif self.maze[new_position] == -1:reward = -10done = Trueelse:reward = -0.04done = Falsereturn self.position, reward, done# Q-learning算法
def q_learning(env, episodes=1000, learning_rate=0.1, discount_factor=0.99, epsilon=0.1):actions = ['up', 'down', 'left', 'right']q_table = pd.DataFrame(0, index=[str(i) for i in range(env.maze.size)], columns=actions)for episode in range(episodes):state = str(env.reset())done = Falsewhile not done:if np.random.uniform(0, 1) < epsilon:action = np.random.choice(actions)else:action = q_table.loc[state].idxmax()next_state, reward, done = env.step(action)next_state = str(next_state)max_future_q = q_table.loc[next_state].max()current_q = q_table.loc[state, action]new_q = (1 - learning_rate) * current_q + learning_rate * (reward + discount_factor * max_future_q)q_table.loc[state, action] = new_qstate = next_statereturn q_tableenv = MazeEnv()
q_table = q_learning(env)
print(q_table)

MazeEnv 类:定义了一个简单的迷宫环境,其中包括迷宫地图、起始点和终点。 reset 方法:将智能体重置到起始位置,并返回当前位置。
step 方法:接收一个动作作为输入,并返回新的状态、奖励和是否完成标志。 q_learning
函数:实现了Q-learning算法,它通过不断尝试动作并更新Q-table来学习最优策略。

这个算法通过不断尝试和更新一个叫做Q-table的数据结构来学习最优策略。Q-table记录了在不同状态下,执行不同动作的预期奖励。
在Q-learning算法中,我们遍历多个回合(episodes),在每个回合中,智能体都会尝试不同的动作,并根据动作的结果更新Q-table。智能体有时会随机选择动作(探索),有时则会选择当前看起来最优的动作(利用)。
最后,我们打印出Q-table,它展示了在不同状态下,智能体应该选择哪个动作来最大化长期奖励。
这个示例虽然简单,但它展示了强化学习的基本原理:智能体通过与环境交互,不断学习如何在给定的环境中做出最优决策。这就是强化学习的魅力所在,它让机器能够通过经验来学习和适应复杂的环境。
希望这个示例能帮助你更好地理解强化学习。如果你有任何问题或想法,欢迎在评论区留言分享!👇
本期的小琳AI课堂就到这里,希望你喜欢今天的内容!下期见!👋

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com