首页 > 其他分享 >Gymnasium 学习笔记:gymnasium.Env 概述

Gymnasium 学习笔记:gymnasium.Env 概述

时间:2024-09-24 21:50:04浏览次数:7  
标签:None self random Gymnasium gymnasium Env np

简要介绍 Gymnasium 的整体架构和个模块组成。Gymnasium 提供了强化学习的环境,下面主要介绍 gymnasium.Envgymnasium.MujocoEnv 两个类。


1. gymnasium.Env

gymnasium.Env(Generic[ObsType, ActType]) 是环境的基类,其是泛型类,其可以接受 ObsTypeActType 两个类型,分别对应观测量的类型和决策/动作量的类型。gymnasium.Env 提供了强化学习相关的方法(运行接口),此外,为了便于用户更好地实现/理解该环境,提供了一些基础的属性(成员变量)。

1.1 方法

  • step(self, action: ActType) -> tuple[ObsType, SupportsFloat, bool, bool, dict[str, Any]] : 给定决策/动作量,运行环境,并返回 observation, reward, terminated, truncated, info。其中,action 是决策/动作量;observation 是观测量;reward 是执行给定动作后的奖励;terminated 和 truncated 是终止标志位;info 是信息,可以用于调试等。

  • reset(self, *, seed: int | None = None, options: dict[string, Any] | None = None) -> tuple[ObsType, dict[str, Any]] :将环境重置为初始状态,通常会带有一定的随机量,并返回 observation, info。其中,* 为可变参数;seed 是 Env 内部 np_random 的种子,用于生成随机值;options 用于给定一些用于重置的信息。

  • render(self) -> RenderFrame | list[RenderFrame] | None 计算当前环境的渲染结果,并可返回渲染相关数据。在环境初始化的时候,会设定 render_mode,那么,render() 方法会依据该标志位完成相应的渲染工作。为了便于统一,在该基类中,给出了几种不同的渲染方式及其实现思路,例如:human, rgb_array, ansi, rgb_array_list 等。

  • close(self) 关闭该环境,并释放资源。

此外,还定义了一些私有方法,例如:

  • __str__() : 返回该环境的标识符/字符串。

  • __enter__() :返回自身。

  • __exit__(self, *args: Any) : 用于关闭当前环境,并调用 close() 方法。

  • has_wrapper_attr(self, name: str) -> bool; get_wrapper_attr(self, name: str) -> Any; set_wrapper_attr(self, name: str, value: Any) :用户检索/读写当前环境及其 wrapped 中的属性。关于 wrapped 相关内容,后续再作介绍。

1.2 属性

  • unwrapped(self) -> Env[ObsType, ActType] : 获取 unwrapped 后的环境类 gymnasium.Env。关于 wrapped 相关的内容,后续再作介绍。

  • np_random_seed(self) -> int : 获取该环境中随机数/种子的维度。

  • np_random(self) -> np.random.Generator 获取该环境的随机数生成器。

  • np_random(self, value: np.random.Generator) :设定当前环境的随机数生成器。

1.3 静态成员变量

gymnasium.Env 中定义了一些静态成员变量,主要的目的还是方便用户规范化定义/使用强化学习环境。具体如下:

  • metadata: dict[str, Any] = {"render_modes": []} :后续再作详细介绍。这里面好像会把所有标记位和标记位的值列举出来。

  • render_mode: str | None = None :渲染方式。

  • spec: EnvSpec | None = None 这个的原理比较复杂,后续再补充。它的作用,应该是为了把定义好的类注册到这套框架里,用户可以非常方便地通过名称调用/获取相应的环境。

  • action_space: spaces.Space[ActType] :决策/动作空间。

  • observation_space: spaces.Space[ObsType] :观测空间。

  • _np_random: np.random.Generator | None = None; _np_random_seed: int | None = None 随机数相关。

1.4 小结

综上,gymnasium.Env 设计的非常简洁,各部分功能也划分的比较清晰,十分方便扩展。

