《深入浅出强化学习原理入门》学习笔记(三)机器人找金币应用实例

《深入浅出强化学习原理入门》学习笔记(三)机器人找金币应用实例


原作者代码:链接: https://github.com/gxnk/reinforcement-learning-code/.

1、实例描述

以机器人找金币的例子构建MDP框架。

网格中一共8个状态,其中状态6和8都是死亡区域,状态7是金币区域。
机器人的初始位置为网格世界中的任意一个状态,机器人从初始状态出发开始寻找金币,进入死亡区域或者找到金币时,本次探索结束。
在这里插入图片描述
将机器人找金币的例子建模为MDP。
状态空间:S={ 1,2,3,4,5,6,7,8}
动作空间:A={东,南,西,北}
状态转移概率为机器人的运动方程
回报函数为:找到金币回报为1,进入死亡区域回报为-1,机器人在状态1-5之间转换时回报为0。

构建机器人找金币的gym环境。

2、 环境构建源码及注释

导入需要用的库

import logging
import numpy
import random
from gym import spaces
import gym

logger = logging.getLogger(__name__)

gym环境文件的主体是类,定义类名为GridEnv

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] 
#机器人可能处的每个状态点的中心坐标x,y      
        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 = ['n','e','s','w']

#回报函数,数据结构为字典
        self.rewards = dict();        
        self.rewards['1_s'] = -1.0
        self.rewards['3_s'] = 1.0
        self.rewards['5_s'] = -1.0
        
#状态转移概率,数据格式为字典
        self.t = dict();            
        self.t['1_s'] = 6
        self.t['1_e'] = 2
        self.t['2_w'] = 1
        self.t['2_e'] = 3
        self.t['3_s'] = 7
        self.t['3_w'] = 2
        self.t['3_e
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值