我有一个任务,要制作一个AI代理,学习使用ML玩视频游戏.我想在OpenAI中创建一个新环境,因为我不想在现有环境中工作.如何创建新环境.另外,有没有其他方法可以让我开始让AI Agent在没有OpenAI帮助的情况下玩特定的视频游戏?我是这方面的初学者,所以任何一种帮助/起跑方向都将受到赞赏.
我正在通过Jupyter(Ubuntu 14.04)在p2.xlarge AWS服务器上运行python 2.7脚本.我希望能够渲染我的模拟.
最小的工作示例
import gym
env = gym.make('CartPole-v0')
env.reset()
env.render()
Run Code Online (Sandbox Code Playgroud)
env.render() 使(除其他外)以下错误:
...
HINT: make sure you have OpenGL install. On Ubuntu, you can run
'apt-get install python-opengl'. If you're running on a server,
you may need a virtual frame buffer; something like this should work:
'xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>'")
...
NoSuchDisplayException: Cannot connect to "None"
Run Code Online (Sandbox Code Playgroud)
我想有些人能够看到模拟.如果我可以将它内联,那将是理想的,但任何显示方法都会很好.
编辑:这只是某些环境的问题,如经典控件.
更新我
灵感来自这个我尝试以下,而不是xvfb-run -s \"-screen 0 1400x900x24\" python <your_script.py>(我不能去上班).
xvfb-run -a jupyter …Run Code Online (Sandbox Code Playgroud) 我在Windows 10上安装OpenAI Gym Atari环境时遇到问题.我已经在同一系统上成功安装并使用了OpenAI Gym.
它在尝试运行makefile时不断跳闸.
我在运行命令 pip install gym[atari]
这是错误:
这是我目前在我的系统上所拥有的...... cmake并且make都是明确安装的.
我正在尝试运行 OpenAI Gym 环境,但出现以下错误:
import gym
env = gym.make('Breakout-v0')
Run Code Online (Sandbox Code Playgroud)
错误
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ale_py/gym/environment.py:11: DeprecationWarning: Importing atari-py roms won't be supported in future releases of ale-py.
import ale_py.roms as roms
A.L.E: Arcade Learning Environment (version +a54a328)
[Powered by Stella]
Traceback (most recent call last):
File "/Users/username/Desktop/OpenAI Gym Stuff/OpenAI_Exp.py", line 2, in <module>
env = gym.make('Breakout-v0')
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 200, in make
return registry.make(id, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 105, in make
env = spec.make(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/gym/envs/registration.py", line 75, in make
env = cls(**_kwargs)
File …Run Code Online (Sandbox Code Playgroud) 我正在使用 Python3.10 来了解 OpenAI 的 GYM (0.25.1),并将健身房的环境设置为'FrozenLake-v1(代码如下)。
根据文档,调用env.step()应返回一个包含 4 个值(观察、奖励、完成、信息)的元组。但是,当相应地运行我的代码时,我收到一个 ValueError:
有问题的代码:
observation, reward, done, info = env.step(new_action)
Run Code Online (Sandbox Code Playgroud)
错误:
3 new_action = env.action_space.sample()
----> 5 observation, reward, done, info = env.step(new_action)
7 # here's a look at what we get back
8 print(f"observation: {observation}, reward: {reward}, done: {done}, info: {info}")
ValueError: too many values to unpack (expected 4)
Run Code Online (Sandbox Code Playgroud)
添加一个变量可以修复错误:
a, b, c, d, e = env.step(new_action)
print(a, b, c, d, e)
Run Code Online (Sandbox Code Playgroud)
输出:
5 0 …Run Code Online (Sandbox Code Playgroud) 我试图在WSL上使用OpenAI的着名"Gym"模块,并在python 3.5.2上执行代码.当我尝试运行这里解释的环境时,使用代码:
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
Run Code Online (Sandbox Code Playgroud)
有时候是这样的 :
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "/home/DrHofstadter/gym/gym/core.py", line 153, in render
return self._render(mode=mode, close=close)
File "/home/DrHofstadter/gym/gym/core.py", line 285, in _render
return self.env.render(mode, close)
File "/home/DrHofstadter/gym/gym/core.py", line 153, in render
return self._render(mode=mode, close=close)
File …Run Code Online (Sandbox Code Playgroud) python nameerror python-3.x windows-subsystem-for-linux openai-gym
我想在OpenAI CarRacing-v0环境中设置RL代理,但在此之前我想了解动作空间.在github上的代码中, 119行说:
self.action_space = spaces.Box( np.array([-1,0,0]), np.array([+1,+1,+1])) # steer, gas, brake
Run Code Online (Sandbox Code Playgroud)
我该如何阅读这一行?虽然我的问题是具体的,但CarRacing-v0我想了解spaces.Box()一般的符号
我试图在渲染时实现 Atari Games,但出现如下错误:
line 283, in render
raise error.Error(
gym.error.Error: render(mode='human') is deprecated. Please supply `render_mode` when constructing your environment, e.g., gym.make(ID, render_mode='human'). The new `render_mode` keyword argument supports DPI scaling, audio, and native framerates.
Run Code Online (Sandbox Code Playgroud)
我收到的完整错误的屏幕截图附在此处。
我的代码如下:
episodes = 5
for episode in range(1, episodes+1):
state = env.reset()
done = False
score = 0
while not done:
env.render()
action = random.choice([0,1,2,3,4,5])
n_state, reward, done, info = env.step(action)
score+=reward
print('Episode:{} Score:{}'.format(episode, score))
env.close()
Run Code Online (Sandbox Code Playgroud)
堆栈溢出中有一个类似的帖子,其中给出的解决方案是:
pip install pyglet==1.2.4
Run Code Online (Sandbox Code Playgroud)
不幸的是这对我来说也不起作用。
编辑:以下似乎也是如此FrozenLake-v0.请注意,我对简单的Q学习不感兴趣,因为我希望看到适用于连续观察空间的解决方案.
我最近创建了banana_gymOpenAI环境.方案如下:
你有一根香蕉.它必须在2天内出售,因为它在第3天会很糟糕.您可以选择价格x,但香蕉只会以概率出售
奖励为x - 1.如果第三天没有出售香蕉,则奖励为-1.(直觉:你为香蕉付了1欧元).因此,环境是非确定性的(随机的).
操作:您可以将价格设置为{0.00,0.10,0.20,...,2.00}中的任何值
观察:剩余时间(来源)
我计算了最优政策:
Opt at step 1: price 1.50 has value -0.26 (chance: 0.28)
Opt at step 2: price 1.10 has value -0.55 (chance: 0.41)
Run Code Online (Sandbox Code Playgroud)
这也符合我的直觉:首先尝试以更高的价格出售香蕉,因为如果你不卖它,你知道你还有另一种尝试.然后将价格降低到0.00以上.
我很确定这个是正确的,但为了完整起见
#!/usr/bin/env python
"""Calculate the optimal banana pricing policy."""
import math
import numpy as np
def main(total_time_steps, price_not_sold, chance_to_sell):
"""
Compare the optimal policy to a given policy.
Parameters
----------
total_time_steps : int
How often the agent may offer …Run Code Online (Sandbox Code Playgroud) python optimization reinforcement-learning openai-gym keras-rl
使用Python3.6、Ubuntu 18.04、Gym 0.15.4、RoS melodic、Tensorflow 1.14 和 rl_coach 1.01:
我构建了一个自定义 Gym 环境,它使用 360 元素数组作为观察空间。
high = np.array([4.5] * 360) #360 degree scan to a max of 4.5 meters
low = np.array([0.0] * 360)
self.observation_space = spaces.Box(low, high, dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)
但是,这还不足以通过 ClippedPPO 算法进行正确训练,我想向我的状态添加其他功能,包括:
世界中的位置(x,y 坐标)
世界中的方向(四元数:x,y,z,w) 线性轨迹(x,y,z 坐标) 角轨迹(x,y,z 坐标)。
我将上面的四个特征放入自己的 np.arrays 中,并尝试将它们全部作为状态对象传递回来,但显然它与观察空间不匹配。space.Box 让我困惑。我假设我无法将所有这些功能转储到单个 np 数组中,因为上限和下限会有所不同,但是,我无法确定如何创建具有多个“功能”的 space.Box 对象。
TIA
openai-gym ×10
python ×7
python-3.x ×3
keras-rl ×1
nameerror ×1
optimization ×1
pyglet ×1
ros ×1
valueerror ×1
windows ×1
windows-subsystem-for-linux ×1
xvfb ×1