2017-08-08(Tue)
前回、評価値関数を作る!って言って高らかに宣言したのはいいですが、作業はなかなか難航しています。
とりあえず今回は牌譜を読み取って各プレイヤーの選択ごと(つまりツモ→打牌と鳴き→打牌と他家出→スルーの3種)について、
実際に選んだ選択に対し、評価値の計算のもとになる数値の書き出し、および選ばれなかった選択に対しても同様に書き出しするところまでできました。
(チャンタ限定シャンテン数の計算が地味に難しかった。)

1行に対し、maxで812列というとんでもないCSVファイルが誕生してしまいました。
実際に処理するのは計算機だとしてもちょっとげんなりしますね。
とりあえずまずは最初の100試合分だけ書き出してみたら、行数が17778行のデータになりました。(書き出すだけでも1秒で5試合くらいのスピードなので、通常の牌譜解析に比べてやや低速。再帰計算に比べればはるかに高速。)
パラメータの仮置きのためならまずはこのくらいのデータ数から解析するくらいでいいでしょう。
あまりに多すぎると時間がかかりすぎるかもしれないので。
次は、
・パラメータの初期値をテキスト形式で入力して読み込ませるプログラム作り
・パラメータと書き出した手牌情報1個分を入力値として、評価値を返すプログラム作り
・パラメータを入力値として、損失関数を返すプログラム作り
・パラメータを少し動かして、損失関数の偏差分を求めるプログラム作り
・動かしたパラメータ群を再びテキスト形式に戻すプログラム作り
まだまだ道は長そうです。
とりあえず今回は牌譜を読み取って各プレイヤーの選択ごと(つまりツモ→打牌と鳴き→打牌と他家出→スルーの3種)について、
実際に選んだ選択に対し、評価値の計算のもとになる数値の書き出し、および選ばれなかった選択に対しても同様に書き出しするところまでできました。
(チャンタ限定シャンテン数の計算が地味に難しかった。)

1行に対し、maxで812列というとんでもないCSVファイルが誕生してしまいました。
実際に処理するのは計算機だとしてもちょっとげんなりしますね。
とりあえずまずは最初の100試合分だけ書き出してみたら、行数が17778行のデータになりました。(書き出すだけでも1秒で5試合くらいのスピードなので、通常の牌譜解析に比べてやや低速。再帰計算に比べればはるかに高速。)
パラメータの仮置きのためならまずはこのくらいのデータ数から解析するくらいでいいでしょう。
あまりに多すぎると時間がかかりすぎるかもしれないので。
次は、
・パラメータの初期値をテキスト形式で入力して読み込ませるプログラム作り
・パラメータと書き出した手牌情報1個分を入力値として、評価値を返すプログラム作り
・パラメータを入力値として、損失関数を返すプログラム作り
・パラメータを少し動かして、損失関数の偏差分を求めるプログラム作り
・動かしたパラメータ群を再びテキスト形式に戻すプログラム作り
まだまだ道は長そうです。
スポンサーサイト