salt

Results 30 comments of salt

benchmark.py ```py from pgx.mahjong._env import ( Mahjong, _discard, _selfkan, _riichi, _tsumo, _ron, _pon, _minkan, _pass, ) import jax import time import sys import timeit # func(state, action) functions1 = {"_discard":...

特徴量はいずれもその牌が手牌や副露に含まれているかを01であらわしたものなので、observationが保持するデータのみから生成できるはず。observationに特徴量行列を返す関数を追加するのが妥当かと。 テスト自体は正しい特徴量を出力出来ているかを確かめればよいので簡単に作れそうだが、テストケースを作るのが面倒かも。人力で111*34行列を作るのはさすがにしんどい。

`env.get_full_obs()`で111*34行列は抜き出せる。 ただしpymahjongのEnvはあまり細かく初期値を設定できないようなので、任意の盤面のテストケースを作れるかはかなり怪しいです。 `env.reset(self, oya=None, game_wind=None, seed=None, debug_mode=None)`という関数があるが、このseedは整数値でmjlogのseedとは異なるみたいです。

`env.render()`で ``` [Player 0 (this agent)] 点数:25000 自风东 手牌:3m 8m 9p 1s 2s 6s 9s 副露:1m1m(1m)1m 7m8m(9m) 牌河:0p1h 1z5h 4m7h 8p11h 2z14h- 2p17h 6z23h 1s27h 7p31h- 5s35h 3z39h 5z43h 7s47h...

注意が必要な特徴量 - 3(その牌が手牌に4つ含まれている) - 9(その牌が副露に4つ含まれている) - 15(その牌が上家の副露に4つ含まれている) - 21(その牌が対面の副露に4つ含まれている) - 27(その牌が下家の副露に4つ含まれている) - 33(その牌を4つ捨てている) - 37(4回目にその牌を捨てたとき、手切りだった) - 43(上家がその牌を4つ捨てている) - 47(上家が4回目にその牌を捨てたとき、手切りだった) - 53(対面がその牌を4つ捨てている) - 57(対面が4回目にその牌を捨てたとき、手切りだった) - 63(下家がその牌を4つ捨てている) - 67(下家が4回目にその牌を捨てたとき、手切りだった) あたりはそのような事例があまりないかも(3つでも既に怪しい)

「副露に4つ」系は暗カンなら簡単に作れるが、そうでない時をテストする必要があるだろうか…?

``` index 4 [False False False False False False False False False False False False False False False False False False False False False False False False False False False...

0mと9mが両方存在する。0は赤牌とか?

もっとよく見ると、やっぱり4と30は同じものになる気がする。 逆になぜ違う事例が現れるのか? https://github.com/Agony5757/mahjong/blob/master/Mahjong/Encoding/TrainingDataEncoding.cpp#L41

30はポン/カンされる前説への反例 ``` index 4 [ True False False False False False False False False False False False True False False True True False False False False True True False False...