Shogi

Rustで将棋棋譜変換ライブラリを作った

将棋棋譜の形式色々 KIF CSA USI/SFEN 文字表記 その他 JSON棋譜フォーマット(JKF, json-kifu-format) 自作parser, converter クレート公開 Rustでjson-kifu-format互換の将棋棋譜変換ライブラリを書き始めていて、ついに分岐までちゃんと対応した.kifファイ…

SIMDによる将棋Bitboard計算の高速化

自作Rust製将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん …

Bitboardでleading/trailing zerosを使って飛び駒の利きを求める

前置き 飛び利き計算いろいろ 基礎知識 縦型Bitboardでの香車の利き 角行・飛車の利き (Magic Bitboard / PEXT) Qugiyの手法 Leading/Trailing Zerosを使う 実験と考察 前置き Rustで将棋の高速合法手生成ライブラリを作り始めていて、 Rustでつくる もう一…

Rust+WASMでつくる、ブラウザ上で動く詰将棋Solver

成果物 Rust製ソルバの改良 探索部の抽象化 探索打ち切りのための拡張 WebAssembly化 将棋Player (自作WebComponents) まとめ 成果物 https://sugyan.com/tsumeshogi-solver-wasm/ 局面を編集し指定し、その局面からの詰み手順を探索する。クエリパラメータ…

Rustで将棋合法手生成、速度改善

memo.sugyan.com の続き。 前記事時点でだいたい合法手の生成が出来ていたが、速度面でやや問題があった。 perft の計測してみるとRust版Aperyと比較して2倍程度遅い。 だいたい同じ手順になるよう実装しているはずなんだけど どうしてそんなに差がついてい…

Rustでつくる もう一つの将棋ライブラリ

昨年末に出版された「強い将棋ソフトの創りかた」という本を読んで、自分も将棋AIを作ってみたいと思った。 強い将棋ソフトの創りかた作者:山岡忠夫,加納邦彦マイナビ出版Amazon この本では主にPythonでの実装が紹介されていたが、自分は最近はRustが好きな…

Rustでつくる詰将棋Solver その後

memo.sugyan.com の続き。1ヶ月ほど経ってちょこちょこ更新して進化した。 残課題が幾つかあったが、そのうち幾つかは解決した。 探索無限ループ 上図のような問題で ▲4四飛成 △3二玉 ▲4一竜 △3三玉 ▲4四竜 △3二玉 ... を無限に探索してしまっていた問題。 …

Rustでつくる詰将棋Solver

ついカッとなって先週からRustで詰将棋ソルバを書き始めてしまい、ようやくdf-pnで何らかの解答を出せるようになったところ。ここからもうちょっと調整していくぞ、、 pic.twitter.com/XM9iPJqocv— すぎゃーん (@sugyan) November 2, 2021 というわけで突然R…

将棋駒画像分類をMobileNetV2で最初から学習させる

前回の将棋駒画像分類の話の続き。 memo.sugyan.com TensorFlow Hubの学習済みモデルを利用して 最終層にあたる部分だけ(?)を再学習させることで簡単に特定ドメインの画像分類のモデルを作成した。 …が、結果としてあまり精度が良くなくて、特に未学習の画…

df-pnアルゴリズムを用いた詰将棋Solverによる最善解・余詰の導出

以前書いた、詰将棋問題生成の続き。 memo.sugyan.com 逆算による詰将棋の問題生成の方法自体は悪くないとして (バグによって有り得ない局面が出来上がったりしてしまったりもしたけど)、正しく詰将棋問題として成立するものが出来上がっているかどうかを検…

逆算方式による詰将棋の問題生成プログラム

将棋を始めた ので、詰将棋を毎日のように解いているのだけど、せっかくなら詰将棋の問題を自動生成してみたい、と思って試してみた。 前提知識 詰将棋とはどんなものか 攻め方(先手)が玉方(後手)の玉を詰ますのが目的。 攻め方は必ず王手をかける(玉方…