2017-06-14(Wed)
AI製作の続きです。
引き続き、1試合通しで計算させたログ(1打1打ごとの評価値)を見ながら、こまごまとした修正をかけていきます。
・3シャンテンの再帰計算
前回予定で述べた通り、まずは第一段階で一次有効牌の枚数を比べて、そのうち上位2つの打牌候補について、手替わり0回再帰計算とシミュレーションをさせることにしました。
また、
七対子手のときに孤立字牌を優遇(例えば枚数+2枚評価とか)
面子手のときに隣に雀頭やメンツにくっついてる浮き牌を優遇(例えば枚数+2枚評価とか)
打牌候補がドラになるときの評価(枚数―2枚補正とか)
について、第一段階評価時に枚数に補正をつけることにしました。
当初思ってたよりは計算時間はかからずに済みそうです。だいたい手替わり1回一向聴と同じくらいです。
手替わり1回二向聴の計算時間に比べればまだ耐えられる、というレベルですが。
・パラメータの不備を修正
他家リーチ者がいて、自分はリーチしてない状況での他家の切る牌分布の計算について、
参照するパラメータが「自分リーチに対する切られる牌分布」になってたのが発覚したので、
「他家リーチに対する切られる牌分布」のパラメータを新たに採取(牌譜解析)して、該当部分を修正しました。
・バグ修正
まだまだ激重いバグがありました。
再帰パートで最終結果(局収支とか和了率とか)への代入処理の場所を間違えていて、他家のツモ番のところが全く反映されていなかった(もしくは全くでたらめな数値)。
再帰パートで流局まわり処理で残り山枚数を1枚多く計算していたのが発覚。
フーロ手シャンテン数計算で字牌雀頭のときに鳴いて晒した部分をメンツとしてカウントしてなかったバグが発覚。
3つのバグとも残りツモ1回(海底が自分)の形式聴牌の状況で和了率が完全に0になっているという不自然な状況からたどっていって見つけることができました。
いずれも重要度が高いところでした。比較的わかりやすく不自然さが際立っていたので見つけることができましたが、ここで見逃してたら大惨事なところでした。
同じ試合のログばかりを眺めてバグが見つかったので、直して再度試合の最初からチェックし直しという作業がエンドレスに続いていてモチベーション的にたいへんよろしくないです。
もうそろそろテストとバグ潰しも飽きてきたので次のステップ(再帰パートの自分鳴き処理)に行きたいところですけど、現在のバグの発覚が止まらない状況ではそんなことは言ってられない状況ですしねぇ。
引き続き、1試合通しで計算させたログ(1打1打ごとの評価値)を見ながら、こまごまとした修正をかけていきます。
・3シャンテンの再帰計算
前回予定で述べた通り、まずは第一段階で一次有効牌の枚数を比べて、そのうち上位2つの打牌候補について、手替わり0回再帰計算とシミュレーションをさせることにしました。
また、
七対子手のときに孤立字牌を優遇(例えば枚数+2枚評価とか)
面子手のときに隣に雀頭やメンツにくっついてる浮き牌を優遇(例えば枚数+2枚評価とか)
打牌候補がドラになるときの評価(枚数―2枚補正とか)
について、第一段階評価時に枚数に補正をつけることにしました。
当初思ってたよりは計算時間はかからずに済みそうです。だいたい手替わり1回一向聴と同じくらいです。
手替わり1回二向聴の計算時間に比べればまだ耐えられる、というレベルですが。
・パラメータの不備を修正
他家リーチ者がいて、自分はリーチしてない状況での他家の切る牌分布の計算について、
参照するパラメータが「自分リーチに対する切られる牌分布」になってたのが発覚したので、
「他家リーチに対する切られる牌分布」のパラメータを新たに採取(牌譜解析)して、該当部分を修正しました。
・バグ修正
まだまだ激重いバグがありました。
再帰パートで最終結果(局収支とか和了率とか)への代入処理の場所を間違えていて、他家のツモ番のところが全く反映されていなかった(もしくは全くでたらめな数値)。
再帰パートで流局まわり処理で残り山枚数を1枚多く計算していたのが発覚。
フーロ手シャンテン数計算で字牌雀頭のときに鳴いて晒した部分をメンツとしてカウントしてなかったバグが発覚。
3つのバグとも残りツモ1回(海底が自分)の形式聴牌の状況で和了率が完全に0になっているという不自然な状況からたどっていって見つけることができました。
いずれも重要度が高いところでした。比較的わかりやすく不自然さが際立っていたので見つけることができましたが、ここで見逃してたら大惨事なところでした。
同じ試合のログばかりを眺めてバグが見つかったので、直して再度試合の最初からチェックし直しという作業がエンドレスに続いていてモチベーション的にたいへんよろしくないです。
もうそろそろテストとバグ潰しも飽きてきたので次のステップ(再帰パートの自分鳴き処理)に行きたいところですけど、現在のバグの発覚が止まらない状況ではそんなことは言ってられない状況ですしねぇ。
スポンサーサイト