bobuhiro11's diary

5五将棋 AI制作のメモ

29 May 2015
[shougi]

本将棋のサブセットである「5五将棋」のAIを ちょろちょろ書いている, 気づいたことをメモしておく.

データ構造

それぞれの駒をビットボードで管理している. 例えば先手の歩が7番目の位置に存在すれば,bitboard[B_PAWN] = 0x40 のように表す. 飛車および角の効きはAVX2の_pext_u32命令を使い導出する[5].

探索方針

基本はアルファベータ法で探索する. それに加えて,合法手をソーティングしつつ,反復深化させる. また,同一局面が現れた場合は,置換表を用いてalpha-betaのウィンドウ幅を狭める. Null-Window(PVS)探索も試してみたが,対して速くならなかった.むしろ遅い場合もある. 多分ソーティング方法が悪い.

評価関数

単純に駒の損得だけで評価している. 改善が必須.

USI(Universal Shogi Interface)プロトコル

将棋GUIソフト[8]とAIを接続するプロトコルの1つがUSIである[6,7]. AIは,GUIソフトから局面や持ち時間を受け取り,決定した指し手を返す. とりあえず対応させた.

OpenMPによる並列化

探索はOpenMPを使って並列化している. 与えられた局面の合法手をそれぞれ並列に探索する. 出来るだけ静的にリンクしたいので,ちょっと調べてみた.

参考


comments powered by Disqus < どうぶつしょうぎの完全解析 Codeforces Round 308 (Div.2), ARC040 >