*はじめに [#ia4c9bd4]
[[OpenAI Gym:http://gym.openai.com]] は、安全な人工汎用知能 (AGI) の研究を支援している非営利団体 [[OpenAI:https://openai.com]] が提供している強化学習ツールキットです。
OpenAI Gymのページには、Windowsへのインストール方法は載っていません。
また、Windowsへのインストール方法を解説しているページでは、Windows 10のWindows Subsystem for Linux (WSL)上にインストールする方法が多いです。
ここでは、WSLを使わずに、Anacondaを使ってWindows上にOpenAI Gymをインストールする方法を説明します。
Anacondaは機械学習のためのツールをまとめてインストールしてくれますが、Anacondaのパッケージ管理ツールのcondaがまだGymをサポートしていません。
Anacondaは機械学習のためのツールをまとめてインストールしてくれますが、Anacondaのパッケージ管理ツールのcondaのWindows版がまだGymをサポートしていません。
そこで、Anaconda上でPython標準のパッケージ管理ツールであるpipを使って、Gymをインストールします。
ただし、condaとpipは「混ぜるな危険!」ということらしいので、Anaconda上にGym用の環境を作成し、pipだけを使ってインストールします。
AnacondaのインストールとJupyter Notebookの使い方については、こちらで確認してください。
-[[Pythonでデータ分析するはじめの一歩(Windows編)>機械学習/Pythonでデータ分析するはじめの一歩(Windows編)]] - とうごろうぃき
この記事の内容は、以下の環境で確認しました。
-Windows 10 Home
-Anaconda 5.3 Python 3.7 version
*Gymのインストール [#k48032d9]
まず、Anaconda NavigatorのHome画面で「Environments」をクリックして、環境の一覧を開きます。
#ref(Anaconda_environments.png,nolink,50%)
「Create」をクリックして、新しい環境を作ります。
#ref(Anaconda_create.png,nolink,50%)
ここでは、新しい環境の名前を「gym」として、「Create」をクリックします。
#ref(Anaconda_new_environment.png,nolink,50%)
新しい環境ができたら、「Open Terminal」でターミナルを開きます。
#ref(Anaconda_open_terminal.png,nolink,50%)
ターミナルが開いたら、pipでGymをインストールします。
(Python 3とPython 2の両方がインストールされている場合は、pipの替わりにpip3を使用します。)
#geshi(sh){{
> pip install gym
}}
*Jupyter Notebookのインストール [#p916bc32]
Anaconda NavigatorのHomeに戻り、リストから新しく追加した環境「gym」を選択して、「Install」をクリックします。
#ref(Anaconda_jupyter_install.png,nolink,50%)
*Gymの動作確認 [#sfd49c48]
Anaconda NavigatorのHomeから、「gym」を選択して、「Launch」をクリックします。
#ref(Anaconda_jupyter_launch.png,nolink,50%)
Jupyter Notebookが起動し、ブラウザが開きます。
新しいNotebookを開いて、次のサンプルプログラムを打ち込み、実行します。
#geshi(python){{
import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
observation = env.reset() # 状態
for t in range(100):
env.render()
print(observation)
action = env.action_space.sample() # 行動(一様選択) 0: 左、1: 右
observation, reward, done, info = env.step(action) # 行動を実行し、次の状態、報酬、終端状態かどうか、デバッグ用情報を受け取る
if done:
print("Episode finished after {} timesteps".format(t+1))
break
}}
次のような画面が出てきて、ランダムな動きをしたらOKです。
#ref(Gym_cart_pole.png,nolink,50%)