首页 > 其他分享 >RL 基础 | 如何使用 OpenAI Gym 接口,搭建自定义 RL 环境(详细版)

RL 基础 | 如何使用 OpenAI Gym 接口,搭建自定义 RL 环境(详细版)

时间:2024-11-11 22:46:30浏览次数:1  
标签:自定义 Gym action np env RL gym


参考:

(这篇博客适用于 gym 的接口,gymnasium 接口也差不多,只需详细看看接口定义 魔改一下即可)


安装 openai gym:

# pip install gym
import gym
from gym import spaces

需实现两个主要功能:

  • env.__init__()obs = env.reset() 函数;
  • obs, reward, done, info = env.step(action) 函数。

01 env 的初始化与 reset

env.__init__() 函数:

  • 输入是 env 的一些初始化条件,比如环境的地图多大、环境里有多少个金币以及每个金币的位置。如果只训练一个特定的任务,比如在 3×3 地图中吃右上角的一个金币,则这些设置都可以写死,不需要在 env 初始化时传递参数。
  • env.__init__() 函数中,需要定义 self.observation_spaceself.action_space
    • 如果状态空间 / 动作空间是离散的,则使用 spaces.Discrete([space dim])
    • 如果是连续的,则使用 spaces.Box(low=np.array([0,1]), high=np.array([100,50]), dtype=np.float32) ,其中 low high 都要符合状态空间 / 动作空间的维度,分别代表每一维的最大最小值。
    • 连续空间也可以使用 spaces.Box(low=0, high=255, shape=(84, 84), dtype=np.uint8) 这种形式,其中空间的每个维度具有相同的最大最小值,shape 表示空间的维度。
    • gym.spaces 的具体使用:官方文档 Gym documentation | Spaces知乎 | Gym 中 Spaces 浅入浅出的理解
  • 可以在 env.__init__() 函数的最后调用一下 env.reset() 函数。

obs = env.reset() 函数:

  • 作用是初始化环境,比如把 agent 放到地图左下角,金币放在地图右上角,内置的计步器 reset 到 0 之类。
  • 它的返回值 obs,应该是一个与状态空间维度相同的 np.ndarray。

02 与环境交互的 step 函数

