Python(オセロ17_Eloレーティング2)
■Eloレーティングの続き。
前回3つのロジックで総計300回のゲーム実施からEloレーティングを求めていった。グラフにしてみると、300回では収束しているように見えなかったので、試行回数を増やすなどしてもう少し様子を見る。
とりあえず改めて初期値の1500から始めて1000回実施。
1000回が終わった時点では、corner(四隅の優先ロジック)もsearch(3手先まで見た上で次の手を決めるロジック)もほぼ差がない。

さらにもう1000回同じ条件で追加。1000回時点のEloレーティングを記録しておけば、そこから始めることでデータを追加できる(赤線以降が追加分)。

ここまで見てもsearchとcornerが逆転したりして安定しない。橙色のrandomロジックは概ね他2つより下で推移する。
レーティングの更新時に係数Kを32で設定してきたけど、ここをもう少し小さくすれば変化が緩やかになるそう(確かに式を見ても変化量にかかる係数だった)。これを16にして、さらに1000回実施(赤線以降が追加分)。

それ以前と比べると変化が緩やかにはなっているようだけど、逆転するのは変わらない。Kをさらに小さくすれば安定するようには見えるだろうけど、小さくした瞬間の結果に影響されるだけな気がする。
ちなみに勝敗の結果を見ると、cornerとsearchでは、cornerの方が優勢。

前回の300回の結果でも同じような傾向は出ている。

この勝敗の結果からEloレーティングもcornerの方が高く出るのではと思っていたけど、グラフの結果からは止めたタイミングで逆転しそう。ここがどうもしっくりこない。
最後の値だけを見ると偶然いい成績だっただけかもしれないので、いくつかの点を取った平均で考える方法もあるよう。
下の表は3000から適当な範囲で戻った5点の平均値。

100ずつ戻した場合、searchの方がやや上回る(誤差レベルだけど)。今回はcornerの方が上回って終了しているので、平均値のありがたみが出てこないけど、例えば、3000回時点でsearchの方が値が大きい場合で、平均をとればcornerの方が大きくなるときは、直接の対戦結果と整合する。
ここまで見た感じだと、searchとcornerロジックは、直接対戦させるとcornerの方がややいい成績となるが、全体でみると同等のレベルといった結論になるのかなー。例えば、他に強いロジックがあり、cornerに対してはいい成績、searchに対しては悪い成績となる場合、searchのEloレーティングは上がるはず。
Eloレーティングが全体の中の順位付けと考えれば、直接の対戦結果と必ずしも一致するものではないと考えておこう。

