ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

バチバチ制御、PID制御からDQN、R2D2まで、制御を試すためのOpenai Gymの使い方

2019-09-25 09:08:56 | Weblog
OpenAI Gymは、倒立振子(CartPoleになってる)から、Atariゲームまで、
いろんな制御用(ゲームが制御か?)のシミュレーション環境が用意されている。

つまり、一般的にOpenAI Gymは、強化学習とか、AIっぽいものを試す環境のように
みられているけど、フィードバック制御してもシーケンス制御しても構わない
(ただし、課題によっては、PIDのような連続量の制御はできず、0、1の
 バチバチ制御になっちゃうけど)

ということで、自分の作った制御プログラムをOpen AI Gymでどう試すのか、
書いてみた。anacondaのanaconda promptから
pip install gym
して、以下のプログラムをjupyter notebookで試してみた
(env.renderすると、図が出るけど、ブラウザの下に出てしまうので(今やった結果。ほかの人はどうかしらないけど?)画面いっぱいにnotebook広げるとみえなくなってしまうので、小さくしておく必要あり)

import gym

#ゲーム(環境)の指定
env = gym.make('CartPole-v0')

#初期化
observation = env.reset()
done = False
t=0
print(observation)

while done == False:

    #ここで、制御(PIDなりDQNなり)を実施して、次の動き=actionを設定。
    #ちなみに
    #action=env.action_space.sample()
    #すると、ランダムに値が入るけど、今回は0,1を交互に

    t=t+1
    action = t % 2

    #次ステップ
    observation, reward, done, info = env.step(action)

    #表示
    env.render()
    print(observation,reward,done,info)
    
    #done == Trueで終了
    if(done == True):
        print("End",t)
    
#クローズ
env.close()



t=t+1
action = t % 2
に自分の思う制御を書いてくれればOK。
CartPole-v0はactionが0、1なので、バチバチ制御になっちゃうけど、
MountainCarContinuous-v0は、連続量で試せるみたいだから

【Open AI gym、強化学習】MoutainCar(連続値)の紹介
https://www.tcom242242.net/entry/2019/05/01/190000/


PIDとかできそう


【参考】
OpenAI Gym 入門
https://qiita.com/ishizakiiii/items/75bc2176a1e0b65bdd16

OpenAI Gymの仕様を掴む①(CartPole_前編)|実装で理解する深層強化学習の研究トレンド #1
https://lib-arts.hatenablog.com/entry/rl_trend1

※環境一覧を取得したい場合
【Python/OpenAI Gym】生成できるエージェントの環境一覧を取得
https://algorithm.joho.info/programming/python/openai-gym-environment-list/


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする