GYM 强化学习 文档 (一)
一、安装 Installation:pip install gym二、环境 Environments:以下是让强化学习运行的最小化的原始案例,首先,我们会初始化一个CartPole-v0(即手推车-杆子游戏的初始化环境) 环境,并渲染他的行为1000次,具体代码如下:[具体运行案例,放到本地环境运行]import gymenv = gym.make('CartPole-v0')env.reset(
一、安装 Installation:pip install gym
二、环境 Environments:
以下是让强化学习运行的最小化的原始案例,首先,我们会初始化一个CartPole-v0(即手推车-杆子游戏的初始化环境) 环境,并渲染他的行为1000次,具体代码如下:[具体运行案例,放到本地环境运行]
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 env.close()推荐您可以使用如:
MountainCar-v0,MsPacman-v0代替上文的CartPole-v0,去尝试更多好玩的样例。更多问题,请查验:https://github.com/openai/gym
三、观测量 Observations:
如果你想要的结果并不是每次都采用随机化的行动,你想要的agent是想让他从环境中得到一些反馈的,那么环境的 Step 函数可以精确的帮助我们做到这个功能,Step 函数返回四个值:
observation(object), 一个具体的环境对象,代表着你能观测的环境。就好像 相机中的像素数据,棋盘游戏中的棋盘状态等;reward(float),一些对于先前行为的奖励,这个奖励的尺度取决与您游戏的环境,当然,所有的游戏的目标都是一样的,就是最大最小化代价,也就是最大化游戏中的奖励函数;done(boolean),表示是否该重新启动新的一轮环境,大多数的任务都是有明确划分的,即一轮(episode)任务的完成是well-defined,当done的值取true的时候,则代表着这一轮的训练过程结束了;info(dict),对调试有用的诊断信息,当然这只是诊断的信息,并不能帮助你训练;标准的agent-environment循环如下所示,他可能可以帮助你理解上述的四个值:
在这个循环中,agent都会选择一个action,然后环境返回一个obseration与reward
每个这样的过程循环,需要用 reset() 函数进行设置(然后返回一个初始化的obseration),所以经过介绍后,我们可以将最初的代码写成如下的样子:
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 env.close()四、空间 Spaces:
在上面的样例中,我们从环境的动作空间(environment action space)进行随机行为的抽样,但是这些action到底是什么呢?每一个环境都有一个action_space与一个obseration_space,他们都是Space类型的;
import gym env = gym.make('CartPole-v0') print(env.action_space) #> Discrete(2) print(env.observation_space) #> Box(4,)(1)这个Discrete的空间是一个连续的定长的非负数字,如Discrete(2) = 0 and 1;
(2)这个Box的空间代表这 n-D 的框,所以有效的obseration是一个四个数字的数组,就像下面一样
print(env.observation_space.high) #> array([ 2.4 , inf, 0.20943951, inf]) print(env.observation_space.low) #> array([-2.4 , -inf, -0.20943951, -inf])以上两个Space都是最常用的空间,所以你可以通过以下代码来进行检查
from gym import spaces space = spaces.Discrete(8) # Set with 8 elements {0, 1, 2, ..., 7} x = space.sample() assert space.contains(x) assert space.n == 8For
CartPole-v0one of the actions applies force to the left, and one of them applies force to the right. (Can you figure out which is which?)
更多推荐


所有评论(0)