【open ai gym、強化学習】Acrobotの紹介

今回はAcrobotについて紹介します。

問題の概要

Acrobotは下のイメージ図にあるように
2つのリンクが中間点によって繋がっている振り子をコントロールする問題です。

f:id:ttt242242:20190518145210j:plain

出典:Leaderboard · openai/gym Wiki · GitHub

この中間点に適切な力を加えて、
リンクの終端(図で言えば一番した)を指定した高さまで上がるようにコントロールすることが目的の問題となります。

制御値、観測、報酬等について

制御値(行動)

制御値は離散値で三択になります。

制御値 動作
0 右方向への力を加える
1 何の力も加えない
2 左方向への力を加える

観測

観測値は、1本目(図で言えば上)のリンクの\(cos(\theta_1)\), \(sin(\theta_1)\),
2本目のリンクの\(cos(\theta_2)\), \(sin(\theta_2)\)、
1本目と2本目のリンクの角速度の6つです。

試しに観測情報を見てみます。

報酬

終端の点が目的の高さにたどり着いてなければ-1、
たどり着けば0の報酬を与えます。

エピソードの終了判定

終端が指定した高さに到達した時と、
500回行動選択を行った時に終了と判定されます。

ちょっと動かしてみる

実際に動かしてみます。
stepメソッドを使って1ステップづつ操作していきます。
stepメソッドの戻り値は操作した結果 (観測情報, 報酬, エピソードの終了判定) が返却されます。

サンプルコードを実行するために
gymをインストールする必要があります。

サンプルコード

ひたすらランダムで行動選択を行ってみます。
以下、サンプルコードになります。

実行結果

終了するまで実行します。

nb_stepがステップ数、actionが行動、obsが観測情報、rewardが報酬、is_finishがゲームの終了判定を表しています。

参考文献

github.com

コメント

タイトルとURLをコピーしました