「チェスエンジン」は効率的な動きのために裏で沢山の分析をします。ハードウェアとプログラミングの技術が年々良くなってきているため、チェスエンジンもまただんだん優秀になってきています。モダンエンジンはより厳選されるようになってきて、よりしっかりと使用されるようになりました。
もしあなたが、チェスボードのなかの動きをすべての完全に組み立てるとしたら、全ての可能な組み合わせは10120通りになるでしょう。とにかく大きな数である事がわかりますね。
これがどのくらい大きな数なのかというと、ビックバンが起きてからたったの 1026秒しか経過しておらず、宇宙全体では1075個の原子がある、というくらいです。この数はチェスの中の可能な動きの数によって小さくなり、それがチェスゲームをもっとも難しいボードゲームにしています。
チェスエンジンの強さを相対的に計測するためのの多数の評価リストがあり、それは1分あたりどのくらいの動きを作る事が出来るのかをベースにしています。チェスエンジンのランキングに加え、このリストは指定の評価のエラーのマージンも提供します。
これらの評価指標の中において、コンピュータチェス評価リスト(CCRL) や チェスエンジングラントトーナメント(CEGT)がもっとも人気です。両方の評価の指標をもって、もっとも進化している、もはや人間をも上回る機械とも言えるチェスエンジンを紹介します。
18. Hannibal / ハンニバル
CCRL 評価: 3229
CEGT 評価: 3094
Hannibal (ハンニバル)はユニバーサル・チェス・インターフェース(UCI)エンジンです。全世代の技術を取り入れています。例えば「ツイストロジック」や「学習レミング」などです。それはアルファ-ベータテクニックと他のいくつかのチェス固有のヒューリスティックを使っており、セレクティブサーチに依存しています。
このエンジンはマテリアルのアンバランスさについてよく理解されていて、かつすばらしいエンドゲームの知見を持っています。また、要塞や閉じられたピースについて理解していて、かつ王の攻撃に対してのイニシアチブのためにマテリアルを犠牲にすることができます。さらに、エンジンのタイムマネジメントはフィッシャーの時間のコントロールに合わせて調節されています。
17. Critter /クリッター
CCRL 評価: 3232
CEGT 評価: 3098
Critter (クリッター)はUCIのチェスエンジンで、Windows, Mac, Android,と Linuxで使う事ができます。商用利用はできません。初期はデルファイで書かれていますが、後々ビットボード技術を使う事でC++にコンバートされます。64bitプロセッサーのパフォーマンスをあげるためです。
エンジンの特徴としては、ヌルムーブプルーニング、前方プルーニング、プリンシパルバリエーション検索、最大8スレッドによる並列検索、エンドゲームでのブロック検出、および「Gaviota」テーブルベースをサポートしている事があげられます。
16. Suger XPro / シュガー Xプロ
CCRL 評価:3533
SugaR (シュガー)エンジンはストックフィッシュからの出力で、128コアまでサポートしています。ストックフィッシュのように、これは完璧なチェスプログラムではなく、互換性のあるGUI、例えばアリーナのXBoard、PolyGlot、 Shredder、 Sigma Chessやチェスパートナーなどが完璧な動作にあたって必要です。
SugaRエンジンはデフォルトで一つの検索スレッドとして使う事ができるので、スレッド UCIのパラメーターを調べ、すべてのCPUコアにしっかりマッチしているのかを確認する事がおすすめです。エンジンは一般公的使用許諾にて配布されているので、自由にカスタムして売る事ができます。
15. asmFish / アスムフィッシュ
CCRL 評価: 3506
asmFish (アスムフィッシュ)はx86 のアセンブリ言語のストックフィッシュエンジンポートです。 BMI2 、AVX2命令ををオプション的に使っています。LinuxとWindows用のFASMでアセンブルされています。asmFishは構造的最適化技術によってビルドされます、たとえばピースリストの削除などです。
重要な機能は登録の機能について考えられたx86 ABIや、コーリングコンベンションでは動作しません。しかし、少ない時間的な重要な機能はGCCアセンブリのアウトプットを通してポートされます。さらに、エンジンは並列検索、ラージページをサポートし、NUMAに対応しています。
14. Chiron /シロン
CCRL 評価: 3241
CEGT 評価: 3123
Chiron (シロン)は商用のチェスエンジンでユニバーサル・チェス・インターフェース(UCI)とチェス・エンジン・コミュニケーション・プロトコル(CECP)や他にもいくつかのテーブルベースやビットベースのフォーマットをサポートしています。それは、マルチプロセッサアーキテクチャで並列検索を適用し、ポーンエンドゲームのブロックを検出するだけではなくて、ボードにある他のピースも検出する「ポーンブロック検出」を実装します。
マルチプロセッサアーキテクチャで並列検索を適用し、ポーンエンドゲームのブロックだけでなく、ボード上の他のピースも検出するポーンブロック検出を実装します。最新のバージョンは特に、ポーンの通過と機動性に関してより性能がよくなっています。そしていくつかの検索拡張機能が出てきました、レイジー対称マルチプロセッシング、前方プルーニング、NUMA認識などです。
13. Equinox / イクイノックス
CCRL 評価: 3253
CEGT 評価: 3122
Equinox (イクイノックス)はシンメトリックなマイクロプロセッシングチェスエンジンで、Giancarlo Delli Colliによって開発されました。そのアイディアはオープンソースエンジン、例えばストックフィッシュやCrafty、そしてIppolitから来ています。これはいくつかのプライベートエンジントーナメント、たとえばイタリア製のオープンチェスソフトウェアカップや、Thoresenチェスエンジンコンペティションで活躍しています。
12. GullChess / グールーチェス
CCRL 評価: 3261
CEGT 評価: 3183
GullChess(グールーチェス)はオープンソースのエンジンで、スライディングピース攻撃を決めるためにマジックビットボードが適用されています。ほとんど C++ 言語で書かれていて、一つのソースファイルです。
Gullエンジンの特徴はリカーシブ検索ルーティンの中の機能テンプレートと動作生成のための他の機能( ハッシュ移動 とスライド移動を抜いて) LazyGull はGull 3と最新のx86プロセッサ向けのSyzygyベース、PDEPビットボード、Lazy SMPから来ています。
11. Schooner/スクーナー
CCRL 評価: 3284
Schooner (スクーナー)はアルファベータ検索、 レートムーブリダクションズ (LMR)、プリンシプルサーチウインドウ (PVS)、そしてシングルハッシュエントリーを使っています。それは時間を無駄にせず、自動的にゲームをする事ができるように、ユニバーサル・チェス・インターフェース(UCI)のサブセットをサポートしています。
そのパフォーマンスは近年とても改善していて、 Xiphos, ステージムーブジェネレーションに影響をうけた簡単な評価や、たくさんのテストやチューニングはこれらの改善に貢献しています。
10. Xiphos/ザイフォス
CCRL 評価: 3324
CEGT 評価: 3193
Xiphos (ザイフォス)はオープンソースのチェスエンジンでC言語で書かれており、一般公的使用許諾の元配布されています。それはビットボードとERLEF マッピングを活用したUCI従属エンジンです。Xiphosは PEXT bitboards (BMI2向け)とマジックビットボードの両方によって評価されているスライディングピース攻撃を使っています。もし試してみたい場合は、Windows,やmacOSやLinuxにて試す事ができます。
9. Deep Shredder / ディープシュレッダー
CCRL 評価: 3324
CEGT 評価: 315
Shredder (シュレッダー)は商用のチェスエンジンで1993年に作られました。世界マイクロコンピューターチェス選手権(1996、2000)、世界コンピューターチェス選手権(1999、2003)、世界チェスソフトウェア選手権(2010)、および世界コンピュータースピードチェス選手権(5回)などを含む計20タイトルを保持しています。
Deep ShredderはマルチプロセッサバーションのShredderです。ミレニアムチェスシステムによって開発されたグラフィカルユーザーインターフェースが付属で、ユニバーサル・チェス・インターフェース(UCI)をサポートし、Mac OS、Windows、Linuxで利用可能な他のUCIエンジンと互換性があります。
8. Booot / ブート
CCRL 評価: 3326
CEGT 評価: 3234
Booot(ブート)はオープンソースのチェスエンジンはDelphi 6にて書かれています。それはスライディングピースアタックをビットボードで決定し、lazy SMPにパックされており、 評価機能は完全にリデザインされています。
エンジンにはPVSが適用されていて、レイトムーブリダクションやヌルムーブプルーニング、内部反復深化などの基礎検索を拡張します。最新版は、マルチプロセッサアーキテクチャをサポートし、他にも32ビットと64ビットのアセンブリバリアントがいくつかあります。
7. Andscacs / アンドスカス
CCRL 評価: 3337
CEGT 評価: 3209
2014に第一版が登場し、 Andscacs(アンドスカス)は世界一のチェスエンジンに進化しました。「マジックビットボード」をアタック計算のスピードアップのために使用しています。基礎版の検索エンジンを適用し、インタラクティブなフレームワークの中にあるトランスポーテーションテーブルを使ったプリンシパルバリエーション検索を適用します.
Andscacsはスタティックエクスチェンジ評価、スレッド並列検索機能をもち、それは静かな動きであっても、静的な検索の中でめちゃくちゃに動くことを試みています。
エンジンをよりパワフルで効率的なものにするために、200の評価特徴が750,000のポジション、つまりAndscacsの静的評価の標準偏差を最小化したものに最適化されています。
参考: GoolgeアルファゼロAIは24時間でチェスをマスターする
6. Fizbo / フィズボ
CCRL 評価: 3347
CEGT 評価: 3211
Fizbo(アンドスカス)はチェスエンジンコミュニケーションプロトコルで、2014年にリリースされました。ビットボードを元に、母集団カウント命令を使用します。今は、エンジンはWindowsと互換性があり、「pop-count」命令を備えたCPUが必要です。
Fizboは並列検索を拡張されたPV分割アルゴリズムを元に実行されます。8バイトエントリーのトランスポーテーションテーブルはクイセンス・サーチにて使われています。
5. Ethereal / エーテル
CCRL 評価: 3386
CEGT 評価: 3290
Ethereal (エーテル)はオープンソースのエンジンで Andrew Grantによって開発されました。UCI-compliantチェスエンジンで2016年に一般公的使用許諾の元にリリースされた。Etherealはストックフィッシュ、マットチェスとクラフティにかなり影響を受けています。加えて従来のアルファ-ベータ フレームワークに対して、それはたくさんのリダクション、拡張機能や他の改善を施しました。
4. Fire / ファイヤー
CCRL 評価: 3430
CEGT 評価: 3319
Fire(ファイヤー)は無料のチェスエンジンでオープンソースに使われていますが、後々Windowsで実行できるものは閉じられて、新しいインテルプロセッサにて使用可能になりました。それははじめの頃はFirebirdとして知られていましたが、商標登録の関係で「Fire」に名称が変更されました、
Fireエンジンの特徴はマジックビットボードやSyzygy テーブルベース、コンフィギュレータブルハッシュとマルチプルPVです。70通りものユニバーサル・チェス・インターフェース(UCI)を設定する事ができ、SMP並列検索を適用する事ができます。
3. Komodo / コモド
CCRL 評価: 3508
CEGT 評価: 3424
Komodo (コモド)はKomodoのポートからC++への大規模な書き直しをして移植された古い検索エンジンDochから来ていました。深度よりも評価に依存するので、それは非常に異なるポジジョナルスタイルを持っています.
エンジンは64コアまで、Syzygy endgame tablebase、フィッシャーランダムチェスをサポートしています。Kodomoをエンジンのポジションの分析から解放してくれるため、後々チェックし、分析を再開できます。また、ダイナミックプレイのためにエンジンのポーンストラクチャーの長期間にわたる消耗がどのくらいに抑えられるのかついてコントロールする事ができます。
2. Houdini / フーディーニー
CCRL 評価: 3529
CEGT 評価: 3444
Houdini (フーディーニー)エンジンのポジショナルスタイル、ディフェンスの強さ、厳しい戦況における粘り強さ、引き分けに逃げる故によく知られています。現在までに、トップチェスエンジンチャンピオンシップで3シーズンを獲得しています。
新しいバージョンのHoudiniは2つのバージョンに展開されています。スタンダードとプロです。以前のバージョンは8つのプロセッサコアのみをサポートしているのに対し、プロバージョンは128コア、128GBのRAMをサポートし、NUMA対応です。また、Nailmovのエンドゲームテーブルベースを使用できます。
2. Leela Chess Zero / リーラ・チェス・ゼロ
CCRL 評価: 3463
CEGT 評価: 3467
Leela Chess Zero(リーラ・チェス・ゼロ) アルファゼロとアルファゴ ゼロに関するディープマインドの研究に影響され、Leela Chess Zeroは自律ニューラルネットワークに基づいています。ネットワークは何百万回も自分自身と戦うことによるディープラーニング技術によって学習をします。
従来のアルファベータ検索を自作の評価機能と一緒に使う代わりに、それはpuctとして知られているモンテカルロツリー検索(MCTS)を利用します。このエンジンを最大限に走らせるために、CUDAにサポートされたGPUが必要です。
1. Stockfish / ストックフィッシュ
CCRL 評価: 3564
CEGT 評価: 3512
Stockfish (ストックフィッシュ)は、オープンソースのUCIエンジンで、様々なデスクトップやモバイルプラットフォームにて利用ができます。これは他のオープンソースのチェスエンジンである、Glaurungをベースにしています。2017年現在、ストックフィッシュAIはオンラインチェスサイトであるLichessに使われています。
参考: AIプログラミング言語 ベスト8
C++で書かれ、エンジンは512CPUコアまで利用でき、トランスポーテーションテーブルの最大サイズは1テラバイトです。アルファベータ検索を実装し、ビットボードを使っています。もちろん、アグレッシブなプルーニングとレートムーブの削減が特徴です。