基于Q-learning的强化学习案例(附python代码)

该文章展示了如何运用Q-learning算法解决一个简单的路径规划问题。在给定的状态空间(0-8的网格,避开7和8)中,目标是从0到6,通过调整学习率和折扣因子,逐步优化Q表以找到最优路径。Python代码实现了这个过程,包括探索和利用策略的平衡以及状态和动作的更新。
摘要由CSDN通过智能技术生成

基于Q-learning的强化学习案例

如图所示的一个表格,初始位置伟黄色的0,目标终点为绿色的6,想要通过策略学习找到从0到6的最短路径,其中红色的7和8是禁止通过的位置,Agent经过这两个位置会game over。
在这里插入图片描述
以下通过强化学习的Q-Learning方法来学习策略,找到最优的路径方案。

状态空间S 即为0~8
动作空间A 可以向左、向下和向右运动,设置为0 1 2
根据状态和动作,预先给定的奖励值在不同动作和状态下如下图
在这里插入图片描述
利用Q-learning算法,编写python代码如下

# 强化学习走Q表
import numpy as np
R = [[-1000, -100, 0],[-5, 0, -100],[-100, 0, 0],[-1000, -1000, 0],[-5, -1000, 100],[-5, 100, -1000],[0, -1000, -1000],[-1000, 0, 0],[0, 0, -1000]]
S = [[0, 7, 1], [0, 2, 8], [7, 4, 5], [3, 3, 4], [3, 4, 6], [2, 6, 5], [4, 6, 6], [7, 3, 2], [1, 5, 8]]
Q = np.zeros([9, 3])
gamma = 0.9
alpha = 0.9
cnt = 0
epoch = 10000
done = False
action = 0
state = 0
rt = 0
road = [0] #构建一个数组存放路径,0表示默认位置,s1
while cnt<epoch:
    state = 0
    done = False
    while not done:
        #贪心算法,确保不会一直按照已知的路走,有10%概率探索未知的方法
        if np.random.rand()<0.9:
            rt = max(Q[state,:])
            action = [index for index, item in enumerate(Q[state,:]) if item == rt]
            #当已知的路径有多条时随机选择一条
            if len(action) > 1:
                action = action[int(np.random.randint(0,len(action),size=(1,1)))]
            else:
                action = action[0]
        else:
            #随机去探索
            action = int(np.random.randint(0,3,size=(1,1)))
        #执行action切换到新的state
        state_new = S[state][action]
        #更新Q表
        Q[state,action] = Q[state,action] + alpha*(R[state][action]+gamma*max(Q[state_new,:])-Q[state,action])
        #将迭代state切换到新的状态
        state = state_new
        #记录走过的路径
        road.append(state)
        #6是成功,7,8是失败,均结束
        if int(state) == 6 or int(state) ==7 or int(state) == 8:
            done = True
    cnt = cnt + 1
    print(road)
    road = [0] #清空当前路径,开始下一次迭代
print(Q)
"Python 强化学习项目 - 2018.pdf" 是一个介绍强化学习项目的文档,使用 Python 编程语言作为实现工具。强化学习是机器学习中的一个分支,主要是研究如何让智能体在与环境的交互中通过试错学习来获得最大的累积奖励。 该文档提供了一些基于 Python强化学习项目案例,目的是帮助读者理解和实践强化学习的概念和应用。这些项目案例可能包括以下内容: 1. 强化学习算法实现:该文档可能介绍了一些常用的强化学习算法,如Q学习、深度 Q 网络(DQN)、策略梯度等,并提供了相应的Python代码实现。通过这些项目案例,读者可以学习到如何使用Python编程语言实现这些算法。 2. 游戏或机器人控制案例强化学习经常应用于游戏和机器人控制。该文档可能提供了一些使用强化学习算法来玩游戏或控制机器人的项目案例。通过这些案例,读者可以学习到如何通过强化学习的方法来训练一个智能体,在特定环境中掌握游戏规则或实现特定任务。 3. 实际应用案例:除了游戏和机器人控制,强化学习也被应用于其他领域,如金融、交通等。该文档可能提供了一些强化学习在实际应用中的项目案例,读者可以学习到如何将强化学习算法应用于解决实际问题。 总之,"Python 强化学习项目 - 2018.pdf" 是一个介绍强化学习项目的文档,通过提供具体的项目案例,帮助读者学习和实践强化学习算法在Python中的应用。这些项目案例可能涵盖了强化学习算法实现、游戏或机器人控制案例以及实际应用案例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haleine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值