我试图实现一个捕食者-猎物的模拟,但我遇到了一个问题。
捕食者寻找附近的猎物,并吃掉它如果附近没有猎物,它们就会移动到一个随机的空牢房。
基本上,我遇到的问题是当我提升了一代人。
假设我有一个3x3的网格,每个单元格的编号从0到8。
如果我在0和1中有2个捕食者,第一个捕食者0被选中,它会移动到3或4号细胞
例如,如果它进入3号细胞,那么它会继续检查捕食者1号。这似乎是正确的
但它有点“优先”给指数较低的有机体。我试过使用2个数组,但这似乎也不起作用,因为它会检查有机体所在的位置,但不是。
有谁知道如何做到“公平”和“正确”吗
最佳答案
我最近用Java做了一个类似的任务对捕食者进行从上到下的处理,不仅会给较低的指数带来“不公平的优势”,而且还会在猎物和捕食者的移动中产生模式。
我通过以随机顺序的方式选择行和列来解决这个问题。这样,每一个捕食者/猎物都有同样的机会在一代人的早期阶段被加工。
随机化的方法是创建一个(row,column)
对的链接列表。然后重新排列链接列表在每一代中,选择一个随机索引开始并继续处理。