ジムの簡潔なチュートリアル [1. 基本的な使い方 v0.26.2 バージョン]

ジムの簡潔なチュートリアル [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}nCartPole-v1{0,1}
  • observation_spacebox.pyソース コードからわかるように、これは次元ボックスを表すBoxあるため、前のセクションで出力されたものは長さ 4 の配列です。配列内の各要素には上限と下限があります。nobservation

ビルド時にディスプレイレンダリングを指定するとゲーム画像が表示されるようになります。

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民主党の終焉を迎えたから終わるのか
    • truncatedMDP 外部の切り捨て条件により終了したかどうか
    • 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. 参考資料

参考チュートリアル 1

参考チュートリアル 2

[公式ウェブサイトのチュートリアル](

おすすめ

転載: blog.csdn.net/qq_44940689/article/details/132149892