50

チェスエンジンを実装するのはどれほど難しいのだろうと思っています。オープンソースの実装は既にありますか?

与えられたボード コンステレーションのスコアリング関数と、いくつかの可能性のある将来のボード コンステレーションを探索する非常に高速な方法が必要なようです。もちろん、可能な将来のすべての動きを調査することは不可能であるため、最も有望な動きを貪欲に追跡するか、シミュレーテッド アニーリングなどの近似手法を使用して可能性の高い動きを確率的に追跡することができます。

それは機械学習の大学院生プロジェクトの範囲内だと思いますか?学生が使用できるオープンソースの実装があったと仮定すると、それは特定の図に対して次の可能な動きを返すなどの基本的なことを行いますか? おそらく難しすぎる?

さまざまなチームがチェス エンジンで作業し、互いに対戦させるのは楽しいプロジェクトになるでしょう...

4

13 に答える 13

56

私は昨年、C#で独自のチェスエンジンを構築するのに費やしました。それほど難しいことではありませんでした。仕事中に間違えたのですが、インターネット上の情報が明確に表示されておらず、その多くが他のサイトからコピーされたものであることに気づきました。

このプロセスを実行している他の人の生活を楽にするために、私はチェスエンジンの開発を文書化し、ソースコードの多くをブログに投稿しています。

http://www.chessbin.com

独自のチェスエンジンの開発を開始するためのチェスゲーム開発キットも作成しました。これには、次のものが含まれています。

  1. チェス盤とチェスの駒を表すために必要なすべてのコード
  2. チェスの駒の動きの検証に関連するコード
  3. チェスの位置を表示し、ボード上で駒を動かすことができるグラフィカルユーザーインターフェイス

私のサイトは基本的にあなたと同じような人々に捧げられています。独自のチェスエンジンの構築を開始したい人。

于 2009-07-23T12:38:32.333 に答える
36

はい、これは間違いなく学生プロジェクトの範囲内です。ここに私のアーカイブからのいくつかのリンクがあります:

于 2009-08-05T12:31:29.273 に答える
9

Craftyはトップ チェス エンジンの 1 つであり、完全にオープン ソースです。ただし、C で記述された非常に複雑で高度に最適化されているため、非常に理解しにくい学生プロジェクトに使用することはお勧めしません。

教育目的で、Adam Berents のサイトを参照することをお勧めします。C# でチェス エンジンを実装する際に行ったプロセスについて説明しています。もちろんソースコードも公開されています。私の意見では、そこから始めるのは素晴らしいポイントです。

于 2009-07-18T22:31:21.950 に答える
7

あなたの質問にはお答えできませんが、最後のコメントにはお答えできます

「さまざまなチームがチェスエンジンで作業し、互いに対戦させるのは楽しいプロジェクトになるでしょう...」

これは、FICSチェス サーバーで既に行われています。そこにログインして(telnetが必要です)、ドキュメントも確認することをお勧めします。おそらく、チェスボットに関する特定のヒントを提供できる人々と連絡を取ることができるでしょう。

于 2009-07-18T22:27:15.810 に答える
6

最新の PC で妥当なチェス エンジンを使用することは確かに可能です。特に、1 MHz および 2 MHz の 8 ビット マシンでわずか数 K のメモリしか使用しないチェス プログラムが数多くあったことを覚えている場合はなおさらです。最近では、インタープリター言語でチェス エンジンを作成し、最高の 6502 または Z80 プログラマーを彼の最もタイトで最速のものをコーディングしてパンツから追い出すことができます。

私は、1978 年に妻のキャスリーンと一緒に最初のサルゴンを作ったダン スプラックレンと仕事をするようになりました。Kathleen の兄弟が Apple II への移植を行い、私は彼と彼の息子と一緒に作業しました。(私が彼らと一緒に働いていた当時、消費者の利益のためのチェス ビジネスは終わっていました。私は、Atari ST と Amiga チェス ゲームを持ち出した 1 人の男のことを覚えていますが、その時までにそれらの市場はほとんどありませんでした。)

Computer Gamesmanship」は、1983 年に愛好家が行ったチェス プログラミングの素晴らしい入門書です。今でも楽しく読めます。アルファベータ、ミニマックスなどの優れたものをカバーしています。

そこから始めて、その後の進歩について学ぶのに十分な本です。

代替テキスト

于 2009-07-19T02:59:01.487 に答える
4

良いものを作るのは難しいですが、おそらく大学院のプロジェクトとしてはほぼ適切なレベルです (私がコンピューター サイエンスの学士号を取得したとき、私の友人が最終学位論文用にチェス エンジンを書きました)。

はい、オープン ソースのものもあり、主な候補はGNU Chessであり、非常に尊敬されています。

于 2009-07-18T22:18:39.853 に答える
4

目標とする強度レベルとプログラミング スキルによって異なります。あなたが経験豊富なプログラマーであると仮定すると、ここに私の意見があります (私は多くのエンジンを知っていますが、コーディングしたことはありません):

