Blackjack-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/3/14          

■説明
カード(トランプ)ゲームのブラックジャックを行います。強化学習の例題としてよく用いられます。

ブラックジャックとは自分(プレイヤー)とディーラーの1vs1で行うゲームであり、お互いに配られたカードのポイントの合計が21に近い方が勝ちとなります。 トランプの数とポイントの関係は、2から10まではトランプの数=ポイントですが、絵札(ジャック、クイーン、キング)はポイント10、エースは1か11ポイントを選択できます。

<ゲーム手順>
・ 自分(プレイヤー)とディーラーに2枚ずつカードを配る。
・ 自分の手札は2枚ともオモテ(数が見える方)にし、ディーラーの手札は1枚だけオモテにする。

<自分の番>
・ 手札の合計値を鑑み、追加でカードを1枚引くか否かを選択。カードを引いても21に届かない場合、再びカードを引く事が可能。
・ カードの合計値が21を超えた場合、"バースト"といって自分の負け。(ディーラーの番なし)
・ 合計値が21に届かなくても、これ以上カードを引くとバーストすると判断したら、"ステイ"といってカードを引くのを止める。

<ディーラーの番>
・ ウラにしていたカードをオモテにし、合計値が17以下の場合は18以上になるまで1枚ずつカードを引く。
・ 合計値が21を超えるとバーストとなり、自分の勝ち。
・ 合計値が18以上21以下になったら、自分のカードの合計値と比較し、21に近い方が勝ち。
・ 両者の合計値が等しい場合は引き分け。

■具体例
以下は単純な例です。下記ではカードを引くか否かはランダムですが、その判断を強化学習に行わせることで、勝率を上げる事ができます。 強化学習を用いた実装例はこちら

>> import gym
>> env = gym.make('Blackjack-v0') # ブラックジャックを実施
>> state = env.reset() # 初めてカードを配る
>> state

  (17, 2, True)
  # 17:自分の手札の合計値、2:ディーラーのオモテ側の値、True:自分にエースがあり、11ポイントとして扱う

>> while True:
            action = env.action_space.sample() # カードを引くか否か(1 or 0)をランダムで選択
            state, reward, done, info = env.step(action) # 勝負がついた場合、done=true
            if done:
                break
>> state

  (15, 2, False)
  # ディーラーの値は最終合計値ではない。ディーラーの最終合計値は不明。
   True→Falseになったのはエースを1ポイントとして扱っている。


>> reward

  -1 # 負けたので-1、勝っていたら+1










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

関連記事一覧



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 符号化法
線形補間
配列に番号をつける