4

私はpredator-preyのモデルを実装しようとしています。 エージェントベースのモデルです。数ミリ秒ごとに新しい動きがあります。フィールドには、2種類のクリーチャーがあります:捕食者と獲物。それらのそれぞれの動作は、次のルールで与えられます。プレデター・プレイのシミュレーション

獲物:

  1. は、ちょうど彼の昔のセルに子孫を作成
  2. 余命が限られている未使用のセル
  3. にすべてのいくつかの手順を移動しました

      :移動

    捕食者の数によって

  4. プレデターは獲物で細胞に移動します。このような細胞は、任意の 無料の隣接セルで、

  • 同じ
  • 同じではない場合、私は獲物の動きの選択に問題があります。例えば Prey

    、私はそれらのそれぞれが、私はこの競合を解決するにはどうすればよいのセル6 に移動することができ、細胞5,9 で獲物を持っていますか? ありがとう

  • +0

    この質問はかなり曖昧です。エージェントベースのシミュレーションですか?時間はどのように処理されるのですか? –

    +1

    はい、エージェントベースのモデルです。数ミリ秒ごとに新しい動きがあります。フィールドには、2種類のクリーチャーがあります:捕食者と獲物。 2)すべてのステップで古いセルに子孫が作成されます 3)平均寿命は移動回数によって制限されます プレデター: 1)プレデターは獲物で細胞に移動します。そのようなセルが存在しない場合、任意のフリー近隣セル 2)同じ 3)同じ –

    +0

    この情報を質問に編集する必要があります。 –

    答えて

    3

    非同期更新を使用してください。ランダムな順序で獲物を繰り返し、どのセルに移動すべきかを順番に決定させる。

    これはシミュレーションでの一般的なアプローチです。ダイナミクスのリミットサイクルを排除するという利点があります。

    0

    どのくらいの時間がかかりますか? 1つを動かすと、獲物が動いた後、次のものを動かすと、紛争は起こりません。獲物は単にスペースがすでに占領されているのを見て、他の場所に移動します。

    移動に時間がかかる場合は、獲物が互いに目を離して、他の獲物がどこかに移動しようとしているかどうかを確認することができます。 5からの獲物がそこに移動しようとしているとき、あなたはターゲットフィールドの状態を '5のための予約'に変更します。 9人の犠牲者はこれを見ることができ、5人(intresting:P)と衝突するか5人を避けるかを決めることができます。

    0

    ゲームロジックによって異なります。餌食が同じ細胞にある可能性がある場合は、単に餌の量を示す指標を使用してください。現在のフィールドの状態を表すための2次元配列を使用している場合は、そのようなコードを使用することができます。

    -1 - predator 
    n - preys 
    

    N> = 0(N = 0 - セルが空であり、n = 1つのセルは、1人の獲物を含み、など)。

    それ以外の場合(同じ細胞に餌が出ない場合)、ターンベース戦略を使用してください。すべての餌食をアレイに保存するか、各餌食に番号を付けます。その場合、餌の動きは単純なループ(擬似コード)によって表現されます。

    for each prey in preys 
        move(prey) 
    end 
    

    ここで、ロジックはあなたのプレイの動きのアルゴリズムを表します。あなたは二つのステップまたは1などとして移動&を決定している場合に応じて、

    0

    かなりの数の方法、:

    1. 各捕食者の意図した動きを追跡し、それらを占有するから、他の獲物を防ぎます。
    2. 他のプレイヤーが既に相手を占有しているかどうかを確認し、そうであれば何もしません。
    3. 両方のプレイヤーが同じ場所を占有しようとすると、ランダムに1つのプレイヤーを削除します。
    4. 宛先が占有されている場合は、移動オプションを再評価してください。

    本当に正しい方法はありません。