Nim言語でリバーシAI
Nim言語触ってました〜。
いいですね!Nim言語!
リバーシAI
リバーシAIは昔作ったことあるので、大体の感覚は掴んでた訳ですが、設計とかビット演算処理とか甘い所はあったので、より良い感じになるように意識して作っています。
Nim言語も初めて触っているので、なかなか刺激的な時間が送れていると思います!
という訳で、一応コマンドライン上で動く形にはしました。リポジトリはこちら。
なるべく見やすくするように...と思っていたんですけど、正直言って見辛いし使いづらいですね、コマンドラインだからしょうがない(苦笑)
まぁ、このプログラムはこのまま使う訳ではなくて、AIのための辞書作りや学習に応用したり、 スマホ端末用にクロスコンパイルしてアプリのオセロロジックとして組み込む予定なので、 とりあえずパソコン上で動かすGUIは作らないで、このままのスタンスでいきたいと思っています。
大枠を簡単に作った所で、今後オセロAI系に関してやることをリマインドとしてまとめておきます。
- 反転処理(Flip処理)の高速化
- 探索アルゴリズムの完成(現在は、まだNegaMax法なので、NegaScout法にする)
- 評価関数の洗練(現在は、石の配置と着手可能数による評価)
- 終盤ソルバーの洗練(というか、今はまだ用意してなかった笑)
- 棋譜から学習させる(同じ負け方は2度しないように学習)
- AI同士で自動で対戦させて棋譜を収集する機構を作る
結構やること多いですね。少なくとも4番まではやっておきたいですね。5番、6番はもう少し後でも問題無さそう。
これと同時平行で、Nim言語をクロスコンパイルしてiOS上で、静的ライブラリとして読み込めるように頑張っていきたいと思います〜。
「Nim言語をiOS上で動かしてみた」っていう記事はあまり無いんですけど、NimはCにも変換しているので、 多分「C言語をiOS上で動かしてみた」と同じような雰囲気でやれば、いけるんじゃないかなとなんとなく思っています〜。
ふー疲れた。明日は早いのでおやすみなさい!