2011-01-01から1年間の記事一覧

A級さんの

コメント欄がなぜあんなに荒れるのか理解出来無い。

ボンクラーズが24に

bonkras Conputer R2400 今年世界コンピュータ将棋選手権で優勝したボンクラーズが 将棋倶楽部24にいる! 今のところ誰も対局していない。 すごく対戦したいけどR400差以内の人のみ、対戦可らしいので、 俺の棋力(R1500強)では無理だ orz それより自動対局に…

最近

最近あんまり進捗無いなぁ。 時間は割とかけているんだけど、 探索関連の理解がなかなか進まないので コードもあんまり書けないでいる。 BonanzaとStockfishにコメントを埋め込む作業が続く。

今年のGPW

これすごく気になる。 「難解な必至問題を解くアルゴリズムとその実装」 長井歩

Bonanzaの王手生成

上の局面で、後手玉は詰まないことは簡単に分かるけれど、 Bonanzaのdf-pnは詰みと判定します。 以下、Bonanzaの王手生成で、香車が成る手を生成するところ。 bb_piece = BB_BLANCE; while( BBTest( bb_piece ) ) { from = LastOne( bb_piece ); Xor( from, …

最後の審判

今更ですが、詰将棋「最後の審判」の局面を初めて見て、 とても感動しました。で、これをBonanzaのDFPNで解いてみると、不詰と判定されました。 これを詰みと判定するソフトは今のところ無いんじゃないかな。

fv.bin

右玉が不安とか言いつつ、 とりあえず Bonanza6.0 の評価関数を導入しました。 自分のBitboardのレイアウトに変換するときに色々勘違いとかしてて ハマりました。自分が馬鹿すぎてヤバい。これより性能の良い評価関数を一から作るのはなかなかハードルが高い…

右玉

Bonanza の評価関数では、 玉の位置を基準にして他の駒の位置を評価するので、 とにかく玉の位置が重要。右玉とか、玉の位置が特殊な戦法を使うと、 評価がおかしくなることがありそうで少し不安。

買おうかなぁ。

Windows7 pro 64bit版。 1ライセンスくらいあっても良いな。 VC++ もたまには使うだろうし。 3万円とちょっとか。

SSE と union 更に続き

やっぱり気になって色々実験しました。 結果としては、 ・指し手生成はSSE使用で2~3割くらい遅くなりました。 ・指定位置への利きを持つ駒のビットボードを返す関数は、1.7倍ほどの速度になり、かなり高速化されました。 ・gcc, icc 共に同様の結果でした。 …

SSE と union 続き

icc をインストールしたので、 問題のソースコードをビルドしてみたが、 結果は駄目だった。 ただ、g++ が union で bitboard を定義しただけで滅茶苦茶遅くなったのに対して、 icc は union を定義しただけでは速度低下は無かった。 ただ、SSE の命令を使用…

icc インストールしてみる。

icc 入れてみる。 Linux版は個人が非営利で使う分には無償らしいので、それを貰おう。 以下、自分用メモ ・non commercial ってところ見つけにくいので注意。 ・32/64 bit 版の両方のバイナリを作れるやつと、 32,64 bit 版の片方だけしか作れないやつがある…

SSE と union

はよ評価関数入れろやって感じなんですが、息抜きに高速化でも。 自分のCPU(Core2Duo T8300 2.4GHz)はSSE2までしか対応してないと思ってたけど、Bonanza6.0 の Makefile 見たらデフォルトでSSE4.1使ってて、普通に動いてました。 ってことでBitboardのSSE化…

USI 動いた

とりあえず局面の更新とUSI読み込みは出来た。 次は評価関数。

動けば良いよ。

USIの筋、段と、自分のソフトの File, Rank が対応してないのは 気持ち悪いといえば気持ち悪いけれど、USI 周りだけで対応することにした。 Bonanza もそうなってるしな。

今更USI

position startpos moves 7g7f 3c3d 2g2f ↑の USI のサンプルコマンド打っても、 局面が更新されない、おかしいなぁと思っていたら、 USIは段がアルファベット、筋が数字だと・・・ チェスと一緒じゃなかったの??ソースコード全部で Rank ←→ File の変換し…

transposition table 見てみるか。

transosition table 比較Bonanza typedef struct { uint64_t word1, word2; } trans_entry_t; typedef struct { trans_entry_t prefer, always[2]; } trans_table_t; /* name bits shifts word1 depth 8 56 value 16 40 move 19 21 hand 21 0 word2 key 57 7…

transposition table 作るか。

あれ、先に枝狩りとか考えずにαβ実装した方が良いのか? 正直、完成品(Bonanza, Stockfishなど)だけ見ても作る順番が分からん。 料理と一緒だな。

Boost

今までビルドせずに使ってたけど、 Thread 使いたいからソースからビルド。 libbz2-dev が無いせいでビルドエラー出まくったり、 使った関数が undefined だって怒られたり。 結局ソースから作るの面倒臭くなってバイナリ落として来た。 すごく簡単だった。 …

英語苦手

以下、chess programming wiki を読んで分かったことのメモ。 間違い多くてコメント欄にて修正してもらいました。 ・LMR (Late Move Reductions)指し手をちょっとずつ生成して評価して枝狩りすること全般のことを指してる? 枝狩りって訳せばいいの? (*)コ…

探索について

探索について取り掛かろうと思う。 探索って何をする必要があるのかっていうのは分かった。・指し手を生成・良さそうな手の順番に指し手の並び替え・順番にαβ探索・局面の評価・βカットとかの枝狩り色んな探索の効率化手法があるようで、 まず、どんな方法が…

inline 関数には気をつけた方が良いらしい。

assert 仕込んだ方が速度が出た理由が分かりました。 いろいろ実験して分かったことを箇条書き。・inline 化したから速くなるとは限らない。 ・assert の有無で inline 化されたりされなかったりする。 ・同じ inline 関数でも、呼び出し位置によって inline…

指し手生成

元から頻繁に更新するつもりは無かったんですが、 それにしても間隔開け過ぎかな。 それと過去の記事(ほとんど無いけど)の説明力が無さ過ぎなのと、 丁寧語が気持ち悪いので、どちらも以後気をつけます。 で、半年以上の間の進捗はどうなんだというと、 本当…

解決!

昨日の記事を http://d.hatena.ne.jp/issei_y/20110116#c で取り上げて頂きました。新しい Bitboard レイアウトの発案者の issei_y さんに、 マジックナンバーが見つからないことを伝えたところ、 シフト量を減らして、テーブルサイズを大きくすることで 解…

マジックナンバーが見つからない・・・

ここで、乗算一回方式の Magic Bitboard が発表されています。 http://www.graco.c.u-tokyo.ac.jp/~issei/GPW_Proposal%20and%20Implementation%20of%20Magic%20Bitboards%20in%20Shogi.pdf 自分のソフトをどんなレイアウトにするかは検討中ですが、 とりあ…

Bitboard レイアウト

Bitboard レイアウトを決めたい。 Rotated Bitboard か、 Magic Bitboard か。 Rotated は将棋では一般的な手法なので、実績があります。 しかし、実装が煩雑になるという欠点もあります。 Magic は将棋ではあまり一般的ではないですが、 チェスではデファク…

将棋ソフト始めました。

将棋ソフト(思考エンジン)を開発しようと思います。 世界コンピュータ将棋選手権には毎年沢山の参加者がいるようで、 上位ソフトは、対局さえ実現すれば、今すぐにでもプロに勝つ可能性があります。 最も後発の自分の将棋ソフトでオリジナリティを出すのも難…