我正在嘗試實施捕食者 - 獵物模型。 它是基於代理的模型。每隔幾毫秒就是一個新舉措。在場上有兩種類型的生物:捕食者和獵物。他們每個人的行爲是由以下規則給出:捕食者 - 捕食者模擬
獵物:
- 剛搬到一個無人居住細胞
- 每走幾步創建後代他的老小區
- 預期壽命是有限的由的移動次數
捕食者:
- 捕食者移動到有獵物的細胞。如果這些細胞都沒有,在任何 免費相鄰小區
- 同
- 同
我有獵物的舉動的選擇問題。
例如,我在小區5和9 獵物他們每個人都可以移動到細胞6 我該如何解決這個矛盾呢? 謝謝
我正在嘗試實施捕食者 - 獵物模型。 它是基於代理的模型。每隔幾毫秒就是一個新舉措。在場上有兩種類型的生物:捕食者和獵物。他們每個人的行爲是由以下規則給出:捕食者 - 捕食者模擬
獵物:
捕食者:
我有獵物的舉動的選擇問題。
例如,我在小區5和9 獵物他們每個人都可以移動到細胞6 我該如何解決這個矛盾呢? 謝謝
使用異步更新。以隨機順序對獵物進行迭代,讓他們依次決定應該移動到哪個細胞。
這是模擬中常用的方法。它具有額外的好處,它消除了動態中的極限循環。
'移動'需要多長時間?如果你移動一個,那麼在獵物移動之後,你移動下一個,沒有衝突。獵物只會看到空間已經被佔用並移動到別處。
如果移動需要時間,你可能會說獵物彼此留意,看看其他獵物是否試圖移動到某個地方(如人們在車輛中觀看汽車)。然後,當5號獵物試圖移動到那裏時,您會將目標字段的狀態更改爲'保留5'。然後從9的獵物可以看到這一點,並決定他們是否想要與5碰撞(可能是intresting:P)或避免5.
取決於遊戲邏輯。如果獵物可以在同一個單元格上,那麼只需使用顯示獵物數量的指標即可。如果使用的是2D陣列用於表示當前場狀態可以使用這樣的碼:
-1 - predator
n - preys
N> = 0,(N = 0 - 細胞是空的,n = 1個的單元格中包含1個獵物等)。
否則(如果獵物不能出現在同一個細胞上)使用基於回合的策略。將所有獵物保存在陣列中或給每個獵物編號。在這種情況下獵物的舉動表示通過簡單的循環(僞):
for each prey in preys
move(prey)
end
其中移動邏輯描述算法如何你的獵物移動。
不少辦法,取決於如果你決定&移動兩個步驟或一個等:
有沒有真正的'正確'的方法來做到這一點。
看到這個相關的問題和我的答案。它描述了一個很好的碰撞檢測機制。
這個問題很含糊。這是一個基於代理的模擬?時間如何處理 - 連續或離散的步驟? –
是的,它是基於代理的模型。每隔幾毫秒就是一個新舉措。在場上有兩種類型的生物:捕食者和獵物。 他們每個人的行爲由以下規則給出: 獵物:1)剛搬到一個未被佔用的細胞 2)每幾個步驟創建他的舊細胞的後代 3)預期壽命受移動次數限制 捕食者: 1)捕食者移動到有獵物的細胞。如果這些單元格不在任何空閒的相鄰單元格中 2)相同 3)相同 –
您應該將該信息編輯到問題中。 –