woodyring / apery Goto Github PK
View Code? Open in Web Editor NEWThis project forked from hiraokatakuya/apery
a USI Shogi engine.
License: GNU General Public License v3.0
This project forked from hiraokatakuya/apery
a USI Shogi engine.
License: GNU General Public License v3.0
概要 Apery は USI プロトコルの将棋エンジンです。 USI エンジンに対応した GUI ソフトを使って下さい。 将棋所 以外で動作検証しておりませんので、将棋所 の使用を推奨します。 Apery は GNU General Public License version 3 またはそれ以降のバージョンのもとで配布されます。 主にチェスエンジンの Stockfish の実装を参考にしています。 将棋固有のデータ構造、評価関数等、Bonanza の実装を非常によく参考にしています。 ファイルの説明 ・Readme.txt, このファイルです。 ・Copying.txt, GNU General Public License version 3 条文です。 ・src/, Apery のソースコードのフォルダです。 ・utils/, Apery 開発で使用する本体以外のソフトのソースコードのフォルダです。 ・bin/, 評価関数や定跡のバイナリのフォルダです。ファイルサイズが巨大なので、リポジトリ自体は分けています。 利用環境 メモリに最低でも 1GB 程度空きがあること。 64bit OS であること。 使い方 最初に、実行ファイルは apery/bin フォルダに置くことを想定しています。 将棋所での使い方のみを説明します。 将棋所を立ち上げます。 Windows の場合 Shogidokoro.exe をダブルクリックして下さい。 立ち上がらない場合は、.NET Framework が古い可能性が高いです。新しいものにして下さい。 Linux の場合 terminal を立ち上げ、mono Shogidokoro.exe とコマンドを打って下さい。 立ち上がらない場合、mono のバージョンが低いか、mono のライブラリが足りない可能性が高いです。 MonoDevelop 等をインストールすれば必要なライブラリは揃うと思います。 例として、Ubuntu の場合は sudo apt-get install MonoDevelop とコマンドを打つとインストール出来ると思います。 (最新の将棋所は Mono で動かない事もあるようです。古い将棋所を使うか、Mono を可能な限り最新にすることで動作するかも知れません。 また、将棋所を使って人間が指した時など、駒音が鳴るときに将棋所が落ちる事があるようです。音が鳴る設定を切ってお使い下さい。) 評価関数のフォルダに、*_synthesized.bin (* には色々な文字が入ります)というファイルが無い場合、起動に非常に時間が掛かります。 まずは *_synthesized.bin を生成する必要があります。 Windows の場合は apery/bin/make_synthesized_eval.bat をダブルクリックして下さい。 Linux の場合は apery/bin/make_synthesized_eval.sh を実行して下さい。 これで数分掛かると思いますが、*_synthesized.bin が生成されます。 次回起動時には Apery を高速に起動することが出来ます。 将棋所のエンジン登録で Windows の場合は apery/bin/apery.exe (Linux の場合は apery/bin/apery) を登録して下さい。 一度、「これは USI エンジンではありません。」といったポップアップが表示されるかも知れません。 タイムアウトして登録に失敗している可能性があるので、もう一度エンジン登録してみて下さい。 それでも登録に失敗するなら、Apery が正しく動作していない可能性があります。 apery/bin/apery (Windows の場合は apery/bin/apery.exe) をダブルクリックして、usi とコマンドを打ってみて下さい。 usiok が表示されない場合は、ご利用の PC では Apery が動作しないようです。 将棋所に登録出来ましたら、後は将棋所の使い方を参照して下さい。 開発者向け注意点 Linux のディストリビューションによっては、Makefile に記述されている '-lpthread' を '-pthread' にしなければ、 実行時にエラーになってしまう場合があります。 Linux, Windows で G++ 4.8 以上のバージョンで動作確認をしています。 Clang では正しくビルド出来ているか確認出来ていません。 Visual Studio でビルドすることは現状では出来ません。 Windows でビルドする場合は、MinGW64 をお使い下さい。 評価関数の機械学習をするには ifdef.hpp で LEARN を有効にして下さい。 apery をビルドして、 ./apery l <学習用棋譜ファイル名(先後利用)> <学習用棋譜ファイル名(先手のみ利用)> <学習用棋譜ファイル名(後手のみ利用)> <使用する棋譜の数(0なら全て使うという意味)> <並列数(parse1)> <並列数(parse2)> <最低探索深さ> <最大探索深さ> <更新ステップ数> <1イテレーションに使う棋譜数> <最初のステップでの更新する最大値(64まで)> <最後のステップでの更新する最大値(64まで)> <L1正則化のペナルティを使用するかどうか(0または1)> とコマンド入力すると学習を開始します。 棋譜の形式はCSA1行形式です。詳しくは learner.hpp のコメントを参照して下さい。 棋譜はプロやfloodgate上位の棋譜70000棋譜程度、最低探索深さ 3 最大探索深さ 4 で主に学習しています。 定跡を生成するには apery をビルドして、 ./apery b <定跡用棋譜ファイル名> とコマンド入力すると定跡生成を開始します。 棋譜の形式はCSA1行形式です。詳しくは book.cpp のコメントを参照して下さい。 定跡はfloodgate上位のソフトが上手く指した棋譜のみを抽出して生成しています。 utils/onesidebook/oneside_filter.rb で floodgate の棋譜を抽出して CSA1行形式で出力しています。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.