Gym 0.26.2版本简明教程【1】

news2024/11/28 19:05:08

Gym 0.26.2版本简明教程【1】

文章目录

  • Gym 0.26.2版本简明教程【1】
      • 1. 构建gym环境
      • 2. gym.Env常用method
      • 3. 关于 gym 0.26.2新版本的更改
      • 4. Reference

Image

1. 构建gym环境

使用gym.make(id,render_mode)我们可以注册一个环境,然后我们可以查看一下这个环境的一些信息,比如action space或者state space等

常用的信息查看方式

env.action_space   		
# 查看这个环境中可用的action有多少个,返回Discrete()格式
env.observation_space   
# 查看这个环境中observation的特征,返回Box()格式
n_actions=env.action_space.n 
# 查看这个环境中可用的action有多少个,返回int
n_features=env.observation_space.shape[0] 
# 查看这个环境中observation的特征有多少个,返回int

import gym

if __name__ == "__main__":
    env = gym.make(id='CartPole-v1')
    print(env.action_space)
    print(env.observation_space)
    print(env.reward_range)

显示的结果如下

Discrete(2)
Box([-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38], (4,), float32)
(-inf, inf)

可以看出,该环境的动作空间是离散的且只有两个动作,状态包含了一些数据,奖励范围是从正无穷到负无穷。

  • action_space 是一个离散 Discrete 类型,从 discrete.py 源码可知,范围是一个 {0,1,...,n-1} 长度为 n 的非负整数集合,在 CartPole-v1 例子中,动作空间表示为 {0,1}
  • observation_space 是一个 Box 类型,从 box.py 源码可知,表示一个 n 维的盒子,所以在上一节打印出来的 observation 是一个长度为 4 的数组。数组中的每个元素都具有上下界。

如果在构建的时候指定显示渲染,那么则可以看到有游戏图像出现

import gym

if __name__ == "__main__":
    env = gym.make(id='CartPole-v1', render_mode='human')
    env.reset()
    for _ in range(100):
        env.render()
    env.close()

图像如下所示

Image

2. gym.Env常用method

常用的method包括

  • gym.Env.reset()恢复初始状态,并且返回初始状态的observation

  • gym.Env.render()显示图像,只有先reset了才能进行显示

  • gym.Env.step()执行一部交互,并且返回observation_, reward, termianted, truncated, info

    • observation_ 是下一次观测值
    • reward 是执行这一步的奖励
    • terminated 是否是因为到达MDP终点而结束
    • truncated 是否是因为MDP之外的截断条件而结束
    • info针对调试过程的诊断信息。在标准的智体仿真评估当中不会使用到这个 info。

    详细信息如下图所示,详见官网

Image
  • gym.Env.close() 关闭环境

下面介绍常用的强化学习范式

import gym

episodes = 10
timesteps = 100

if __name__ == "__main__":
    env = gym.make(id='CartPole-v1',render_mode='human')
    for e in range(episodes):
        observation, info = env.reset()
        done = False
        while not done:
            env.render()
            action = env.action_space.sample()
            observation_, reward, terminated, truncated, info = env.step(action)
            done = termianted or truncated
            agent.learn()
    env.close()
    

3. 关于 gym 0.26.2新版本的更改

最重要的一个更改就是gym.Env.reset()返回的值新增了info这一项,官网上解释说:gym.Env.reset()的返回值有两项,第一项是类似于gym.Env.step()的返回值,是observation,第二项是提示信息info,这一项不常用,可以用__来接收然后丢弃。

Image

以CartPole-v1环境为例

import gym

if __name__ == "__main__":
    env = gym.make(id='CartPole-v1',render_mode='human')
    observation, _ = env.reset()
    observation_, reward, terminated, truncated, _ = env.step(1)
    print(observation)
    print(observation_)
    print(reward)
    print(terminated)
    print(truncated)
    env.close()

结果如下

[ 0.03654356  0.002174    0.04146604 -0.0444533 ]
[ 0.03658704  0.19667757  0.04057698 -0.32377034]
1.0
False
False

4. Reference

参考教程1

参考教程2

