【问题标题】:How to use a custom Openai gym environment with Openai stable-baselines RL algorithms?如何使用具有 Openai 稳定基线 RL 算法的自定义 Openai 健身房环境?
【发布时间】:2020-03-15 09:25:44
【问题描述】:

我一直在尝试使用来自https://github.com/eivindeb/fixed-wing-gym 的固定翼无人机定制 openai 健身房环境,通过 openai 稳定基线算法对其进行测试,但我已经遇到了好几天的问题。我的基线是来自https://stable-baselines.readthedocs.io/en/master/guide/examples.html#multiprocessing-unleashing-the-power-of-vectorized-environments 的 CartPole 示例 Multiprocessing: Unleashing the Power of Vectorized Environments,因为我需要提供参数并且我正在尝试使用多处理,我相信这个示例就是我所需要的。

我已将基线示例修改如下:

import gym
import numpy as np

from stable_baselines.common.policies import MlpPolicy
from stable_baselines.common.vec_env import SubprocVecEnv
from stable_baselines.common import set_global_seeds
from stable_baselines import ACKTR, PPO2
from gym_fixed_wing.fixed_wing import FixedWingAircraft


def make_env(env_id, rank, seed=0):
    """
    Utility function for multiprocessed env.

    :param env_id: (str) the environment ID
    :param num_env: (int) the number of environments you wish to have in subprocesses
    :param seed: (int) the inital seed for RNG
    :param rank: (int) index of the subprocess
    """

    def _init():
        env = FixedWingAircraft("fixed_wing_config.json")
        #env = gym.make(env_id)
        env.seed(seed + rank)
        return env

    set_global_seeds(seed)
    return _init

if __name__ == '__main__':
    env_id = "fixed_wing"
    #env_id = "CartPole-v1"
    num_cpu = 4  # Number of processes to use
    # Create the vectorized environment
    env = SubprocVecEnv([lambda: FixedWingAircraft for i in range(num_cpu)])
    #env = SubprocVecEnv([make_env(env_id, i) for i in range(num_cpu)])

    model = PPO2(MlpPolicy, env, verbose=1)
    model.learn(total_timesteps=25000)

    obs = env.reset()
    for _ in range(1000):
        action, _states = model.predict(obs)
        obs, rewards, dones, info = env.step(action)
        env.render()

我不断收到的错误如下:

Traceback (most recent call last):
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/fixed-wing-gym/gym_fixed_wing/ACKTR_fixedwing.py", line 38, in <module>
    model = PPO2(MlpPolicy, env, verbose=1)
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/ppo2/ppo2.py", line 104, in __init__
    self.setup_model()
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/ppo2/ppo2.py", line 134, in setup_model
    n_batch_step, reuse=False, **self.policy_kwargs)
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/common/policies.py", line 660, in __init__
    feature_extraction="mlp", **_kwargs)
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/common/policies.py", line 540, in __init__
    scale=(feature_extraction == "cnn"))
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/common/policies.py", line 221, in __init__
    scale=scale)
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/common/policies.py", line 117, in __init__
    self._obs_ph, self._processed_obs = observation_input(ob_space, n_batch, scale=scale)
  File "/home/bonie/PycharmProjects/deepRL_fixedwing/stable-baselines/stable_baselines/common/input.py", line 51, in observation_input
    type(ob_space).__name__))
NotImplementedError: Error: the model does not support input space of type NoneType

我不确定作为env_iddef make_env(env_id, rank, seed=0) 函数的真正输入内容。我还认为用于并行进程的 VecEnv 函数设置不正确。

我在 Ubuntu 18.04 中使用 PyCharm IDE 使用 Python v3.6 进行编码。

任何建议在这一点上都会有帮助!

谢谢。

【问题讨论】:

  • 似乎较新版本的稳定基线会在参与者的动作中产生 NaN 值。我链接的仓库中的 Github 文件已更新并修复了该问题。

标签: python reinforcement-learning agent openai-gym virtual-environment


【解决方案1】:

您创建了一个自定义环境,但您没有使用 openai gym 接口注册它。这就是env_id 所指的内容。 gym 中的所有环境都可以通过调用其注册名称来进行设置。

所以基本上你需要做的是按照设置说明here 并创建适当的__init__.pysetup.py 脚本,并遵循相同的文件结构。

最后,使用环境目录中的pip install -e . 在本地安装您的包。

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2021-04-19
    • 2018-04-30
    • 2017-12-17
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多