Open jj1guj opened 8 months ago
以下のリンクからXOTの初期局面集をテキストファイル形式でダウンロードできることがわかった。 https://berg.earthlingz.de/xot/download.php?lang=en 棋譜形式は一般的な棋譜形式なので初期局面の設定は board.py#L8 を参考にすれば良さそう。
フローは以下の通り。
https://github.com/jj1guj/dekunobou/issues/36#issuecomment-1793438069
GAモード開始時に初期局面集のファイルを読み込み、棋譜をパースして0~63の座標に変換する。
どうせなら初期局面の生成までやってあげたほうがいい気がしてきたので初期局面の生成までやってBoardクラスのvectorを保持してランダムに初期局面を選択するようにする
とりあえず実装できたので動かして試してみる https://github.com/jj1guj/dekunobou/commit/bed16d98ddf9095a1c7bbd9ca39b6b72587bd40b
581世代目でSEGVで落ちた… 初期局面のランダム選択の部分が一番怪しそうなのでそこを中心に調査する。
初期局面のランダム選択の部分でstd::mt19937
を使用(範囲は[0, 0xffffffff])してもSEGVで落ちた
さらなる解析が必要そう
なんか動いた
ulimit -s unlimited
してなかったのが原因っぽい?
これ忘れがちなので起動時に勝手に叩いてくれるようにしたいがsudo権限必要だしセキュリティ的によくなさそう…
選択パートにおいて探索深さを3にして対局させるように設定し評価関数の生成を試みた。 途中経過ではあるが1世代目と1510世代目で変化が見られない。 原因の調査が必要
置き換え時の勝利数と閾値をみたところ、閾値に対し勝利数が少ないため置き換えが進まないことがわかった。 そこで閾値を小さくして再度試みる
よくよく考えたけど入力局面を回転させたりしてなくて初手f5固定なのがよくないような気がしてきた
交叉後に交叉前と交叉後で複数回対戦させて勝率を計算して遺伝子を置き換えるかどうか判定しているが、現在その対戦は初期局面から開始している。 しかしながら現在の使用だとどの対局も同じ進行になるという懸念がある。この状況は汎化性能を測りたいと要望がある中で好ましくない。そこで、XOTという序盤8手の互角局面から対局を開始するルールを導入する。対局時は同一局面で先後両方を持って打たせるようにする。 同時に、数千局単位でXOTの初期局面集があるとのことなのでその調査も行う。
https://othelloq.com/tweet/anomalous-othello