python 笔记 :Gym库 (官方文档笔记)
Gym是一个开发和比较强化学习算法的工具箱。它不依赖强化学习算法结构,并且可以使用很多方法对它进行调用。
1 Gym环境
这是一个让某种小游戏运行的简单例子。
这将运行 CartPole-v0 环境实例 1000 个时间步,在每次迭代的时候都会将环境初始化(env.render)。运行之后你将会看到一个经典的推车杆问题
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(100):env.render()#提供环境env.step(env.action_space.sample()) #env.action_space.sample() 会在动作空间中随机选择一个#env.step会顺着这个动作进入下一个状态
env.close()
1.1 动作是如何和环境交互的
与环境交互过程中,每一步环境都会返回四个值
observation (object)
|
一个特定的环境对象,代表了你从环境中得到的观测值。 例如从摄像头获得的像素数据,机器人的关节角度和关节速度,或者棋盘游戏的棋盘。 |
reward (float)
|
由于之前采取的动作所获得的奖励总和。 |
done (boolean)
|
决定是否重置环境,大多数,但不是所有的任务都被定义好了什么情况该结束这个回合。(举个例子,前面所展示的这个倒立摆的小车离开地太远了就结束了这个回合) |
info (dict)
|
调试过程中将会产生的有用信息,有时它会对我们的强化学习学习过程很有用 |
程序的开始被叫做reset()
,它会返回一个初始的观测值,因此像比于前面的代码,一个改良版的方式编写代码如下所示:
import gym
env = gym.make('CartPole-v1')
for i_episode in range(2):observation = env.reset()#初始话环境for t in range(100):env.render()#提供环境action = env.action_space.sample()#在可行的动作空间中随机选择一个observation, reward, done, info = env.step(action)#顺着这个动作进入下一个状态print(observation, reward, done, info)if done:print("Episode finished after {} timesteps".format(t+1))break
env.close()'''
[-0.02344513 -0.17659043 0.0043245 0.27116755] 1.0 False {}
[-0.02697694 -0.37177384 0.00974786 0.5652113 ] 1.0 False {}
[-0.03441242 -0.56703115 0.02105208 0.8609492 ] 1.0 False {}
[-0.04575304 -0.7624334 0.03827107 1.1601765 ] 1.0 False {}
[-0.06100171 -0.9580325 0.0614746 1.4646091 ] 1.0 False {}
[-0.08016236 -1.1538512 0.09076678 1.7758446 ] 1.0 False {}
[-0.10323939 -0.9598616 0.12628368 1.5127068 ] 1.0 False {}
[-0.12243662 -1.1562663 0.1565378 1.8419967 ] 1.0 False {}
[-0.14556195 -0.9631801 0.19337773 1.6017431 ] 1.0 False {}
[-0.16482554 -0.7708017 0.2254126 1.3750535 ] 1.0 True {}
Episode finished after 10 timesteps
'''
2 空间
在上面的例子中,我们一直在从环境的动作空间中采样随机动作。
【”action = env.action_space.sample()’】
每个环境都带有一个 动作空间和一个观察空间。 这些属性属于 Space 类型,它们描述了有效操作和观察的格式:
import gym env = gym.make('CartPole-v1') print(env.action_space) print(env.observation_space)''' 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) '''
离散空间允许固定范围的非负数,在'CartPole-v1'中,有效动作是 0 或 1。
print(env.action_space.start) #0 #离散动作空间的开始值print(env.action_space.n) #2 #离散动作空间中一共有几个值
框Box空间表示一个 n 维框,因此有效观察值将是一个包含 n个数字的数组。
我们还可以检查 Box 的边界:
print(env.observation_space.low) print(env.observation_space.high) ''' [-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38] [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38] '''
Box 和 Discrete 是最常见的空间。 您可以从 它们中采样或检查某些东西是否属于它:
from gym import spaces space = spaces.Discrete(8) # Set with 8 elements {0, 1, 2, ..., 7} x = space.sample() print(x) print(space.contains(x)) ''' 5 True '''
参考资料 Gym (openai.com)
python 笔记 :Gym库 (官方文档笔记)相关推荐
- Python的Requests库官方文档
中文文档地址:http://cn.python-requests.org/zh_CN/latest/ 英文文档地址:https://2.python-requests.org/en/master/ap ...
- 【goldengate】官方文档笔记三 Oracle GoldenGate 实时报表
这篇文档循序渐进的讲述了OGG在适时复制的几种配置方案.从最基本的配置开始讲起,逐渐加入新的进程,加入新的策略,配置也随之改变.下面从最基础的配置说起. 报表配置 一对一复制是OGG最基本的配置方案: ...
- 【goldengate】官方文档笔记四 Oracle GoldenGate实时数据分布
数据分布配置是一对多得配置方案.OGG支持将源库同步到多个目标系统. 数据分布配置需要注意事项: 如果数据传输过程中,投递进程(data pump)发现目标库网络连接出现故障,捕获到得数据会继续像其它 ...
- 零基础Python修炼笔记——整理自官方文档
零基础Python修炼笔记 题外话 "编外人员"学Python 书籍 交互课程 中小学儿童学习 教材和网站 科学工作者教程 视频 工具 后记 题外话 去年我自学Python的时候, ...
- python pymssql - pymssql模块官方文档的翻译
译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条.此为pymssql模块version2.1.4官方文档的翻译,仅供学习交流使用,请勿用于商业用途. ...
- Python 3.7.1 官方文档 总结
Python 3.7.1 1.一些概念 2.小用法 2.1 迭代器: 2.2 生成器 3.数据结构 3.1 字符串 3.2 列表 3.2.1 列表方法 list.append(x) list.exte ...
- carla官方文档笔记1
介绍 介绍 CARLA是一个开源的自动驾驶模拟器.它是从零开始构建的,作为一个模块化和灵活的API来解决一系列涉及到自动驾驶问题的任务.carla的主要目标之一是帮助实现自主驾驶研发的灵活化,作为一种 ...
- Django企业开发读书笔记(及官方文档学习笔记) 老男孩2019Go语言视频学习
目标:深入理解Django以及web开发深入知识,掌握Gin ,Go micro 框架 ,Kafka ,Zookeeper 为kubernetes Istio 做微服务,服务网格做铺垫 实现Pytho ...
- Unity官方文档笔记(一)在Unity中操作
前言:本系列文档基于Unity 2019.4版本进行整理 一 系统要求 1.1 Unity Editor Windows 需要Win7(SP1+)及以上系统,仅限64位版本:CPU要求X64架构:GP ...
最新文章
- Android 中文api (88)——SharedPreferences
- 谷歌官方TensorFlow开发者认证来了,吴恩达:学我的课,报名费五折
- aspx页面事件执行顺序
- 1.	变量提升 2.	条件语句 3.	循环语句 弹出框的三种形式 If条件的种类...
- KTV阶段项目告一段落,让我们张开双臂迎接新阶段吧!!
- angular五大服务顺序,angularJS $事件处理程序的触发顺序
- javascript面试_在编码面试中需要注意的3个JavaScript问题
- 201621123080《Java程序设计》第十一周学习总结
- Nhibernate.hbm2ddl.auto配置详解
- Windows安装Apache注册服务出现(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager,
- rabbitmq原理总结,Java反射的简单入门
- gtk+blade+anjuta 的简单实例
- jQuery1.9.1源码分析--Animation模块
- Android音频框架笔记 - 下篇
- 一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
- ACCESS数据库注入解析
- 我的HTC G16 CHACHA A810e版手机如何解锁和一键root的
- 如何用公式计算计算机的及格率,及格率和优秀率公式 在excel中如何计算及...
- 【分享】新品TI AM5708开发板!DSP+ARM异构多核!相比OMAP-L138,性能升级;相比AM5728,成本优化、功耗更低!
- win7搭建nas存储服务器_普通用户的低成本家庭文件服务器(伪NAS)的搭建(系统篇)...