[官网教程](

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 web 自动化之处理…

TVS二极管能替代稳压二极管吗?有什么区别?

经常有应用工程师询问:TVS二极管能否替代替换稳压二极管?接下来,TVS厂家东我电子针对TVS二极管和稳压二极管这个话题,详细讲解下这两者的相同点和不同点。 TVS二极管英文名是:Transient voltage suppression diode&am…

3.01 用户在确认订单页收货地址操作

用户在确认订单页面,可以针对收货地址做如下操作: 1. 查询用户的所有收货地址列表 2. 新增收货地址 3. 删除收货地址 4. 修改收货地址 5. 设置默认地址步骤1:创建对应用户地址BO public class AddressBO {private String addressId;private…

.NET SqlSuger 简单介绍,超快开发数据库

文章目录 前言SqlSugar使用我的环境Nuget 安装新建连接串DB First 和 Code First使用增删改查 总结 前言 我之前介绍过EFCore 怎么使用Nuget快速创建数据库,我之后发现SqlSugar更快。这里简单再说一下SqlSugar如何使用 .NET Core 数据库DB First自动生成&#xff0…

3.核心抽象

3.1 环境对象 StreamExecutionEnvironment是Flink应用开发时的概念,表示流计算作业的执行环境,是作业开发的入口、数据源接口、生成和转换DataStream的接口、数据Sink的接口、作业配置接口、作业启动执行的入口。Environment 是 运 行 时 作 业 级 别 的…

如何使用自己域名进行远程访问内网群晖NAS 6.X

使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 文章目录 使用自己的域名远程访问内网群晖NAS 6.X【内网穿透】 在之前的文章中,我们向大家演示了如何使用cpolar,创建一条固定的、能够在公共互联网登录内网群晖NAS的数据隧道。这条隧道已经能够应对…

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用

TextBrewer:融合并改进了NLP和CV中的多种知识蒸馏技术、提供便捷快速的知识蒸馏框架、提升模型的推理速度,减少内存占用 TextBrewer是一个基于PyTorch的、为实现NLP中的知识蒸馏任务而设计的工具包, 融合并改进了NLP和CV中的多种知识蒸馏技术&#xff0…

Bean基本注解开发和Bean依赖注入注解开发

目录 1.Bean基本注解开发 Component Scorelazy PostConstruct和PreDestroy RepositoryServiceController 2.Bean依赖注入注解开发 Value Autowired Qualifier Resource 扩展AutoWired 1.Bean基本注解开发 基本Bean注解,主要是使用注释的方式替代原有xml的…

记录--说一说css的font-size: 0

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 平常我们说的font-size:0;就是设置字体大小为0对吧,但是它的用处不仅仅如此哦,它还可以消除子行内元素间额外多余的空白! 问题描述&#xff…

Android前沿技术?Jetpack如何?

Jetpack Compose是Android开发领域的一项前沿技术,它提供了一种全新的方式来构建用户界面。近年来,Jetpack Compose在各大招聘等网站上的招聘岗位逐渐增多,薪资待遇也相应提高。本文将从招聘岗位的薪资与技术要求入手,分析Jetpack…

《Java-SE-第三十章》之哲学家就餐问题

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

mongodb-win32-x86_64-2008plus-3.4.24-signed.msi

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd C:\MongoDB\Server\3.4\binC:\MongoDB\Server\3.4\bin>C:\MongoDB\Server\3.4\bin>mongod --help Options:General options:-h [ --help ] …

窥探系列之Mybatis-plus XML分页查询

mybatisPlus分页查询原理 searchCount字段控制是否查询总记录数 com.baomidou.mybatisplus.plugins.PaginationInterceptor 该插件拦截sql,如果searchCounttrue,则使用sql解析包jsqlparser根据原sql生成count语句,另外关键

面对裁员风险,我们该如何提升体能素质?——探讨年龄与体能的关系

文章目录 每日一句正能量前言你现在身体的体能状况如何?你有身体焦虑吗?如何保持规律性运动?你有哪些健康生活的好习惯?后记 每日一句正能量 当你看不到别人的缺点时,你就能从别人的行为、语言、思想中得到无限的智慧。…

数据结构 | 利用二叉堆实现优先级队列

目录 一、二叉堆的操作 二、二叉堆的实现 2.1 结构属性 2.2 堆的有序性 2.3 堆操作 队列有一个重要的变体,叫作优先级队列。和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的。优先级最高的元素在最前&#xff…

【程序环境与预处理玩转指南】

本章重点: 程序的翻译环境 程序的执行环境 详解:C语言程序的编译链接 预定义符号介绍 预处理指令 #define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令 #include 预处理指令 #undef 条件编译 1. 程序的翻译环境和执行环境 在…

Java基础入门篇——IntelliJ IDEA下载与安装(四)

IntelliJ IDEA是一款流行的Java集成开发环境(IDE),由JetBrains公司开发。你可以按照以下步骤下载和安装IntelliJ IDEA: 一、下载 访问官方网站:打开浏览器,访问JetBrains的官方网站。你可以直接在搜索引擎…

SAP MM学习笔记15-物料调达中的Master数据(2)-品目Master

SAP中做一个购买发注的时候,涉及到以下Master数据: 1,仕入先Master(供应商):跟谁买 2,品目Master(物料):买什么 3,购买情报:什么价…

MONGODB ---- Austindatabases 历年文章合集

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

过滤器和拦截器的六大区别

平时觉得简单的知识点,但通常都不会太关注细节,一旦被别人问起来,反倒说不出个所以然来。真的就是一看就会一说就废。下面带大家一起结合实践来区分过滤器和拦截器吧~ 通俗理解: (1)过滤器(Fil…