ジムの簡潔なチュートリアル [1. 基本的な使い方 v0.26.2 バージョン]
記事ディレクトリ
1. ジム環境の構築
これを使用するとgym.make(id,render_mode)
、環境を登録し、アクション空間や状態空間など、この環境に関する情報を確認できます。
情報を表示するためによく使用される方法
env.action_space
# 查看这个环境中可用的action有多少个,返回Discrete()格式
env.observation_space
# 查看这个环境中observation的特征,返回Box()格式
n_actions=env.action_space.n
# 查看这个环境中可用的action有多少个,返回int
n_features=env.observation_space.shape[0]
# 查看这个环境中observation的特征有多少个,返回int
import gym
if __name__ == "__main__":
env = gym.make(id='CartPole-v1')
print(env.action_space)
print(env.observation_space)
print(env.reward_range)
表示される結果は次のとおりです
Discrete(2)
Box([-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38], [4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38], (4,), float32)
(-inf, inf)
この環境のアクション空間は離散的であり、アクションが 2 つだけあることがわかります。状態にはデータが含まれており、報酬の範囲は正の無限大から負の無限大までです。
action_space
は離散型です。 discrete.pyDiscrete
ソース コードから、範囲が長さの非負の整数のセットであることがわかります。この例では、アクション スペースは として表されます。{0,1,...,n-1}
n
CartPole-v1
{0,1}
observation_space
box.pyソース コードからわかるように、これは次元ボックスを表す型Box
であるため、前のセクションで出力されたものは長さ 4 の配列です。配列内の各要素には上限と下限があります。n
observation
ビルド時にディスプレイレンダリングを指定するとゲーム画像が表示されるようになります。
import gym
if __name__ == "__main__":
env = gym.make(id='CartPole-v1', render_mode='human')
env.reset()
for _ in range(100):
env.render()
env.close()
画像を以下に示します
2. Gym.Env でよく使われるメソッド
一般的に使用される方法には次のものがあります。
-
gym.Env.reset()
初期状態を復元し、初期状態の観察結果を返す -
gym.Env.render()
画像を表示します。最初にリセットした後にのみ表示できます -
gym.Env.step()
インタラクションを実行して返すobservation_, reward, termianted, truncated, info
observation_
次の観測値ですreward
このステップを実行した場合の報酬ですterminated
民主党の終焉を迎えたから終わるのかtruncated
MDP 外部の切り捨て条件により終了したかどうかinfo
デバッグプロセスの診断情報。この情報は、標準のエージェント シミュレーション評価では使用されません。
詳細情報は下図の通り、詳しくは公式サイトをご覧ください
gym.Env.close()
近い環境
以下では、一般的に使用される強化学習パラダイムを紹介します。
import gym
episodes = 10
timesteps = 100
if __name__ == "__main__":
env = gym.make(id='CartPole-v1',render_mode='human')
for e in range(episodes):
observation, info = env.reset()
done = False
while not done:
env.render()
action = env.action_space.sample()
observation_, reward, terminated, truncated, info = env.step(action)
done = termianted or truncated
agent.learn()
env.close()
3.ジムの新バージョン0.26.2に関する変更点
最も重要な変更点は、gym.Env.reset()
戻り値にinfo
新しい項目が追加されたことです。公式Web サイトにgym.Env.reset()
、「戻り値は 2 つあります。最初の項目はgym.Env.step()
「観察」に似た戻り値であり、2 番目の項目はプロンプト情報ですinfo
。この項目は、一般的には使用されないため、受け取ってから破棄する__
こと。
CartPole-v1 環境を例に挙げます。
import gym
if __name__ == "__main__":
env = gym.make(id='CartPole-v1',render_mode='human')
observation, _ = env.reset()
observation_, reward, terminated, truncated, _ = env.step(1)
print(observation)
print(observation_)
print(reward)
print(terminated)
print(truncated)
env.close()
結果は次のとおりです
[ 0.03654356 0.002174 0.04146604 -0.0444533 ]
[ 0.03658704 0.19667757 0.04057698 -0.32377034]
1.0
False
False
4. 参考資料
[公式ウェブサイトのチュートリアル](