Rust で書かれた UCI チェス エンジン。Proxima b、Proxima b 2.0、Cosette の後継です。このプロジェクトは、3000 Elo の強度に到達することを目標として、数時間後に書かれています。非常に高速なゲームを使用して厳しくテストされているため、他のチェス エンジンのスパーリング パートナーとして最適です。 Syzygy テーブルベース、MultiPV、ポンダリング、マルチスレッドをサポートします。
現在の強さ: 3000 Elo (01-11-2024)
ドキュメント: https://tearth.dev/Inanis/
バージョン | 発売日 | エロ | 主な変更点 |
---|---|---|---|
1.5.0 | 2024 年 1 月 11 日 | 3000 | 吸引ウィンドウ、パフォーマンスとマルチスレッドの向上 |
1.4.0 | 2024 年 3 月 8 日 | 2950 | 拡張機能、相対 PST、カウンタームーブ ヒューリスティックを確認します |
1.3.0 | 2024 年 6 月 14 日 | 2900 | 勾配降下チューナー、SEE と評価の向上 |
1.2.1 | 2023 年 4 月 9 日 | 2850 | コマンドラインから直接実行されるコマンド。UCI モードで実行されます。 |
1.2.0 | 2023 年 1 月 15 日 | 2850 | Syzygy サポートの改善、一般的なパフォーマンスと安定性の向上 |
1.1.1 | 2022 年 8 月 14 日 | 2800 | 報告された問題に対する一連の修正、安定性の向上 |
1.1.0 | 2022 年 7 月 31 日 | 2800 | Syzygy テーブルベース、MultiPV、調整済み評価 |
1.0.1 | 2022 年 5 月 4 日 | 2750 | 報告された問題に対する一連の修正、安定性の向上 |
1.0.0 | 2022 年 2 月 4 日 | 2750 | 初期リリース |
各リリースには、Linux (x86、x86-64、ARM、AArch64) および Windows (x86、x86-64) などのさまざまなプラットフォーム用のバイナリのセットが含まれています。 Linux x86-64 と Windows x86-64 は両方とも、POPCNT および POPCNT + BMI1 + BMI2 という 2 つの追加の命令セット バリアントを使用してコンパイルされました。最高のパフォーマンスを得るには、異なるエンジンのバリアントを使用してbenchmark
コマンドを実行してみて、次のいずれかを選択してください。エラーは返されず、最も高度な命令が含まれています。
すべてのテスターとその努力に感謝します。上記のリストの Elo は、エンジン プールやテストに使用される時間制御の違いにより、著者の推定と若干異なる場合があることに注意してください。
Inanis には公式 lichess アカウントがあり、そこでエンジンに挑戦することができます: https://lichess.org/@/InanisBot。そこでの評価は非常に控えめであり、CCRL の評価とは比較できないことに注意してください。ブレット、ブリッツ、ラピッド、クラシックな時間制御を備えた標準的なチェスを受け入れます。
Hash
(デフォルト: 2 MB) - 転置テーブルとポーン ハッシュテーブルの合計サイズ (メガバイト単位)Move Overhead
(デフォルト: 10 ミリ秒) - 予期しない遅延 (GUI の遅さやネットワークの遅れなど) を検索中に予約する必要がある時間 (ミリ秒単位)MultiPV
(デフォルト: 1 PV 行) - 検索中に表示する PV 行の数Threads
(デフォルト: 1 スレッド) - 検索中に使用するスレッドの数 (最高のパフォーマンスを得るには、プロセッサ コアの数よりも少ない必要があります)SyzygyPath
(デフォルト: <空>) - オプションの Syzygy テーブルベースの場所SyzygyProbeLimit
(デフォルト: 8 個) - テーブルベース プローブを実行する必要があるピースの最大数SyzygyProbeDepth
(デフォルト: 6) - テーブルベース プローブを実行する最小の深さPonder
(デフォルト: false) - 対戦相手の時間中にエンジンが考えることを許可します。Crash Files
(デフォルト: false) - 有効にすると、クラッシュ メッセージが ./crash ディレクトリに保存されます。 デフォルトでは、 cargo build
またはcargo build --release
呼び出すと、Syzygy テーブルベースをサポートせずにエンジンがビルドされます (ただし、完全に機能します)。これを含めるには、 --features syzygy,bindgen
を追加し、Windows で作業するときに Clang がインストールされていることを確認してください (MSVC は一部の C11 要素をサポートしていないため、使用できません)。
Inanis にはチューナーが内蔵されており、よく知られている Texel のチューニング方法を使用してすべての評価パラメーターを最適化できます。出力として、エンジンのソース コードに直接貼り付けることができる方法で生成された Rust ソース ファイルがあります。
入力ファイルの例:
r2qkr2/p1pp1ppp/1pn1pn2/2P5/3Pb3/2N1P3/PP3PPP/R1B1KB1R b KQq - c9 "0-1";
r4rk1/3bppb1/p3q1p1/1p1p3p/2pPn3/P1P1PN1P/1PB1QPPB/1R3RK1 b - - c9 "1/2-1/2";
4Q3/8/8/8/6k1/4K2p/3N4/5q2 b - - c9 "0-1";
r4rk1/1Qpbq1bp/p1n2np1/3p1p2/3P1P2/P1NBPN1P/1P1B2P1/R4RK1 b - - c9 "0-1";
チューナーの実行例:
tuner ./input/quiet.epd ./output/ true 0.007 0.75 1
- スケーリング定数 0.007、WDL 比 0.75 でランダムな値から開始し、 quiet.epd
に保存された位置のシングルスレッド調整を実行し、結果をoutput
ディレクトリ
tuner ./input/quiet.epd ./output/ false None 1.0 4
- エンジンに既に設定されている値から開始し、チューニング前に決定されたスケーリング定数を使用して、 quiet.epd
に保存されている位置に対して 4 つのスレッドでチューニングを実行します、WDL 比 1.0そして結果をoutput
ディレクトリに保存します
バージョン 1.1.0 以降、Inanis には、提供された PGN 入力に基づいて、静止位置の epd ファイルを生成するコマンドもあります。
dataset ./input/games.pgn ./output/quiet.epd 16 250 50 3 0.5
- games.pgn
を解析し、各ゲームから 3 つのランダムな位置を取得し、これらをプライで無視することにより、新しいquiet.epd
ファイルを生成します。 16未満、評価スコアが250以上、評価スコアと静止探索スコアの差が50以上。 平均ゲームフェイズ0.5 は、ポジションのバランスが取れていることを意味します (> 0.5 = 開始近く、< 0.5 = 終了近く) 戦略的評価パフォーマンスのテストは、EPD ファイルに保存されている位置の固定深さの検索を実行するtest
コマンドを使用して実行できます。
テスト スイート ファイルの例:
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
1k2r2r/1bq2p2/pn4p1/3pP3/pbpN1P1p/4QN1B/1P4PP/2RR3K b - - bm Nd7; c0 "Nd7=10, Bc5=8, Bc6=2, Be7=7"; id "STS: Knight Outposts/Repositioning/Centralization.001";
1q2bn2/6pk/2p1pr1p/2Q2p1P/1PP5/5N2/5PP1/4RBK1 w - - bm Ne5; c0 "Ne5=10, Nd4=8, Ra1=6, b5=9"; id "STS: Knight Outposts/Repositioning/Centralization.002";
1r1q1rk1/1b1n1p1p/p2b1np1/3pN3/3P1P2/P1N5/3BB1PP/1R1Q1RK1 b - - bm Ne4; c0 "Ne4=10, Bxa3=6, Nb6=6"; id "STS: Knight Outposts/Repositioning/Centralization.003";
テストの実行例:
testset ./input/STS1.epd 16 64 4
- 64 MB の転置テーブルと 4 つのスレッドを使用して、 STS1.epd
ファイルに保存されているすべての位置の固定深さ (この場合は 16) 検索を実行します。テストを成功として分類するには、最後の反復で正しい最善手を返す必要があります。 依存関係を構築する
開発の依存関係
外部ライブラリ
Inanis はペット プロジェクトであるため、現在プル リクエストは受け付けられていません。これは、プロジェクトの進行状況に応じて、将来変更される可能性もあれば、変更されない可能性もあります。ただし、自由に問題や提案をしていただければ幸いです。
以下にリストされているすべてのコマンドは、対話モードでもコマンド ラインから直接実行することもできます ( inanis.exe perft 5
など)。 [DEV] でマークされたエントリは、エンジンがdev
機能を使用してコンパイルされている場合にのみ使用できます。
=== General ===
benchmark - run test for a set of positions
evaluate [fen] - show score for the position
uci - run Universal Chess Interface
quit - close the application
=== Development ===
[DEV] dataset [pgn] [output] [min_ply] [max_score] [max_diff] [density] - dataset generator
[DEV] magic - generate magic numbers
[DEV] testset [epd] [depth] [ttable_size] [threads_count] - run test of positions
[DEV] tuner [epd] [output] [randomize] [k] [wdl_ratio] [threads_count] - run tuning
=== Perft ===
perft [depth]
perft [depth] fen [fen]
perft [depth] moves [moves]
=== Divided Perft ===
dperft [depth]
dperft [depth] fen [fen]
dperft [depth] moves [moves]
=== Quick Perft ===
qperft [depth] [threads_count] [hashtable_size_mb]
qperft [depth] [threads_count] [hashtable_size_mb] fen [fen]
qperft [depth] [threads_count] [hashtable_size_mb] moves [moves]