强化学习-Q-learning FrozenLake-V0 实现

Q-learning算法是比较经典的强化学习入门算法,本文以FrozenLake-V0为例,介绍Q-learning的相关实现。

首先定义一个Agent类,sample函数就是使用epsilon-greedy的采样方法,predict则是根据当前的观察值来预测输出的动作,learn就是通过输入当前的观察值obs,当前的动作action,奖励reward以及下一个时刻的观察值next_obs来更新Q值表。

代码:

class QLearningAgent(object):
    def __init__(self, obs_n, act_n, learning_rate=0.01, gamma=0.9, e_greed=0.1):
        self.act_n = act_n  # 动作维度,有几个动作可选
        self.lr = learning_rate  # 学习率
        self.gamma = gamma  # reward的衰减率
        self.epsilon = e_greed  # 按一定概率随机选动作
        self.Q = np.zeros((obs_n, act_n))

    # 根据输入观察值,采样输出的动作值,带探索
    def sample(self, obs):
        rd_p = np.random.uniform(0, 1)
        if rd_p <= self.epsilon:
            action = np.random.choice(self.act_n)
        else:
            action = self.predict(obs)
        return action

    # 根据输入观察值,预测输出的动作值
    def predict(self, obs):
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值