タイトル通り2048AI の進捗状況です。
高速化 grid を今まではstd::array<std::array<int,4>,4> でもっていたが、uint64_t で持つようにした。 それだけで大分速くなった気がする。
世界と分離 koyone は思考をし、世界は盤面の状態を持つだけにきちんと分離できた。他の思考用class を用意して差し替えることが簡単にできるようになった。
探索面 一手後の世界を予想する時に、ナイーブにするなら動かした後に開いてるマスに2 か4 を入れるが、開いてるマスすべてに2 を入れて読めば若干良くなるという話を聞いたので試してみた。それがKoyoneNext だ。
思考クラスたち
Koyone
単純にある程度の深さまで全探索を試みる。 評価関数はグリッド上の数字について、その数字にその数字のlog2 をとったものを掛けてたものの和。 それが一番大きくなるものの存在する方向に動かす。 前回 の時の思考はこれだった。
KoyoneNext
基本的にはKoyone と同じ。nextPossibleWorld だけを上記のように変更してある。 ちょっと以前のより強くなった。
Kihime
モンテカルロによる探索を実装しようとしてまだ中身は空だ。