每天学点算法->强化学习->Q_learning走迷宫

本文介绍如何使用Q_learning算法解决走迷宫问题。通过不断更新Q_table,红色方块逐步学会最短路径到达黄格子。文章详细阐述了算法流程,包括主循环搭建、RL_brain的动作选择与Q_table更新,以及环境的实现。通过多次训练,红色方块能高效找到目标。
摘要由CSDN通过智能技术生成

今天给大家分享如何用Q_learning算法来实现走迷宫,我们的红色方块会一次次的尝试不同的格子,直到落入黑格子,获得惩罚*1;或者走进黄格子,获得奖励*1为止。每一次游戏都会更新Q_table的权重,以实现红色方块下一次能够更加快速的找到黄格子。

本文参照了莫烦python的博客:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/2-2-tabular-q1/

Q_learning的整个算法过程如下图,具体含义:

首先:初始化一个Q_table;

循环一定次数;

       在循环中根据奖励和action更新Q_table;

,这些在本文中都会以代码例子的形式表述。

 

本文主要分为以下几大块:

一.主循环搭建

二.RL_brain选择动作&更新Q_table的实现

三.环境编写(代码)

 

一:主循环搭建

我们创建100次循环用来训练更新Q_table。

首先,初始化环境,获取红色方块的开始位置;核心代码:position=env.reset()

其次,我们根据Q_table中的在position位置走不同方向(即动作)reward,来选择reward最高的action;核心代码:action=RL.choose_action(str(position))

第三,我们让环境执行该action,获得环境的反馈:走进黑色各自-1,走进黄色格子+1,其他+0,更新我们的Q_table;核心代码:position_next,reward,done=env.step(action);RL.learn(str(position),action,reward,str(position_next))

最后,我们由于已经执行了action,即我们在当前position向某个方向走了一步,所以我们更新position=position_next

以下为主循环所有代码:

from maze_env import Maze
from RL_brain import QLearningTable

"""
循环更新Q_table

"""
def update():
    for episode in range(100):
        position=env.reset()

        while True:
            env.render()

            #选择执行的动作,条件为在q_table中奖励最大
            action=RL.choose_action(str(position))
            position_next,reward,done=env.step(action)

            #根据环境反馈的奖励reward更新q_table
            RL.learn(str(position),action,reward,str(position_next))

            position=position_next
            if d
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值