1

個々のユニットの攻撃に最適なターゲットを見つけて選択するために、アーケード/戦略ゲームで使用されるさまざまな AI アルゴリズムまたはロジックを知りたいです。

ユニットのグループがさまざまなタンカーによって攻撃される小さな AI ロジックを作成する必要があったため、ユニットがタンカーを攻撃するのに最適なターゲットを選択するためのより良いロジックまたはアルゴリズムを取得することに行き詰まりました。

利用可能なデータは次のとおりです: タンカーの位置、射程、ヒットポイント、ダメージ。

この問題を解決するための最適なアルゴリズム/ロジックを知っている人は、早めに回答してください。

前もってありがとう、ラマナンド。

4

3 に答える 3

6

これを RPG ゲーマーに似た視点で表現します。

残りの敵に壊滅的な打撃を与えるために、最初にどのキャラクターを倒しますか? チームの残りのメンバーを回復できるので、パーティーのヒーラーを倒すのが常識です。ヒーラーがいなくなったら、チームは薬を使用する必要がありますが、薬の供給は限られています。薬が尽きると、パーティーは台無しになります。

同様のロジックがタンク プログラムにも適用されます。AI では、どの戦車がユーザーの艦隊に最も力とサポートを提供しているかを把握し、最初にそれらを排除する必要があります。目標を達成するために重要になる場合を除き、他の戦車に集中しないでください: グループの中で最も強力で最も有用なメンバーを最初に殺します。

そこで、戦車の属性に関連する可能性が最も高いと思われるものを分析します。

RANGE: Far range tanks can hit from a distance but have weak STRENGTH in their attacks.

TANKER POSITION: Closer tanks are faster tanks, but have less STRENGTH in their attacks.  Also low HITPOINTS because they're meant for SPEED, and not for DAMAGE.

TANKER HP: Higher HP means a slower-moving tank, as they're stronger.  But they won't be close to the front lines.

DAMAGE: Higher DAMAGE means a STRONGER tank with lots of HP, but SLOWER as well to move.

したがって、私があなたの立場なら、最初に最も HP が高く、攻撃力が最も高い戦車に注目し、次に最も近い戦車に注目し、次に遠距離戦車について心配します。あなたの攻撃範囲 :P

そして、アルゴリズムは非常に単純です。パーティーに戦車のリストがある場合は、(CompareTo を使用して) それらのカスタム ソートを作成し、可能な限り HP の高いクラスで戦車をリストの一番上に並べ替え、次に速度に重点を置いた戦車を並べ替えます。範囲。

次に、リスト内の各項目を確認します。Tank(0)に攻撃可能なら攻撃。そうでない場合は、Tank(1) に進みます。

于 2010-06-20T20:33:55.597 に答える
4

目標は、一度に 1 人の敵だけを攻撃し、一度に多くても 1 人の敵から攻撃を受けることです (ただし、できればゼロであることが望ましいです)。

理想的には、物陰に隠れて奇襲攻撃を行うことで、戦車を攻撃します。これにより、一度に 1 両の戦車を破壊することができますが、火はまったくまたはほとんど受けません。

カバーがない場合は、敵をカバーとして使用する必要があります。敵を敵の後ろに置く位置に移動します。これで当たる確率も上がります。

範囲を使用して、複数の敵からの火を減らすこともできます。敵 1 体の射程内に収まるまで後退する。

敵がすべてあなたに発砲できる場合は、1 つのターゲットが脅威でなくなるまで攻撃してから、次のターゲットに移動します。目標は、受け取る火の量をできるだけ早く減らすことです。

同時に複数の敵があなたに発砲する可能性があり、ターゲットを選択できる場合は、最小のコストで最大のダメージを減らすことができる敵に発砲する必要があります. ヒットポイントをダメージで割って、結果が最も小さいものを攻撃するだけです。また、その他の関連する統計も考慮する必要があります。範囲はおそらくあなたと敵に同等に影響しますが、火の邪魔にならないように操縦する能力を考慮すると、より近い敵はより有害であり、計算でいくらかの重みを与える必要があります.

移動することで攻撃を受ける可能性が減る場合は、移動を続ける必要があります。通常は、敵の側面に留まるように旋回します。

チームの戦術には、主に側面攻撃と気晴らしが含まれます。

弾薬の状況はどうなっていますか?静止しているターゲットを逃す可能性はありますか?

于 2010-06-21T17:08:09.353 に答える
1

あなたのコメントによると、独自の測定に基づいて約 70% の成功を収めるために、アドホックな一連のルールまたはヒューリスティックが既にあるように思われます。これをさらに最適化して、勝率を高めたいと考えています。

一般的な解決方法として、山登りアルゴリズムを使用します。70% の成功率の原因となっている現在のアルゴリズムの詳細がわからないため、山登りを適応させてアルゴリズムを最適化する方法を抽象的な言葉で説明することしかできません。

山登りの一般的な原理は次のとおりです。うまくいけば、現在のアルゴリズムのいくつかの数値パラメーターの小さな変化が、結果として得られる成功率の小さな (できれば線形の) 変化の原因となるでしょう。これが当てはまる場合は、最初に現在の一連のルールをパラメーター化します。つまり、現在のアルゴリズムで、より高い成功率を達成するために調整および最適化できる数値パラメーターを決定する必要があります。それらが何であるかを決定したら、学習プロセスは簡単です。現在のアルゴリズムから始めます。以前よりわずかに微調整されたパラメーターを使用してさまざまな新しいアルゴリズムを生成し、シミュレーションを実行して、この新しい一連のアルゴリズムのパフォーマンスを評価します。次の出発点として最適なものを選択してください。アルゴリズムが改善されなくなるまで、このプロセスを繰り返します。

アルゴリズムが一連の if-then ルール (これにはルール マッチング システムが含まれます) であり、パフォーマンスの改善にそれらのルールの並べ替えまたは再構築が必要な場合は、遺伝的アルゴリズムを検討することをお勧めします。、これはもう少し複雑です。遺伝的アルゴリズムを適用するには、突然変異または交叉を 1 回適用すると全体のパフォーマンスがわずかに変化し、突然変異と交叉を何度も適用すると全体のパフォーマンスが大きく変化するように、突然変異および交叉演算子を定義することが不可欠です。アルゴリズムのパフォーマンス。私はこの分野の専門家ではありませんが、「決定木の遺伝的アルゴリズム」をグーグルで検索すると、多くの情報が表示されるはずです。避けなければならない落とし穴は、突然変異演算子の決定木の分岐を単純に交換することを検討した場合、単一のアプリケーションが決定木のルートを変更し、パフォーマンスに大きな違いが生じる可能性があることです。これは通常、遺伝的アルゴリズムにはあまりにも多くのノイズを追加します。

これら 2 つの方法は、現在のアルゴリズムを学習または改善するための非常に一般的な AI 方法であることに注意してください。これらのシミュレーションと学習はすべてオフラインで行います。次に、結果として得られた学習済みアルゴリズムを展開するだけです。

于 2010-06-23T06:54:15.320 に答える