obs, reward, done, info = env.step(action) 函数:

  • 输入 action,应该是一个与动作空间维度相同的 np.ndarray。(一般的环境应该不支持批量输入 action,即 action.shape = (batch_size, action_dim)
  • step 函数被用在 agent 与 env 的交互;env 接收到输入的动作 action 后,内部进行一些状态转移,输出:
    • 新的状态 obs:与状态空间维度相同的 np.ndarray;
    • reward:奖励值,实数;
    • done:bool 值,True 代表这个 episode 已经跑完(比如 agent 吃到了金币,或 agent 已经走完了 1000 步)(此时该 reset 了),False 则代表这个 episode 还没跑完。
    • info:python 的字典(dict),可以传递一些信息,没有信息传递则可以设成 {}

03 高级用法

  • env.__init__(render_mode="human" or "rgb_array") 以及 rgb_frame = env.render() 。render mode = human 好像可以使用 pygame,rgb frame 则是直接输出(比如说)shape = (256, 256, 3) 的 frame,可以用 imageio 保存成视频。
  • 如何注册 gym 环境:RL 基础 | 如何注册自定义 gym 环境


标签:自定义,Gym,action,np,env,RL,gym
From: https://www.cnblogs.com/moonout/p/18540755

相关文章

  • Cangjie—仓颉编程-Hello,World
    仓颉工具链cjc(Compiler编译CJPM(CangjiePackageManager)cjpm是仓颉语言的包管理工具cjdb(Debugger)cjdb是一款基于开源LLDB开发的仓颉调试工具cjfmt(CangjieFormatter)代码自动格式化工具。cjcov(CangjieCoverage)官方覆盖率统......
  • 下载安装ARL灯塔系统
    1.下载arl2.上传压缩包到kali3.解压ARl-2.6.1.zip4.加载镜像dockerload<arl_2.6.1.tardockerload<arl_mongo.tardockerload<arl_rabbitmq.tardockerimages查看镜像5.cddocker6.ls-al查看隐藏文件,有一个.env文件,vim编辑vidocker-compose.yml删掉......
  • 编写starrocks的自定义函数
    编写StarRocks的自定义函数前提条件StarRocks使用udf函数需要满足以下条件:安装jdk1.8开启udf功能,在FE的配置文件fe/conf/fe.conf中设置配置项enable_udf为true,并且重启FE节点使配置生效开发使用UDF函数创建maven项目,并且用java实现udf函数创建maven项目并且添加以......
  • ARL506-ASEMI汽车专用整流二极管ARL506
    编辑:llARL506-ASEMI汽车专用整流二极管ARL506型号:ARL506品牌:ASEMI封装:BUTTON正向电流:50A反向电压:600V正向压降:1.08V引线数量:2芯片个数:1芯片尺寸:MIL漏电流:10ua恢复时间:ns浪涌电流:500A芯片材质:正向电压:1.08V封装尺寸:如图特性:车用二极管工作结温:-65℃~175℃包装方......
  • ARL356-ASEMI车用整流二极管ARL356
    编辑:llARL356-ASEMI车用整流二极管ARL356型号:ARL356品牌:ASEMI封装:BUTTON特性:车用整流二极管正向电流:35A反向耐压:600V恢复时间:ns引脚数量:2芯片个数:2芯片尺寸:MIL浪涌电流:500A漏电流:10ua工作温度:-65℃~175℃包装方式:500/盘;5000/箱备受欢迎的ARL356-ASEMI车用整流二极......
  • SpringBoot集成SpringSecurity并实现自定义认证
    目录一、SpringSecurity简介二、集成SpringSecurity1、引入依赖2、编写核心配置类3、数据库建表4、自定义session失效策略5、自定义认证6、重写loadUserByUsername方法7、登录页面和接口三、总结一、SpringSecurity简介SpringSecurity是一个能够为基于Spring的企......
  • 对 Wireshark、SolarWinds、Fiddler、TCPdump、NetworkMiner、Charles、JMeter、Fireb
    对Wireshark、SolarWinds、Fiddler、TCPdump、NetworkMiner、Charles、JMeter、Firebug、HTTPWatch和AntiARPSniffer等网络分析工具的详细对比分析,内容包括功能、特点、适用场景、平台支持等方面。表格总结了它们的主要区别与特点。工具名称功能适用场景平台支持优......
  • 「Java开发指南」如何自定义Spring代码生成?(二)
    搭建用户经常发现自己对生成的代码进行相同的修改,这些修改与个人风格/偏好、项目特定需求或公司标准有关,本教程演示自定义代码生成模板,您将学习如何:创建自定义项目修改现有模板来包含自定义注释使用JET和Skyway标记库中的标记配置项目来使用自定义在上文中,我们为大家介绍了......
  • PoliFormer:使用 Transformers 扩展策略在线 RL,打造熟练导航员
    24年6月来自西雅图AI2的论文“PoliFormer:ScalingOn-PolicyRLwithTransformersResultsinMasterfulNavigators”,获得CoRL‘24最佳论文之一。POLIFORMER(策略Transformer),这是一个仅限RGB的室内导航智体,通过大规模强化学习进行端到端训练,尽管纯粹在模拟中训练,但它......
  • 用 Curl 实现基本文字识别
    本文将带您使用Curl语言编写一个简单的文字识别程序。该程序会逐字符解析输入字符串,并模拟基本的文字识别功能,适合入门学习和简单文本处理应用。代码实现本示例包含几个步骤:定义输入数据、创建识别方法,并输出识别结果。定义输入数据我们需要一个简单的输入文本供识别程序解......