· 

OpenAI Gymでオリジナルの環境を作る

(著)山たー

https://github.com/openai/gym/tree/master/gym/envs#how-to-create-new-environments-for-gym

を参考にする。日本語訳しているような感じだが、とりあえずは自分のメモ代わり。

 

レポジトリの作成

 まずディレクトリ及びファイルの構造を次のようにする

 

gym-foo/
  README.md
  setup.py
  gym_foo/
    __init__.py
    envs/
      __init__.py
      foo_env.py
      foo_extrahard_env.py

 

ディレクトリ名はにした。これらのファイルの中身を適切に設定する。2つの環境のClassをの2つのファイル内で定義するという状況。

 

gym-foo / setup.py

親ディレクトリ内のsetup.py。必要なライブラリ等を書いておく。

from setuptools import setup

setup(name='gym_foo',
      version='0.0.1',
      install_requires=['gym']  # And any other dependencies foo needs
)  

gym-foo / gym_foo / __init__.py

子ディレクトリ内の__init__.py

from gym.envs.registration import register

register(
    id='foo-v0',
    entry_point='gym_foo.envs:FooEnv',
)
register(
    id='foo-extrahard-v0',
    entry_point='gym_foo.envs:FooExtraHardEnv',
)

gym-foo/gym_foo/envs/__init__.py

孫ディレクトリ内の__init__.py

from gym_foo.envs.foo_env import FooEnv
from gym_foo.envs.foo_extrahard_env import FooExtraHardEnv

gym-foo/gym_foo/envs/foo_env.py

環境(Env)をClassとして定義する。foo_extrahard_env.pyも似たような中身。

import gym
from gym import error, spaces, utils
from gym.utils import seeding

class FooEnv(gym.Env):
  metadata = {'render.modes': ['human']}

  def __init__(self):
    ...
  def step(self, action):
    ...
  def reset(self):
    ...
  def render(self, mode='human', close=False):
    ...

環境の使い方

import gym
import gym_foo
env = gym.make('foo-v0')

などとする。

 

コメントをお書きください

コメント: 1
  • #1

    goalken (木曜日, 16 7月 2020 13:01)

    This is a great thing, I think everyone feels this information is very valuable, thank you https://templerun3.co