Open sotetsuk opened 3 years ago
https://github.com/openai/gym/blob/master/gym/spaces/tuple.py
もし、チーが一種類しかなく、赤もなければ、
Tuple(34, 2, 2, 2, ...., 2)
で終わりだったが、現実はそうではない。
赤の扱い方
3 7 3 (= 63) くらい
高々5くらい。捨てられた牌の数をXとすれば
鳴きはチーポンカン含めて全部一緒の方が良いか
くらいだったら
Tuple(Discrete(40くらい), Discrete(10くらい))
赤込みTuple( Multi(Discrete(36), Discrete(2)) , Multi(Discrete(6), Discrete(2)) )
Tuple(Discrete(40くらい), Discrete(10くらい))
赤込み
Tuple( Multi(Discrete(36), Discrete(2)) , Multi(Discrete(6), Discrete(2)) )
Tuple ( Tuple ( Discrete(2), Discrete(2) , Discrete(2) , Multi ( Discrete(34), Discrete(2) ) ), Tuple( Discrete(2), Multi( Discrete(6), Discrete(2) )))
多分外側のTupleは2つまとめても良さそうDiscrete(2)
Discrete(2)
Discrete(3)
Discrete(2)
Multi ( Discrete(34), Discrete(2) )
Discrete(2)
Multi( Discrete(6), Discrete(2) )
Discrete(40+)
Dsicrete(10くらい)
openai/baseline においてTuple, Multi, Discreteがどのようにvector化されているのか?
( (-1, -1, -1, 1, -1), (-1, (-1, -1)) )
( (-1, -1, -1, 0, -1), (-1, (-1, -1)) )
((-1, -1, -1, -1, 10), (-1, (-1, -1)))
PettingZooの麻雀を確認してもいいかもしれない(中麻で赤はないが) => かなりsimplifyされてて参考にはならなさそう。
冷静に考えると、加カンも34種類必要...(ポンを2つ以上しているとき用)
いくつかベクトル化の仕方を提供する形になるか(ユーザも定義できる)
全部列挙するのが、いくつになるのか厳密に数える
計178 (?)
ちょっとポンの赤の扱いだけ検討の余地がある気がしてきた
例えば天鳳でポンのボタンは赤を持っていなければ一つしか出てこないことが決まっているわけで、それなのに37種類あるのは変な気がする。
とかの方が自然な気がするなあ。。。
ただ、ポンを二択にするなら、例えばチーも五択でいいじゃんってなりそう。
Ponが37択の懸念は
11 x 37 通りも考えられるといえば考えられるが。。。
合計143
これらベクトル化はmjx側で実装
mjx::VectorizerFlat(mjxproto::Action) -> int
?mjx::VectorizerSuphx(mjxproto::Action) -> vector<int>
?みたいな感じか。(命名は検討の余地がある)
=> 否決
ツモ切りを検討していなかった。。。。。。。。。
ツモ切りを検討していなかった。。。。。。。。。
discardの次元を2倍にするのが一番シンプルか。
確定版
- Discard (34+3 =37)
- Chi ((3+7) * 3 = 30)
- Pon (34+3 = 37)
- Kan (34)
- Tsumo (1)
- Ron (1)
- Riichi (1)
- Kyuusyu (1)
- No (1)
合計143
ツモ切りを追加すると
合計180
追加で、
とかはありかもしれない。
ややこしいのが