CartPole-v0の使い方(OpenAI gym)



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

signal.square, sawtooth

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

矩形波, 三角波

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰


公開日:2020/4/16 , 最終更新日:2021/1/19          

In English


■CartPole-v0の説明

倒立振子のゲームを行います。以下の様にカートの上にポールが立った状態でスタートし、ポールが立ったままの状態を維持するように、カートを左右に動かします。



■CartPole-v0を使った具体例

簡単な動作方法は以下。このゲームを強化学習の題材に使う事例はこちらで説明。OpenAI gym , numpyのインストール方法はこちら

import gym

env = gym.make('CartPole-v0')    # Cartpole定義
env.reset()    # Cartpoleの状態初期化

for i in range(100):
    env.render()    # Cartpoleのアニメーション
    observation, reward, done, info = env.step(env.action_space.sample())  # カートを動かし、結果を返す
    print("Step:",i,done,"Reward:",reward,"Obs:",observation)


<カートの操作:env.step>
env.step()に0を入れると左へ、1を入れると右へ動きます。env.action_space.sample()はアクションをランダムに選択する関数です。

<カートとポールの状態:observation>
カートを操作した結果、カートとポールの状態がobservationで定義されます。値の範囲は公式で定義されている値を記載しております。

 配列0:カートの位置 -4.8~4.8
 配列1:カートの速度 -Inf~Inf (無限大)
 配列2:ポールの角度 -24~24[rad] ← 公式ではdegだがradの間違いであると思われる。
 配列3:ポールの角速度 -Inf~Inf

値とポールの位置関係は以下のとおり


角度の詳細は以下となります。


<報酬獲得条件:reward=1>
以下条件が全て成立している時に、報酬獲得(reward = 1)します。

 ① ポール角度が±0.21以内
 ② カート位置が±2.4以内

報酬が得られなくなった場合でもカートを動かすことができますが、強化学習を行う場合はそこで1エピソードを止める必要があります。 (以下のようなエラーメッセージが出て、一度リセットする事を促されます)

You are calling 'step()' even though this environment has already returned done = True. You should always call 'reset()' once you receive 'done = True' -- any further steps are undefined behavior.

<ゲーム終了条件:done=True>
reward =0になった場合に、ゲーム終了(done=True)します。











サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



Python
Pythonとは
基本的な使い方
IDLE

Jupyter Notebook

Markdown

コマンドプロンプトで実行

仮想環境の構築

仮想環境でIDLEを実行

ライブラリのインストール
pipの使い方

numpy , matplotlib等

graphviz

pytorch

Mecab

Pythonの関数:一覧
共通関数
append , extend

class

copy

csv.reader

csv.writer

def , return

dict , defaultdict

enumerate

exit

for

if

import

in

input

lambda

len

list

min/max

OrderedDict

open/close

os

pickle

print

range

re.split

read/readline

round/floor/ceil

split

sys.argv

time

while

write

zip

・特殊メソッド
 ・__name__

 ・__iter__ , __next__

正規表現、メタ文字

データの型の種類

四則演算 (+ , - , * , /)

コメントアウト (# , ''')

numpy
append

arange

argmax/argmin

array

asfarray

astype , dtype

digitize

dot

hstack/vstack

linalg.solve

linspace

max,min

mean

meshgrid

mgrid

ndim

ndmin

pad

poly1d

polyfit

prod

random

reshape

savetxt/loadtxt

shape

std

transpose

where

zeros/zeros_like

scipy
expit

imread

interpolate

signal.square, sawtooth

matplotlib
imshow

figure

pcolormesh

plot

quiver

scatter

scikit-learn
GaussianNB

KMeans

KNeighborsClassifier

SVC

tree

chaospy

keras

chainer

chainerrl

pytorch
BCELoss , MSELoss

Embedding

device

Sequential

Dataset, Dataloader

RNN, LSTM

OpenAI gym
Blackjack-v0

CartPole-v0

tkinter
frame, grid

画像表示

画像を切り取り表示

画像を保存

目的別
ステップ関数

矩形波, 三角波

1 of K 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