🦁

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

に公開

はじめに

この記事では、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の公式ドキュメント

岐阜大学アレックス研究室

Discussion