問題の概要
MoutainCarは、 台車を山の上にあるゴール地点にたどり着けるように
適切にコントロールする問題になります。

出典:Leaderboard · openai/gym Wiki · GitHub
制御値、観測、報酬等について
制御値(行動)
制御値は、台を左に押す(0)か 何もしない(1)、右に押す(2)の三択になります。
| 操作 | |
|---|---|
| 0 | 左に押す | 
| 1 | 何もしない | 
| 2 | 右に押す | 
観測
観測値は、台車の位置と速度の2つになります。
| 観測情報 | 最小値 | 最大値 | 
|---|---|---|
| 台車の位置 | -1.2 | 0.6 | 
| 台車の速度 | -0.07 | 0.07 | 
報酬
ゴールに着いたら0.5、
それ以外の場合にはステップ毎に-1を与えます。
エピソードの終了判定
以下のどれかの条件を満たした場合に、
エピソードが終了したと判定されます。
- 台車がゴールにたどり着いた
 - 200回制御を行った
 
ちょっと動かしてみる
実際に動かしてみます。
stepメソッドを使って1ステップづつ台車を操作していきます。
stepメソッドの戻り値は操作した結果 (観測情報, 報酬, エピソードの終了判定) が返却されます。
サンプルコードを実行するために
gymをインストールする必要があります。
pip install gym
サンプルコード
ひたすらランダムで行動選択を行ってみます。
以下、サンプルコードになります。
import gym 
env = gym.make("MountainCar-v0")
env.reset()
is_finish = False
while(1):
    env.render()
    random_action = env.action_space.sample()   # ランダムで行動を選択。0, 1, 2のどれか
    obs, reward, is_finish, _ = env.step(action=random_action) # ひたすら台車を左方向に押す
    print("obs:{}, reward:{}, is_finish:{}".format(obs, reward, is_finish))
    if is_finish == True:   # 終了したら、whileを抜ける
        break
実行結果
終了するまで実行します。
[2019-04-30 14:14:34,916] Making new env: MountainCar-v0 obs:[-0.41771423 -0.00179361], reward:-1.0, is_finish:False obs:[-0.42028869 -0.00257446], reward:-1.0, is_finish:False obs:[-0.62147044 0.02563172], reward:-1.0, is_finish:False <省略> obs:[-0.59511518 0.02635526], reward:-1.0, is_finish:False obs:[-0.56822766 0.02688753], reward:-1.0, is_finish:False obs:[-0.54000641 0.02822124], reward:-1.0, is_finish:False obs:[-0.51266216 0.02734425], reward:-1.0, is_finish:False obs:[-0.48639992 0.02626224], reward:-1.0, is_finish:False obs:[-0.46041609 0.02598383], reward:-1.0, is_finish:True
参考文献
https://github.com/openai/gym/wiki/MountainCar-v0
  
  
  
  
コメント