Gym
Gym
用于研发与比较强化学习算法的工具。
安装
pip install gym
环境
车杆问题,模型栗子CartPole-v0
env.step() ,传入0,1,表示车向左,右给1牛顿的力,现在要平衡这个车。
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
我们可以尝试一下,01010101,现实生活中,会让这根杆转起来,当然这不是我们平衡这个车的目标咯。
import numpy as np
import random
import gym
env = gym.make('CartPole-v0')
env.reset()
s = 0
for _ in range(1000):
env.render()
env.step(s^1)
s^=1
当然,我们可以切换场景,gym最重要的就是训练环境,有很多,有登山,走路的等等。
为达到我们平衡这个车杆的目标,我们可以设计我们自己的算法,当然我们需要知道当前车的状态,实际上step返回值有四个,包含了深度学习的常用概念。
observation :环境对象,和你选的环境有关,例如你选的机器人训练环境,他就是机器人的关节等信息。
reward:通过前面的action,你得到的奖励。(大小不一定和模型选择相关)
done:游戏是否结束,(例如杆的角度倾斜太大了)
info:用于调试的信息,然而,官方环境不允许使用。
这就是Gym的经典的"agent-environment loop" (代理环境循环)。如图所示:


这个过程,首先reset(),返回一个环境对象。程序必须接受done方法,当满足done游戏结束标记,程序就退出。
【注】 render()重新绘制环境的一帧
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset()
for t in range(100):
env.render()
print(observation)
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break

【注】这里我们打印了observation环境特性对象。

其含义,小车的位置,小车的速度,木棒的角度,木棒的速度。
Spaces(空间)
每一个环境都有 action_space,observation_space,他们的类型是Space,可以打印出来他们的属性。
import gym
env = gym.make('CartPole-v0')
print(env.action_space)
#> Discrete(2)
print(env.observation_space)
#> Box(4,)
Discrete空间允许随机确定的非负数,在这个案例中就是0,1。Box空间代表问题的n维空间。我们查看一下他的环境特性属性,4个数字。
print(env.observation_space.high)
#> array([ 2.4 , inf, 0.20943951, inf])
print(env.observation_space.low)
#> array([-2.4 , -inf, -0.20943951, -inf])
这有助于通用代码的编写。在车杆问题中,你可以给左右的力,你知道这些数据的含义了吗?幸运的是,你的算法学的越好,你就越少解释这些数据的含义。
Gym的更多相关文章
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS Memory Limit:65536KB 64bit IO Fo ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- ACM: Gym 101047E Escape from Ayutthaya - BFS
Gym 101047E Escape from Ayutthaya Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I6 ...
- ACM: Gym 101047B Renzo and the palindromic decoration - 手速题
Gym 101047B Renzo and the palindromic decoration Time Limit:2000MS Memory Limit:65536KB 64 ...
- Gym 101102J---Divisible Numbers(反推技巧题)
题目链接 http://codeforces.com/gym/101102/problem/J Description standard input/output You are given an a ...
- Gym 100917J---Judgement(01背包+bitset)
题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatements The jury ...
- Gym 100917J---dir -C(RMQ--ST)
题目链接 http://codeforces.com/gym/100917/problem/D problem description Famous Berland coder and IT mana ...
- Gym 101102D---Rectangles(单调栈)
题目链接 http://codeforces.com/gym/101102/problem/D problem description Given an R×C grid with each cel ...
- Gym 101102C---Bored Judge(区间最大值)
题目链接 http://codeforces.com/gym/101102/problem/C problem description Judge Bahosain was bored at ACM ...
- 2016"百度之星" - 初赛(Astar Round2A)Gym Class(拓扑排序)
Gym Class Accepts: 849 Submissions: 4247 Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65 ...
随机推荐
- Python 字符串 (str)
作者博文地址:https://www.cnblogs.com/liu-shuai/ Python字符串的常用操作包括以下但不限于以下操作: 1 字符串的替换.删除.切片.复制.连接.比较.查找.分割等 ...
- sqlplus连接oracle语法
sqlplus文件在product\11.2.0\dbhome_1\BIN目录下. 连接语法:用户名/密码@ip/服务名
- 牛客网Java刷题知识点之equals和hashcode()
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- jquery 添加关键字小插件
模块化封装,兼容seajs /** * User: c3t * Date: 14-3-25 * Time: 下午4:16 */ define(function (require, exports, m ...
- C++程序设计基础(5)sizeof的使用
1.知识点 (1)sizeof是一个单目运算发,而不是一个函数,其用于获取操作数所占内存空间的字节数. (2)sizeof的操作数可以使类型名,也可以是表达式,如果是类型名则直接获得该类型所占字节数, ...
- 从零开始写C# MVC框架之--- 项目结构
框架总分2个项目:Web开发项目.帮助类项目 (ZyCommon.Zy.Utilities) 1.ZyCommon,是Web开发项目结构.新建一个空解决方案,再建Data.Service.ZyWeb解 ...
- vsCode代码缩略图
vsCode配置代码缩略图: 文件--首选项--设置 搜索 minimap true 打开 false 关闭
- jquery解析xml
更多的项目都是在解析json,今天临时让解析几个xml文件,其实都一样,总结一下吧. 例如我们有这样一个xml文件 <?xml version="1.0" encoding= ...
- qt中的lineEdit文本输入框的输入类型限制(三种验证类)
qt的三种验证类: 1.输入int类型 QValidator *validator=new QIntValidator(100,999,this): QLineEdit *edit=new QLine ...
- Matlab GUI选项卡
1.在这个网址下载一个工具包,里面应该有四个文件:tabselectionfcp.p.tabselectionfcn.m.tabpanel.p和tabpanel.m,显然代码用.p格式进行加密了. 2 ...