*初心者/アマチュア (ELO 1200-1600) を打ち負かすことができる非常に単純なエンジン: たくさんのコードですが、簡単です。

*「クラブプレイヤー」を打ち負かすことができるエンジン (ELO 1800-2000): 難しくなり始めます。ブックを開く必要があり、最適化と堅牢な AI が必要です。

*達人に勝てるエンジン:難しい、経験年数が必要

*トップ エンジン (Rybka、Houdini、Stockfish、Hiarcs など) は、99% の確率で地球上のあらゆる人間を打ち負かすことができます。これは途方もない努力であり、多くの忍耐と長年の経験が必要です。

それが私がそれを見る方法です!

于 2013-06-28T17:32:34.440 に答える
2

私の大学では毎年、AI 入門コース (3 年次コース) で学生に論文と一緒にチェスのプログラムをゼロから作成するよう求めていますが、講義で敵対的探索に関する章を取り上げて、学生がそれを行うのに十分な知識を持っているようにしました。私たちにとって、このプロジェクトは自分たちだけで行うことも、別の人と一緒に行うこともできます (より深い層など、パートナーと一緒に行うと、より良いプログラムが期待できることは明らかです)。コンピュータ グラフィックス コースも 3 年次コースであるため、学生はその最終プロジェクトと AI コースの最終プロジェクトを組み合わせることができます。

私はたまたま 3 年生で両方のコースを受講しているので (現在は前期で終了しています)、同じく両方のコースに通っている友人とチームを組んで、私たちは 3 年生の終わりからこのプログラムに取り組んでいます。試験 (12 月 21 日頃) で、1 月 11 日が期限です。

1か月以内に完全に実行可能です(特に卒業プロジェクトとして)。私たちは 3D チェス プログラムを作成しているため、もちろんチェス エンジンだけでなく、より多くの作業が必要です。最も困難な部分は、ボード表現の決定、すべてのルール (アンパッサン、キャスリング、プロモーションなど) の実装、ヒューリスティック関数の作成、およびゲーム ツリー (通常はアルファ ベータ プルーニングで行われます) です。

これは私たちが進捗状況を文書化するために使用しているサイトで、完了したら後でコードとペーパーをホストします (現在は少し空っぽです)。http://sites.google.com/site/chessatbrock/

于 2010-01-03T02:41:12.950 に答える
0

これはおそらく単純すぎますが、それでも学ぶべき興味深い教訓です。ZX81チェスゲームを紹介します。

于 2013-02-23T18:10:05.050 に答える
0

すべては、ゲームの AI について修正する目標に依存します。2人用ゲームなら・・・簡単!しかし、AI はかなり難しいです...そうです、よく知られているオープン ソースは GNU Chess です!

いくつかのアルゴリズム: http://www.vclcomponents.com/s/0__/source_code_genetic_algorithm_chess チェス プログラミング wikiです。

于 2009-07-18T22:20:26.650 に答える
0

指定された状態のすべての有効な移動を生成する必要があります。次に、すべての可能性について、対戦相手の可能な動きを確認する必要があります。そのうちの少なくとも 1 つがあなたの立場を悪化させるものである場合は、その分岐に従うべきではありません。これを行うには、自分の成績を判断するための何らかのスコアリングが必要です。チェスには、どのユニットがどのくらいのポイントに値するかについて、すでにいくつかのルールがあります。このように数歩だけ先を見れば十分です。プログラムを打ち負かすことはまだ難しいでしょう。

もちろん、これは完璧とは言えません。実際のプレイヤーは、長期的な目標を達成するために一部のユニットを犠牲にすることができます。このアルゴリズムはそれを行いません。

于 2009-07-18T22:31:21.357 に答える
0

Algorithms and Data Structures (2年生のCS)でmancala AIに続いてchess AIを行いました。

しかし、教授はチェスエンジンの大きな部分を提供してくれたので、決定機能の改善、チェックメイトの実装などを行う必要がありました。

于 2009-07-18T22:34:41.677 に答える
0

学部生の AI コースでは、学期の半分をさまざまなチェス エンジンの作成と、XBoard または WinBoard を使用したテストに費やしました。そして、学期の終わりに、学生のチェスエンジンが XBoard で互いに競うトーナメントを行いました。全体的にはかなりうまくいきました。

私の記憶が正しければ、XBoard とのインターフェースはかなり簡単です。ここにいくつかのリンクがあります。

http://www.gnu.org/software/xboard/

XBoard のインターフェース

http://www.tim-mann.org/xboard/engine-intf.html

これであなたが望むすべてが得られるかどうかはわかりません。私たちのチェス エンジンは、独自のボード表現を作成し、自分で動きを考え出さなければならなかったと思いますが、少なくとも、ルールを知っていて、 GUI。

于 2009-07-18T22:46:18.067 に答える