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
mean
meshgrid
mgrid
ndim
ndmin
pad
poly1d
polyfit
prod
random
reshape
savetxt/loadtxt
shape
std
transpose
where
zeros/zeros_like
scipy
expit
imread
interpolate
matplotlib
imshow
figure
pcolormesh
plot
scatter
scikit-learn
GaussianNB
KMeans
KNeighborsClassifier
SVC
tree
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
mean
meshgrid
mgrid
ndim
ndmin
pad
poly1d
polyfit
prod
random
reshape
savetxt/loadtxt
shape
std
transpose
where
zeros/zeros_like
scipy
expit
imread
interpolate
matplotlib
imshow
figure
pcolormesh
plot
scatter
scikit-learn
GaussianNB
KMeans
KNeighborsClassifier
SVC
tree
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 符号化法
線形補間
配列に番号をつける