Gymnasiumを使ってみる その1(環境構築、サンプルコードの実行)

はじめに

 今回はGymnasiumという、強化学習を行うためのソフトウェアを試してみました。

 元々OpenAIのGymというソフトウェアがあるのは知っていたのですが、実行できないことがありました。調べてみると、2021年にGymnasiumに移行することになったようです。

▼GymのGitHubのリポジトリには、Gymnasiumに移行すると書かれています。

https://github.com/openai/gym

▼以下の書籍を読みながら試していたことがあるのですが、サンプルコードを実行できなかった記憶があります。この書籍で紹介されているのはGymです。

▼GymnasiumのGitHubのリポジトリはこちら

https://github.com/Farama-Foundation/Gymnasium

 私自身はUnreal EngineとROSの連携によるロボットのシミュレーションを行っていますが、最近は他のシミュレーションソフトウェアも試しています。その中でも、Gymnasiumは強化学習に利用できそうです。

▼以前の記事はこちら

Genesisを使ってみる その1(環境構築、サンプルプログラムの実行)

はじめに  今回はGenesisという物理シミュレーションソフトウェアを試してみました。  3か月ほど前に公開されたばかりで、デモ動画が面白そうでした。グラフィックはUnr…

MuJoCoを使ってみる その1(環境構築、サンプルプログラムの実行)

はじめに  今回は物理シミュレーションを行うことができる、MuJoCoというソフトウェアを試してみました。  MuJoCoは以前の記事でGenesisを試していたときに見つけました…

関連情報

▼Gymnasiumのドキュメントページはこちら

https://gymnasium.farama.org

 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の仮想環境の作成については、以下の記事をご覧ください。

Pythonの仮想環境を作成する(venv、Windows)

はじめに  今回はPythonの仮想環境の作成についてまとめてみました。  Pythonを利用したNode-REDのノードを開発するときに仮想環境を詳しく調べていました。作成した仮…

 基本的なパッケージのインストールは以下だけで済むようです。利用するものに応じてさらにインストールしていくようになっていました。

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です