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

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/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

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 符号化法

線形補間

配列に番号をつける

ベクトル場を描く

線形回帰, 多項式回帰