强化学习笔记(1)-找金币小游戏

使用gym实现的第一个强化学习的问题,简单来说就是一个找金币的问题。

该网格世界一共8个状态,其中6和8是死亡区域,状态7是金币区域,机器人的初始位置为网格中的任意一个状态,机器人从初始状态出发寻找金币,机器人每探索一步,进入死亡区域或找到金币本次探索结束。
状态空间 S = { 1, 2, 3, 4, 5, 6, 7, 8},动作空间是 A = {上,下,左, 右}, 找到金币回报为1, 进入死亡区域回报为-1,在状态1和5中切换的时候,回报为0。

这里写图片描述

代码实现部分,实现的框架使用的是gym,关于如何安装和使用的相关基础知识参考网络上的其他资料
import numpy
import random
from gym import spaces
import gym

gym.Env是gym的世界模拟的世界类,要使用gym库来实现相关功能的模拟,必须继承该类实现相关的接口,主要的接口包含reset和step等,在不同的gym版本中函数的名称已经有了一定的变化,如在以前你在实现Env类的子类的时候,需要实现的接口大都在前面有一个下划线_如_step,请注意使用的gym版本不同,相关的实现代码会有一定的变化。

class GridEnv(gym.Env):
    #相关的全局配置
    metadata = {
        'render.modes':['human', 'rgb_array'],
        'video.frames_per_second': 2
    }

    def __init__(self):
        self.states = [1, 2, 3, 4, 5, 6, 7, 8] #状态空间列表
        self.x = [140, 220, 300, 380, 460, 140, 300, 460] #用于绘图的每个状态的位置
        self.y = [250, 250, 250, 250, 250, 150, 150, 150]
        self.terminate_states = dict() #终结状态
        self.terminate_states[6] = 1
        self.terminate_states[7] = 1
        self.terminate_states[8] = 1

        self.actions = ['up', 'down', 'left', 'right']

        self.rewards = dict(); #回报
        self.rewards['1_down'] = -1.0
        self.rewards['3_down'] = 1.0
        self.rewards['5_down'] = -1.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值