0

私はチェスプログラムを開発しようとしています。ツリーの通常のブルートフォース検索になりますが、異なるのは評価だけです。最初は、Claude Shannon によって設計された標準のエバリュエーターを使用して、ベースで正常に機能するかどうかを簡単にテストできるようにします。リストの生成とその周りの他のすべてのインフラストラクチャを移動すると、正常に動作します。

検索については、 wikipediaのアルファ/ベータ プルーニング コード例を使用したいと思います。これがちょっとした問題です。1 つの点があいまいです。評価は誰の視点から行うべきか?私は何日も(文字通り)グーグルで検索してきましたが、これを明示的に示している例はありません。だから:評価は

  • その深さの「現在のムーバー」の視点から
  • その深さでの「現在の動きの相手」の視点から
  • ツリーのルートにいるムーバーの視点から、たとえば、このツリー検索が行われている人 (AI プレーヤー)
  • 木の根元にいるムーバーの相手の視点から

?

rootSide、side、rootOpponent、基本的にすべてのオプションを実験的に試してから、それらを互いに対戦させました。その結果、「その深さの現在のムーバー」が使用される (最も頻繁に勝利した) ことになりましたが、そのバージョンを他のエンジンに対してテストすると、100% の損失が発生しました。

もちろん、ウィキペディアはそれについてより明確になるように更新されます! (ウィキペディアの歴史の側面にあるメモは無視してください:それは私からのもので、間違っている可能性があるので削除しました)

4

1 に答える 1

1

評価は、それを呼び出すノードの観点から実行する必要があります。これはあなたの最初のケースであり、本当に理にかなっている唯一のケースです。

非常に基本的なエンジンを他の完全なエンジンに対してテストしている場合は、すべての一致に負けることが予想されます。多くのテクニックが欠けているため、他のエンジンと対戦することは、現時点では良いテスト方法ではありません。エンジンが強化されたら、この方法を使用して強度を向上させたり、回帰テストを実行したりできます。

簡単な位置を設定し、手動で操作して、基本的なキャプチャ、チェック、チェックメイトなどを確認できるかどうかを確認することをお勧めします。アルファベータと簡単な評価を完全に実装したとしても、エンジンがまだ失敗する可能性があることに注意してください。時には。これは検索範囲が固定されているためです。次に、静止検索を検討することをお勧めします。

于 2013-08-31T04:08:47.957 に答える