参考:

(这篇博客适用于 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 环境

RL 基础 | 如何使用 OpenAI Gym 接口,搭建自定义 RL 环境(详细版)的更多相关文章

  1. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  2. java 基础(一) Sublime Text3搭建Java编译环境(Windows系统)

    1. 首先配置好Java环境变量我的jdk版本是1.8.0_191,存放目录是C:\Program Files\Java,因此添加以下环境变量 (1)系统变量→新建 JAVA_HOME 变量,变量值为 ...

  3. eclipse搭建android开发环境详细步骤

    搭建android应用的开发环境,一套程序下来也是相当繁琐的,这里我整理下一整套详细流程: 1,下载JDK 去oracle官网下载最新版本的jdk,官网地址 http://www.oracle.com ...

  4. hexo+github搭建博客(超级详细版,精细入微)

    # 前言 你了解[Hexo]( https://hexo.io/zh-cn/ "Hexo官网")吗? Hexo是一个静态博客框架,基于Node.js,将Markdown文章通过渲染 ...

  5. css基础之 font的简写规则 以及 自定义 CSS3 @font-face详细用法

    Part 1 font简写 CSS的命名规则是用英文字母 数字 和下划线(一般用小写)来命名.简写css font的好处有三:一是写起来方便(就像键盘快捷键):二是简化代码:三是帮助你熟悉和深刻理解c ...

  6. 搭建Kafka运行环境-Mac版

    停止kafka服务: kafka_2.12-0.10.2.1> bin/kafka-server-stop.sh kafka_2.12-0.10.2.1> bin/zookeeper-se ...

  7. SpringMVC框架搭建流程(完整详细版)

    SpringMVC框架搭建流程 开发过程 1)配置DispatcherServlet前端控制器 2)开发处理具体业务逻辑的Handler(@Controller. @RequestMapping) 3 ...

  8. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  9. 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...

  10. 1.WIN10下搭建vue开发环境

    WIN10下搭建vue开发环境 详细的安装步骤如下: 一.安装node.js 说明:安装node.js的windows版本后,会自动安装好node以及包管理工具npm,我们后续的安装将依赖npm工具. ...

随机推荐

  1. MacPorts 使用

    安装 安装苹果命令行开发工具: xcode-select --install 下载并打开 MacPorts 安装包. 使用 MacPorts 中的软件包称为 port. sudo port selfu ...

  2. 【图文安装教程】在docker中安装kibana

    在上一篇中,我们已经在docker里面安装了ES. kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习. 所以,本篇咱们就在docker里面安装kibana图文教程: ...

  3. keycloak~scope客户端模板的使用

    scope为何物? scope在oauth2中表示授权的范围,另外也可以理解为,根据认证时scope的参数,在构建jwt时,返回更多的信息:比如在keycloak中,你的可选scope(optiona ...

  4. Spark - Pandas UDF

    spark 本身对 dataframe 的操作支持没有像pandas 那样强大,所有我们可以把spark dataframe 转化成 pandas dataframe 来利用pandas datafr ...

  5. Goby漏洞发布 | CVE-2024-4879 ServiceNowUI /login.do Jelly模板注入漏洞【已复现】

    漏洞名称:ServiceNowUI /login.do Jelly模板注入漏洞(CVE-2024-4879) English Name:ServiceNowUI /login.do Input Val ...

  6. JAVA基础之5-函数式接口的实现

    之所以单独把这个列出来,是因为本人被一个源码给震撼了. 所以,本人目的是看看这个震撼实现,并模仿,最后把常规的实现也贴上,让读者可以看到相对完整的实现 注:本文代码基于JDK17 一.让人震撼的代码 ...

  7. frp_v0.37.1内网穿透,内网服务公网用不求人

    前言: 公司内网无法访问,出差又需要用到公司内网进行办公,苦恼了好一阵.这时候想到了内网穿透,这就不得不提到几年前被安利的frp,一看GitHub竟然已经5年了,网上估计大把教程了. 那么什么是frp ...

  8. Azure 入门系列 (第三篇 Publish Web Application to VM)

    本系列 这个系列会介绍从 0 到 1 搭建一个 Web Application 的 Server. 间中还会带上一些真实开发常用的功能. 一共 6 篇 1. Virtual Machine (VM) ...

  9. linux 映射windows 下的共享文件夹

    linux 映射windows 下的共享文件夹     本文讯]2021年4月27日  在对接第三方系统,进行数据采集的时候,对方给了我们一个文件夹,里面全是txt文件,这个时候就要想办法获取他们数据 ...

  10. Hadoop & Redis未授权漏洞实战——Vulfocus服务攻防

    什么是未授权访问漏洞?Hadoop & Redis靶场实战--Vulfocus服务攻防 一.介绍 未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访 ...