ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

Open AI GymのEnvを実行する

以前、openai/baselinesをインストールして実行する記事を書きました。

nullpo24.hatenablog.com

ここではopenai/gymのEnvを実行する方法について記述します。

(virtualenv内で実行したほうが良いかもしれない)

openai/gymインストール

$ git clone https://github.com/openai/gym.git
$ cd gym
$ pip install -e .

実行

実行用のスクリプトを作成

$ gedit test.py

test.pyは以下の内容を記述します。

import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample())

実行

$ python test.py

gymにEnvを登録

上記のgym.makeはgymに登録されている環境を呼び出すことができます。
gymに登録するにはgym.envs.registration.register関数を使用します。
それはenv配下の__init.py__内に記述されていて、envモジュールをインポートする時に登録されるようになっています。

現在opnai/gymで登録されているenvはこちら https://github.com/openai/gym/blob/master/gym/envs/__init__.py

その他のEnvを実行

gymに登録されていて、他のモジュールに依存しないToy Text等の単純な環境であれば、上記のid(CartPole-v0)を書き換えるだけで実行ができます。

import gym
env = gym.make('Taxi-v2')
env.reset()
for _ in range(1000):
    env.render()
    env.step(env.action_space.sample())

それぞれのEnvの基底クラスは https://github.com/openai/gym/blob/master/gym/core.py にあり、独自に実装する場合はこれを継承してオーバーライドします。

Envを独自に実装する場合

大雑把に各々のEnvの実装を見てみると
【初期化→処理→判定→終了処理 】
      ↑  ↵
となる。
大雑把すぎるので、
とりあえず繰り返しの処理に相当する_step(self, action)に視点を置いてみる。

f:id:nullpo24:20190627200007p:plain