gymのregisterを変更する。
目的
Cartpoleタスクの最大ステップ数を増加しよう!
はじめに
OpenAIGymから提供されている強化学習のMNIST的存在のCartpole
ノーマルのGymからは、v0
とv1
が提供されている。
この2つの違いは、タスククリアとなるmax_episode_steps
と
報酬閾値のmax_episode_steps
の違いだけである。
今回はタスククリアのmax_episode_steps
をプログラム内部から書き換え
られないか調べて出来たので記録として残します。
この方法ならばenv.step(action)
での返り値のdoneがTrueになるタイミングを
600stepや111stepのように任意に指定することができるようになります。
また他のタスクにおいても
https://github.com/openai/gym にある
openai/gym/blob/master/gym/envs/__init__.py
の中にあるregisterの値を変更することができると思います。
やり方
env._max_episode_steps = 600
とするだけ
これでタスクは600step立ち続けないとクリアできないタスクになりました!
サンプルプログラム
import gym
import numpy as np
#CLI上に変なメッセージが出ないようにする
gym.logger.set_level(40)
#gymとnp乱数の固定
SEED = 0
np.random.seed(SEED)
env.seed(SEED)
env.action_space.np_random.seed(SEED)#タスクで取り得る行動の中からランダムに選ばれる行動も固定するならここも指定
#ゲーム名で定義
env = gym.make('CartPole-v0')
#!!!!CartPoleの最大ステップ数を変更する!!!!
env._max_episode_steps = 600
observation = env.reset() #環境のリセット
while True:
#ゲームの中で取りうることのできる行動をランダムに出力する
action = env.action_space.sample()
observation, reward, done, info = env.step(action)#行動を入れることで変化が起こる
print(observation, done, action)#状態とゲーム状態と選択された行動を出力する
if done:
break
最後に
max_episode_stepsを変更することはできたものの実際にプログラムの中で
この変更された値を確認する手法を見つけることができませんでした。
確認としてはCartpole-v1で学習させたエージェントの実行時に600step倒立できる確認した所
600step倒立できていたので問題はないと思っています。
参考ページ
Author And Source
この問題について(gymのregisterを変更する。), 我々は、より多くの情報をここで見つけました https://qiita.com/sky11fur/items/4a99bf00f14e82f3349e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .