LoginSignup
0
3

More than 5 years have passed since last update.

OpenAI GymのCopy-v0を解く

Posted at

課題

  • コピーしたい文字列がテープに書かれているので,移動と書き込みを使ってコピーする.
  • 成功するたびにコピーする文字列は長くなる.

image.png

クリア条件

  • 直近100回の試行で25以上の報酬を得ること.

報酬

  • 正しくコピーできたら1.0, 間違えたら-0.5

データ構成

コードを読んでみると,

行動空間は

Tuple(Discrete(2), Discrete(2), Discrete(5))
  • タプル1つめ: テープの右に行きたいなら1, 左なら0
  • タプル2つめ: 書き込みなら1
  • タプル3つめ: 書き込む文字を数値に変換した値(1〜5の数字で表現されている)

状態空間

  • A〜Eの5文字(1〜5の数字で表現されている)
Discrete(6)

解法

  • そのまま前の状態を次の行動に突っ込んであげたら良いが,強化学習使ってないので多分違う.

コード

import numpy as np
import gym
from gym import wrappers

def run():
    env = gym.make('Copy-v0')
    env = wrappers.Monitor(env, '/tmp/copy-v0', force=True)
    Gs = []
    for episode in range(1000):
        x = env.reset()
        G = 0
        for t in range(100):
            a = (1,1, x)
            x, r, done, _ = env.step(a)
            G += r
            if done:
                Gs.append(G)
                break
        score = np.mean(Gs[-100:])
        print("Episode: %3d, Score: %.3f" % (episode, score))
        if score > 25:
            break


if __name__ == "__main__":
    run()

References

  1. LEARNING SIMPLE ALGORITHMS FROM EXAMPLES, Zaremba et al., 2016.
  2. OpenAI Gym, Brockman et al., 2016.
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3