デルファイのチェス。車輪の再発明の方法

ゲームAIを書くことは非常に興味深く、刺激的です-私は自分の経験からこれを何度も確信しました。最近、私の古いチェスプログラムプロジェクトのコードに偶然出くわしたので、少し変更してGitHubに配置することにしました同時に、それがどのように作成されたか、そしてそれがその過程で私にどのような教訓を教えてくれたかについて教えてください。





開始

それは2009年に起こりました。私はゲームAIの開発を練習するための簡単なチェスプログラムを書くことにしました。私自身はチェスプレイヤーではなく、チェス好きだとは言えません。しかし、トレーニングのタスクは非常に適切で興味深いものです。さらに、ボードやプログラムでチェスをするとき、なぜこの動きやあの動きが他の動きよりも強いのか、いつも興味がありました。チェスの位置の発達のツリー全体をはっきりと見られるようにしたかったのです。私は他のプログラムでそのような機能を見たことがないので、自分で書いてみませんか?これはトレーニングであるため、他のアルゴリズムを学習して独自の実装を作成するのではなく、ゼロから発明して作成する必要があります。一般的には、3日でなんらかの実用版を管理・作成できると思います。





最初のバージョン

通常、チェスエンジンは、分枝限定法でDFSを使用して検索を絞り込みます。しかし、これはあまり明確ではないため、決定されました。私たちは独自の方法で進みます。固定された深さで幅優先探索を行います。次に、メモリ内に完全な検索ツリーがあり、それを何らかの方法で視覚化できます。また、次のことも確認してください。a)利用可能なCPUおよびメモリリソースのフレームワーク内でチェスゲームをどの程度の深さまで計算できるか、b)そのようなアルゴリズムがどの程度うまく機能するか悪いか。





当時、私は2GBまたは4GBのメモリを搭載した2コアプロセッサ(正確には覚えていません)、32ビットWindows、および32ビットTurbo DelphiExplorerコンパイラを持っていたと言わなければなりません。したがって、実行時間が何らかの形で犠牲になる可能性がある場合、プロセスで使用できるメモリは2Gbに制限されていました。ユーザーメモリを3Gbに拡張するPEフラグについては知りませんでした。ただし、システムとDelphiおよびその他のプログラムの両方がメモリを消費するため、スワップに参加しないように、チェスに使用できるのはギガバイト未満です。





その結果、次のモジュールで構成されるゲームの最初のバージョンが作成されました。





  • UI-メインウィンドウ。図形でボードを描画します。





  • ゲームロジック-可能な動きのリストをコンパイルし、動きを作り、ゲームの終了を検出します。





  • AI:スコアはポジションの評価関数です。





  • AI:ブルートフォース-幅優先探索でキューを検索します。





  • UI: - , .





:





  • 3 - , - 5-15 . 4 . .





  • 3 - " ": - , "" , "". . , .





  • , , .





, : , . .





- . - - , - - . , .





:





  • :





    • : - 3, - 5 .. - 1, .





    • , , ( ). .





    • . - . ! - . - . 1-2 .





    • : . AI , .. , .





  • = (white_rate - black_rate) * (1 + 10 / (white_rate + black_rate)). , , - , .





, , . - , . - 1, - 0.4, - . .





, - .





:





  1. 3 ( ).





  2. .





  3. - .





  4. : .





  5. : . 2.





:





  • - .





  • - .





  • - .





. , : . : ?





: - . - . - -. , 64- . 264, , 232, - - - .





"" 30-45%, 80-90%, 5-10 , . !





?

, - 2- , . , , - . :





  • AI - CPU .





  • ?





  • AI . ?





  • : . , . , , . .





, "" . , .





, - . :





  • : 8-, 2- CPU, .





  • 64- : , , x64. , ! x64 , x86 5-10% . 64- Delphi , .





  • : 32- PE- . , 1 - - "" . .





  • : , . - , . - , , . . , - , . .





  • . - . , . .. .





  • . . - . , , , .





  • . - . ? , .





AI , . AI chess.com , 1800-1900. , !





プログラミングゲームのAIは、非常に中毒性があります。常により良いことをしたいと思っています。そして、私はまださらなる発展のための多くのアイデアを持っていますが、私がやめなければならない時が来ます。来たと思います。しかし、誰かが望むなら、彼らは私のコードを取り、遊んで、実験して、何かを実装することができます。幸い、無料のFree PascalとLazarusは言うまでもなく、無料のCommunity Editionのおかげで、Delphiは誰でも利用できるようになりました。プロジェクトコード(およびコンパイルされたexe-shnik)はここ取得できます(コンパイルには、https://github.com/Cooler2/ApusGameEngineからの何かも必要になります)。それを読んだすべての人に感謝します。








All Articles