0

さて、私は部族(グループ)のエージェントが、固定サイズのマップ(マップは2Dマップ)で自分がどれだけの領域を所有しているかを競うことができるシミュレーションを開発しています. 彼らはグループで互いに戦うことによって競争し、勝ったグループは他のグループによって所有されます.このシミュレーションはJavaで書かれています.

私がいくつかのアイデアを得ようとしている主な問題は、各グループが所有するマップの量をどのように保存するかということです.最初は、エージェントのグループがエリアに勝つたびに、ディメンションのインスタンスを使用するだけでした.ディメンションに追加します。ただし、問題は、下の図に示すように、所有するエリアがマップ内の任意の位置にある可能性があり、エリア間にギャップがあることです。 gimpを使用)

ここに画像の説明を入力

注: さまざまな色の四角形はエージェントが所有する領域を表し、紫の円はエージェント自体を表します

別のアイデアは、特定の部族のエージェントが所有するすべての領域を保持する Dimension 型の ArrayList を持つことでした。

しかし、これを行うためのより良い方法があるかどうかを考えています。

4

2 に答える 2

1

各トライブと、そのトライブが所有するリージョンの数との間には、1 対多 (技術的には 1 対 0 または多) の関係があります。1 対多の関係を表すには、3 つの基本的な選択肢があります。

1. You can place a reference in each child to the parent
2. You can manage a list of children in each parent
3. You can manage a list of parent-child pairings separately

私が自問したいのは、シミュレーションからどのような結果を得ようとしているのかということです。そこから始めて、逆方向に作業します。たとえば、目標が部族ごとの所有物のレポートである場合、各部族オブジェクト内の地域のリストを管理するのが最も効率的かもしれません。目標が各地域の所有者を示す地域のレポートである場合は、各地域のオブジェクト内で所有する部族を参照する方が簡単な場合があります。複数のビューをサポートしている場合は、両方の場所で管理することも合理的です。

オブジェクト自体の外部で関係を管理する 3 番目のオプションは、プレイヤーが複数の部族のメンバーになることを許可するなど、多対多の関係もサポートされる場合に最も役立ちます。

于 2013-01-27T19:04:18.620 に答える
1

少し前にグラフ関連の作業をしていたときに、ある論文でグラフをマップに変換する方法を見つけました。申し訳ありませんが、その論文のタイトルを思い出せませんが、私が覚えているのは、それらはボロノイ図を使用すると、この場合、エージェントとチーム ID によって実行されるアクションの座標を保持するオブジェクトのセットとしてマップ データを保存できます。

また、重複する地域の競合を解決するために使用される可能性のある販売額を紹介することもできます (地域の売上の 90% は A に属しているため、地域の 90% は A にも与えられます)。

于 2013-01-27T18:04:51.213 に答える