4

我正在嘗試實施捕食者 - 獵物模型。 它是基於代理的模型。每隔幾毫秒就是一個新舉措。在場上有兩種類型的生物:捕食者和獵物。他們每個人的行爲是由以下規則給出:捕食者 - 捕食者模擬

獵物:

  1. 剛搬到一個無人居住細胞
  2. 每走幾步創建後代他的老小區
  3. 預期壽命是有限的由的移動次數

捕食者:

  1. 捕食者移動到有獵物的細胞。如果這些細胞都沒有,在任何 免費相鄰小區

我有獵物的舉動的選擇問題。 Prey

例如,我在小區5和9 獵物他們每個人都可以移動到細胞6 我該如何解決這個矛盾呢? 謝謝

+0

這個問題很含糊。這是一個基於代理的模擬?時間如何處理 - 連續或離散的步驟? –

+1

是的,它是基於代理的模型。每隔幾毫秒就是一個新舉措。在場上有兩種類型的生物:捕食者和獵物。 他們每個人的行爲由以下規則給出: 獵物:1)剛搬到一個未被佔用的細胞 2)每幾個步驟創建他的舊細胞的後代 3)預期壽命受移動次數限制 捕食者: 1)捕食者移動到有獵物的細胞。如果這些單元格不在任何空閒的相鄰單元格中 2)相同 3)相同 –

+0

您應該將該信息編輯到問題中。 –

回答

3

使用異步更新。以隨機順序對獵物進行迭代,讓他們依次決定應該移動到哪個細胞。

這是模擬中常用的方法。它具有額外的好處,它消除了動態中的極限循環。

0

'移動'需要多長時間?如果你移動一個,那麼在獵物移動之後,你移動下一個,沒有衝突。獵物只會看到空間已經被佔用並移動到別處。

如果移動需要時間,你可能會說獵物彼此留意,看看其他獵物是否試圖移動到某個地方(如人們在車輛中觀看汽車)。然後,當5號獵物試圖移動到那裏時,您會將目標字段的狀態更改爲'保留5'。然後從9的獵物可以看到這一點,並決定他們是否想要與5碰撞(可能是intresting:P)或避免5.

0

取決於遊戲邏輯。如果獵物可以在同一個單元格上,那麼只需使用顯示獵物數量的指標即可。如果使用的是2D陣列用於表示當前場狀態可以使用這樣的碼:

-1 - predator 
n - preys 

N> = 0,(N = 0 - 細胞是空的,n = 1個的單元格中包含1個獵物等)。

否則(如果獵物不能出現在同一個細胞上)使用基於回合的策略。將所有獵物保存在陣列中或給每個獵物編號。在這種情況下獵物的舉動表示通過簡單的循環(僞):

for each prey in preys 
    move(prey) 
end 

其中移動邏輯描述算法如何你的獵物移動。

0

不少辦法,取決於如果你決定&移動兩個步驟或一個等:

  1. 跟蹤每個獵物的預期移動,並阻止其他獵物佔用的。
  2. 檢查是否有其他獵物已經佔據目的地,如果有的話,什麼也不做。
  3. 如果他們都嘗試佔據相同的位置,隨機刪除其中一個獵物。
  4. 如果目標已被佔用,請重新評估移動選項。

有沒有真正的'正確'的方法來做到這一點。