2. 杂项

标签:None,self,random,Gymnasium,gymnasium,Env,np
From: https://www.cnblogs.com/wghou09/p/18424671

相关文章

  • macos python3.12解决pip3安装报错(error: externally-managed-environment)
    故障现象为提示error:externally-managed-environment➜~pip3installrequestserror:externally-managed-environment×Thisenvironmentisexternallymanaged╰─>ToinstallPythonpackagessystem-wide,trybrewinstallxyz,wherexyzisthepackagey......
  • 使用pyenv和venv管理python环境
    1.pyenv与venv的关系pyenv是一个用于管理多个Python版本的工具,主要专注于解决不同项目需要不同Python版本的问题。venv是Python内置的虚拟环境管理工具,主要用于创建隔离的Python环境,帮助避免在不同项目之间发生包依赖冲突。总结:pyenv用于安装Python的多个版本,venv用于隔离......
  • python虚拟环境venv
    创建目录mkdirpyenv进入cdpyenv初始化环境python3-mvenv.进入bin目录jihan@jihandeMacBook-Propyenv%cdbinjihan@jihandeMacBook-Probin%lsActivate.ps1 activate activate.csh activate.fish pip pip3 pip3.12 python python3 python3.12jihan@jihan......
  • 利用ENVI进行遥感图像的镶嵌与剪切
            使用ENVI5.6的Toolbox中的SeamlessMosaic工具        在跳出的界面中添加需要进行镶嵌的遥感影像        点击ColorCorrection选择OverlapAreaOnly        在Seamlines/Feathering中选择SeamlineFeathering    ......
  • Medieval Fantasy Town Village Environment for RPG FPS 中世纪城镇环境
    巨大的中世纪城镇环境,有数百个预制件,包括内部和外部、道具等等。更新:现在包括更密集城镇的“外墙”!中世纪城镇环境是一个庞大的环境包,有100多个预制件,还有许多预制和模块化的建筑,有内部和外部,多种门窗选择,以及大量的道具和额外的预制件。更新:现在包括用于更密集城镇和环境的......
  • error: rpmdb, failed: BDB1507 Thread died in Berkeley DB library,error(-30973) fro
    rpm数据库错误,一般原因:yum更新等rpm软件安装进程被异常终止[root@49bdfccd7f61~]#yuminstall-yxxxerror:rpmdb:BDB0113Thread/process22858/140222685267712failed:BDB1507ThreaddiedinBerkeleyDBlibraryerror:db5error(-30973)fromdbenv->failchk:BDB0......
  • Java开发环境搭建 目录与摘要(Java Developer environment Config on Windows 10 --Cat
    Java开发环境搭建目录与摘要数据结构复习一、线性结构1.栈和队列2.链表二、树形结构1.二叉排序树三、排序Title1&Title2Title3contents...aaabbbccc点击查看目录目录项1目录项2目录项3目录项1......
  • Java开发环境 第二章(Java Developer environment on Windows 10 Chapter 2)
    第二章IdeaMaven安装与设置1.Idea安装(下载请至idea官网)一路默认,下一步至完成2.IdeaMaven配置a.idea注册码获取,还请自行搜索"idea激活码"或"idea破解"b.创建测试项目新建项目选择JDK项目位置c.配置Maven(maven仓库请自行搜索下载)注意修改sett......
  • Java开发环境(Java Developer environment on Windows 10)
    一、Windows10下JDK8安装与配置(JDK8installationAndConfigurationforWindows10)1.安装(installJDK8)a.注意安装路径,后面环境变量配置需要用到2.配置(config)a.windows键->设置(press"windows"key,click"set"button)在设置下输入`环境`搜索,选择"编......
  • pip install pyaudio sounddevice error: externally-managed-environment
    shgbitai@shgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$pipinstallpyaudiosounddeviceerror:externally-managed-environment×Thisenvironmentisexternallymanaged╰─>ToinstallPythonpackagessystem-wide,tryaptinstallpython3-xyz,wh......