LoginSignup
2
0

自作したgymnasiumのカスタム環境を登録し、別ファイルから使用する方法

Last updated at Posted at 2024-01-23

はじめに

この記事では、OpenAIによる強化学習のためのAPIであるgymnasiumにて自作のカスタム環境を登録し、その環境を使うための一連の流れをまとめています。簡単な流れとしては、

  1. ディレクトリ構造を正しく設計する
  2. "setup.py"と"__ init __.py"を形式に沿って作成する
  3. pip installを行ってローカルにカスタム環境を登録する
  4. 使用したいファイルにてimportし、"env.make"によって環境を落とし込む

となっています。以下では一つずつ詳しいやり方を載せていきます。

1.ディレクトリ構造を正しく設計する

作成したカスタム環境は後にpip installにてpcのローカルに登録します。そのためには、フォーマットに沿ったディレクトリ作りをしておく必要があります。具体的には、

ディレクトリ構造
custom-gym-examples/
    README.md //無くても可
    setup.py
    custom_gym_examples/ //ハイフンは禁止
        __init__.py //resister関数はここで定義
        envs/
            __init__.py //空っぽでOK
            customEnv.py

となります。

この形式で作成しておけば、後に"custom_gym_examples"という名前のパッケージをローカルに登録でき、好きなpythonファイルにimportすることができます。

ちなみに、それぞれのディレクトリ名と環境をのものを記述するpythonファイル名に指定はありません。

2."setup.py"と"__ init __.py"を形式に沿って作成する

setup.pyは以下のように記述してください。

setup.py
from setuptools import setup

setup(
    name='custom_gym_examples', #同層のディレクトリ名
    version='0.0.1',
    install_requires=[
    #gymnasiumやpygameなど用いたパッケージを記述
    ],
)

__ init __.pyは以下のように記述してください。

__init__.py
from gymnasium.envs.registration import register

register(
    id='CustomGymEnv-v0', #好きな環境名とバージョン番号を指定
    entry_point='custom_gym_examples.envs:CustomGymEnv',#CustomEnvはcustomEnv.pyの中のクラス名
)

注意すべきはentory_pointの値です。
アンダーバーなどややこしい部分が多いのでしっかりと構造の中のどこを持ってきているか確認してください。

特に、:の後ろはファイル名ではなくクラス名であることに注意が必要です。

3.pip installを行ってローカルにカスタム環境を登録する

ここまでで、環境の整備はすべて終了です。pip installを行ってローカルに登録していきましょう。

まずはcustom-gym-examplesディレクトリまで移動してください。そこから以下のコマンドを順に行っていきます。

cd ..
pip install -e ./custom-gym-examples

Successfully installed CustomGymEnv (←登録した環境名)と表示されたら成功です!!

(ここはアンダーバーではなく、ハイフンの方のディレクトリ名であることに注意してください)

4.使用したいファイルにてimportし、"env.make"によって環境を落とし込む

最後に実際に使っていきましょう。importとgym.make()関数を使うことで使用することができます。

import gymnasium as gym
import custom_gym_examples #ここはアンダーバーの方
import time

env = gym.make('CustomGymEnv-v0')

これでenv変数の中に自作したカスタム環境を構築することができました。
あとは煮るなり焼くなり自由に使えます!では!!

参考文献

gymの公式ドキュメント

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0