基于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)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Haleine

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

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

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

打赏作者

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

抵扣说明:

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

余额充值