2009-09-01から1ヶ月間の記事一覧

Bonanzaの評価関数はどのようなものか?【KKP編】

■ Bonanzaの評価関数はどのようなものか?【KKP編】 前回までの記事で、Bonanzaの評価関数は ・駒割 -- material関数 ・KKP(二つの王と1駒による3駒相対) -- make_list関数 ・KPP(王と2駒による3駒相対) -- evaluate関数 の3つから構成されていることがわか…

Bonanza4の評価関数はどのようなものか【fv.bin編】

■ Bonanza4の評価関数はどのようなものか【fv.bin編】 前回、Bonanzaの駒割の評価部を説明した。 残るは、「3駒相対」の部分であるが、この3駒は、 ・2玉 + 駒 ・1つの玉 + 2駒 の二つの組み合わせがある。 Bonanzaでは、このどちらも評価している。 ここで…

Bonanzaの手駒のbit layoutはどうなっているか

■ Bonanzaの手駒のbit layoutはどうなっているか Bonanzaで手駒がどう表現されているかはあまり知られていない。今回は、これについて詳しく調べておく。 手駒は、shogi.hで定義されている、局面を表わすposi_tというstructのなかに // 手駒 unsigned int ha…

Bonanza4の評価関数はどのようなものか【駒割編】

■ Bonanza4の評価関数はどのようなものか【駒割編】 Bonanza4の局面の評価関数は俗に「3駒相対」と呼ばれているが、その正確なところは十分にまで理解されているとは言い難い。 そこで、今回はその仕組みについて詳しく調べていく。 評価関数のソースはevalu…

Bonanzaのbitboardのbit layout

■ Bonanzaのbitboardのbit layout Bonanzaでは局面をbitboardで持っていることは前回触れた。 しかし問題となるのは、このbit layoutである。典型的なbitboardに対するオペレーションとして、次のようなことをしたい。 bitboard bb; i = 0; foreach_bit (sq …

Bonanzaでは局面をどういうデータ構造で保持しているのか

■ posi_t構造体 Bonanzaでは局面を表現する構造体posi_tはshogi.hで定義されている。 構造体のそれぞれのメンバ変数がどういう意味を持つかについては、それが使われているところを見るのが一番手っ取り早く、具体的には、指し手生成(makemove.c)のソースを…

Bonanzaのnps表記について

■ npsの意味するところ コンピュータ将棋ソフトによって「nps」(nodes per second)という用語が意味するところはまちまちである。 Bonanza(バージョンは4.1.2で検証)の場合、npsの意味するところは、評価関数を呼び出した回数ではない。 それではnpsは何を意…