8

遺伝的アルゴリズムに関する期間プロジェクトを行う必要があり、一人称シューティング ボットの特性 (つまり、使用する武器など) を調整するというアイデアがありました。たとえば、最初の 10 ビットが武器 1 を選択する確率を表し、次の 10 ビットが武器 2 を選択する確率を表すというように、文字列の形式で特性を表します。このようにして最適な文字列を取得し、それを把握することができます。私が使用すべき最適な武器セットは何ですか。

私が直面している明らかな問題は、フィットネス値を見つける方法です。私の考えでは、文字列の適合度を見つけたい場合は、ボットに対応する武器を使用させ、それに対してゲームをプレイさせ、ボットの最終スコアを適合度として使用するというものです。問題は、大量のゲームをプレイする必要があることです。

私ができるシミュレーションのようなものはありますか?たとえば、ボットの特性 (例: 武器など) をフィードして、対応するフィットネス値を返す関数 f を取得できますか? オープンソースの FPS ゲームはそのようなライブラリを提供していますか?

もう 1 つのオプションは、ゲームのソース コードを調べてから、さまざまなシナリオをシミュレートし、各シナリオのスコアを記録し続けることです。これは短い (1 か月) プロジェクトであるため、ゲームのソースに入るという複雑さは避けたいと思います。

ありがとう。

4

4 に答える 4

4

あなたのプロジェクトは 1 か月のプロジェクトとしては非常に複雑だと思います。

それほどエキサイティングではありませんが、代わりにボード ゲームやカード ゲームの戦略を考えることができます。これははるかに単純な状況であり、多くのゲームは簡単かつ迅速にシミュレートできるため、遺伝的アルゴリズムを使用して適切なプレイ戦略を見つけることができます. ファースト パーソン シューティング ゲームをシミュレートするために必要な大量のソース コードを理解する必要なく、遺伝的アルゴリズムの原理を学ぶことができます。

于 2010-10-10T09:18:02.457 に答える
2

I agree with Mark Byers, it's a bit too ambitious for a 1-month project.

Anyways, you may want to check out NERO (Neuro-Evolving Robotic Operatives), which is a game based on Ken Stanley's algorithm NEAT (NeuroEvolution of Augmenting Topologies).

You may also want to have a look at Stanley's papers:

Several implementations of NEAT exist for different languages, so that may be a start.

于 2010-10-10T10:00:46.303 に答える
0

フィットネス関数は、特定のボットが座っているアヒルの敵に対してどれだけの DPS を処理するかである可能性があります。たとえば、ボットにプレイヤーを攻撃させ、反撃しないようにします。

フィットネスをメモできるので、重複した個人を再テストする必要はありません。


または、2 人の個人を反対のチームに入れ、誰が誰を殺すかを見て、適者生存を文字どおりにすることもできます。

技術的には、個人を比較する方法にすぎず、フィットネス関数は必要ありません。

比較の回数を減らすために、各世代の個人をトーナメントで比較することができます。

A 
  }-> A
B
        }-> C
C
  }-> C
D

これは、上位 2 人の個人が C、次に A であることを示しています。

于 2010-10-10T09:51:01.210 に答える
0

既存のボットが利用可能であり、それが可能であれば、データを生成するために既存のボットを使用できます。

または、Autohotkey (google を検索) を使用して、一連のキーとマウスの押下を生成し、ボットを何らかの方法で自動的に再生させることもできます。

于 2010-10-10T09:53:07.413 に答える