2010-11-30 7 views
1

私は現在、各ユニットが健康、盾、敏捷性の値を持ち、特定の数の6種類の武器を持つゲームに取り組んでいます。ゲームのユニットの価値を計算する

ユニットBには2つのレーザー、2つの重レーザー、1つのミサイル発射装置、1つのイオンブラスター、重イオンブラスター、核ミサイル、5つの健康、2つのシールド、40の敏捷性があります。

MS Excelでこれらのすべての要素のバランスを取って船にスコアを付けるために、20種類の異なるアルゴリズムを試しました。私の現在のアルゴリズムは、より小さいユニットのいくつかにはうまくいくが、大きなユニットでは非常に不均衡になる。

それぞれの船にはダメージ値があり、各タイプの武器にその武器のダメージを掛け合わせる。

damage = weapon1*damage1 + weapon2*damage2 + ... 

ダメージ値にヘルス+ 2 *シールド+2 *アビリティが乗算されます。敏捷性と盾を増やして体重を増やします(命中できない場合、ユニットは健康を失いません)。私はまた、ユニットのコストを引きます。だから私のユニットの一つのために私の現在の方程式は次のようになります。

ここ
value = damage*(health + 2*shield + 2*agility) - 3*cost 

は、いくつかの例は以下のとおりです。

  • ユニット1 - 1レーザー、1人の健康、93敏捷性、およびコスト1.合計スコアは233です
  • ユニット2 - 2レーザー、ミサイルランチャー、および3つの健康状態ですが、敏捷性はわずか76です。 6レーザ、30健康および15のシールド、37敏捷性 - - スコア585

Iはユニット3のスコアが高くなるようにしたいが、ユニット1および2のスコアスコアが200

  • ユニット3でありますかなり良いです。誰も値を平滑化する良い方程式を提案することはできますか?

  • +1

    あなたの目標はあまり明確ではありません。各武器のダメージを変更してユニットのバランスを取っていますか?それとも各船の異なる武器の数ですか?またはそのコスト?それとも別のことですか? ... – ktdrv

    +0

    各ユニットの武器の数は、武器ごとに同じで、武器ごとに異なるため、F ... LにN58 ... N64が掛け合わされています。問題は、= ROUND(W *(M + 2N + 2O)、0)-3Rは、下位のユニットでは大きいが、より良いユニットでは不自然に高いまたは低い値が出現するということです。私はこれらのバンプを平坦化するより良いフォーミュラを探しています。 –

    +0

    OK、あなたはより良い公式を持っているとしたら、それではどうしますか?私。あなたの究極の目標は何ですか? – ktdrv

    答えて

    1

    genetic programmingアルゴリズムは、あなたが説明している問題を解決する良いアプローチだと思います。遺伝的プログラミングは、コスト関数を最小限に抑えるための反復によるアルゴリズムの計算を進化させます。これは、アルゴリズムに適用する一連の「突然変異」を作成することによって行われます。たとえば、3Rが突然変異の1つとなる可能性があるため、ユニットのコストを下げるという考え方です。コスト関数は、バランスの概念に比べて増減するものである。突然変異はこのコスト関数を考慮して評価される。

    このタイプの問題を解決するには、Pythonコードの書籍Programming Collective Intelligenceを参照してください。

    +0

    これは良いアイデアのようですが、単位の反復ごとに数式を変更することなく、これをExcelに適用する方法はありますか? –

    +0

    最終的にこれをExcelで使用したい場合は、Excelで入力を設定します。 Pythonを使ってそれらを読み込み、遺伝的アルゴリズムの反復を行います。最良の突然変異セットを出力する。突然変異を取り、Excel式を作成します。 – orangepips

    +0

    上記のチェーンに基づいて、@ Snypr:あなたの数式を分析し、敏捷性のための乗数のように、変化する可能性のある各部分を解き明かす必要があります。乗数(例えば、敏捷性* 2)を乗じた値と同じくらい単純なものであるが、はるかに複雑な(すなわちif-then-elseのような種類のロジック)可能性があるこの候補の候補をいくつか特定し、アプローチについて説明しました。 – orangepips

    1

    この問題は、cloud balancing example(オープンソース、java)に似ています。 Unit by ComputerとProcess by Weaponを交換してください。

    関連する問題