thomasahle/sunfish

Sunfish: a Python Chess Engine in 111 lines of code

何を解決するか

Sunfish は Python で書かれたコンパクトでオープンソースのチェスエンジンです。カジュアルなプレイに十分な強さを持ちつつ、検索アルゴリズム、評価関数、チェスプログラミングにおけるディープラーニングの実験に非常にアクセスしやすいプラットフォームを提供します。

動作方法

エンジンは MTD-bi 検索アルゴリズム(別名 C*)を使用し、古典的なチェスエンジン最適化を組み込んでいます。評価関数は効率的に更新可能なピース・スクエアテーブル(PST)を用い、標準的な Python コレクションを使用してコードの明確さを保っています。別途、NNUE バージョンも利用可能で、古典的なピース・スクエアスコアに訓練済みのニューラル残差を組み合わせ、ネットワーク全体を1つの Python 整数に圧縮し、高性能な評価を実現しています。

対象ユーザー

チェスエンジンの仕組みを学びたい、または独自の派生版を構築したいチェス愛好家や開発者向けに設計されています。標準的な UCI GUI およびトーナメントツールとも互換性があります。

特徴

  • 極めてコンパクト: 圧縮するとコアエンジンはたった126行のコードで構成されます。
  • UCI互換: Arena、Cute Chess、PyChess などの標準チェス GUI と連携可能です。
  • PyPy 対応: PyPy JIT インタプリタに最適化されており、CPython より最大2.7倍の高速検索が可能になります。
  • NNUE 統合: 小さな、検証済みのニューラルネットワーク評価バージョン(nnue_4k)を含み、古典版よりも Elo レーティングが向上します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト