Gymnasiumを使ってみる その1(環境構築、サンプルコードの実行)
はじめに
今回はGymnasiumという、強化学習を行うためのソフトウェアを試してみました。
元々OpenAIのGymというソフトウェアがあるのは知っていたのですが、実行できないことがありました。調べてみると、2021年にGymnasiumに移行することになったようです。
▼GymのGitHubのリポジトリには、Gymnasiumに移行すると書かれています。
▼以下の書籍を読みながら試していたことがあるのですが、サンプルコードを実行できなかった記憶があります。この書籍で紹介されているのはGymです。
▼GymnasiumのGitHubのリポジトリはこちら
https://github.com/Farama-Foundation/Gymnasium
私自身はUnreal EngineとROSの連携によるロボットのシミュレーションを行っていますが、最近は他のシミュレーションソフトウェアも試しています。その中でも、Gymnasiumは強化学習に利用できそうです。
▼以前の記事はこちら
関連情報
▼Gymnasiumのドキュメントページはこちら
Atariという言葉を何回か見かけていたのですが、Arcade Learning Environmentに基づいたものだそうです。
▼Atariのページはこちら
https://pettingzoo.farama.org/environments/atari
▼Arcade Learning Environmentについてはこちら。ゲーム用のAIエージェントを開発するためのフレームワークです。
https://github.com/Farama-Foundation/Arcade-Learning-Environment
Gymnasiumに関連するライブラリが紹介されていました。
▼CleanRL (Clean Implementation of RL Algorithms)のリポジトリはこちら
https://github.com/vwxyzjn/cleanrl
▼PettingZooのリポジトリはこちら
https://github.com/Farama-Foundation/PettingZoo
それぞれのリポジトリについて、また別の記事で試してみようと思っています。
環境を構築する
まずはPythonの仮想環境を作成します。
py -3.10 -m venv pyenv-gymnasium
cd .\pyenv-gymnasium
.\Scripts\activate
▼Pythonの仮想環境の作成については、以下の記事をご覧ください。
基本的なパッケージのインストールは以下だけで済むようです。利用するものに応じてさらにインストールしていくようになっていました。
pip install gymnasium
GitHubのリポジトリをクローンしておきました。
git clone https://github.com/Farama-Foundation/Gymnasium.git
サンプルコードを実行してみる
Lunar Lander
まずはGymnasiumのドキュメントのサンプルコードを実行してみました。
▼以下のページにサンプルコードがあります。LunarLander-v3というモデルを利用したものです。
https://gymnasium.farama.org/index.html
ファイルに保存して実行してみたのですが、パッケージが不足していました。
▼Box2Dがインストールされていないというエラーが起きています。

以下のコマンドで、追加でパッケージをインストールする必要がありました。
pip install "gymnasium[box2d]"
▼起動できました!着陸後、ランダムに地形が変化して、また着陸を繰り返しました。


▼LunarLanderに関する詳しい説明は、以下のページにありました。報酬や行動が設定されているようです。
https://gymnasium.farama.org/environments/box2d/lunar_lander
Bipedal Walker
二足歩行のシミュレーションがあったので試してみました。
▼ドキュメントはこちら
https://gymnasium.farama.org/environments/box2d/bipedal_walker
以下のコマンドで実行しました。
python .\Gymnasium\gymnasium\envs\box2d\bipedal_walker.py
▼ウィンドウが起動し、歩き始めました。


▼つんのめって倒れると、ウィンドウが閉じます。

▼ターミナルにはデータが出力されていました。

実行するごとにランダムな条件で始まります。うまくいくと、端まで歩いていました。
Cart Pole
GitHubのREADMEにあった、CartPole-v1のコードも実行してみたのですが、何も表示されていませんでした。
▼以下のリンク先のコードです。
https://github.com/Farama-Foundation/Gymnasium?tab=readme-ov-file#api
Lunar Landerのコードと比較するとrender_mode="human"が無かったので、追加すると実行できました。
修正後のコードは以下です。
import gymnasium as gym
env = gym.make("CartPole-v1", render_mode="human")
observation, info = env.reset(seed=42)
for _ in range(1000):
action = env.action_space.sample()
observation, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
observation, info = env.reset()
env.close()
▼倒立振り子のシミュレーションですね。

こちらもランダムな条件で何度も繰り返していました。
▼以下のページにCart Poleに関するドキュメントがありました。
https://gymnasium.farama.org/environments/classic_control/cart_pole
最後に
今回は環境構築とサンプルコードの実行だけ試してみました。実際に強化学習に利用していきたいなと思っています。
▼MuJoCoを利用した強化学習のチュートリアルがあったので、試してみたいところです。
https://gymnasium.farama.org/tutorials/training_agents/reinforce_invpend_gym_v26