Algorithm 捕食者-食饵模拟

Algorithm 捕食者-食饵模拟,algorithm,collision-detection,simulation,agent,agent-based-modeling,Algorithm,Collision Detection,Simulation,Agent,Agent Based Modeling,我试图实现一个捕食者-食饵模型。 它是基于agent的模型。每隔几毫秒就是一次新的移动。野外有两种生物:捕食者和猎物。它们各自的行为由以下规则给出: 猎物: 刚搬到一个无人居住的牢房 每隔几步就有后代进入他的旧细胞 预期寿命受到搬家次数的限制 捕食者: 捕食者和猎物一起移动到细胞中。如果这些细胞不是,在任何 自由相邻小区 同样的 同样的 我对猎物移动的选择有问题。 例如,我在5号和9号牢房有猎物。 他们每个人都可以移动到第6单元。 我如何解决这一冲突? 谢谢搬家需要多长时间?如果你移动一个,那

我试图实现一个捕食者-食饵模型。 它是基于agent的模型。每隔几毫秒就是一次新的移动。野外有两种生物:捕食者和猎物。它们各自的行为由以下规则给出:

猎物:

  • 刚搬到一个无人居住的牢房
  • 每隔几步就有后代进入他的旧细胞
  • 预期寿命受到搬家次数的限制
  • 捕食者:

  • 捕食者和猎物一起移动到细胞中。如果这些细胞不是,在任何 自由相邻小区
  • 同样的
  • 同样的
  • 我对猎物移动的选择有问题。

    例如,我在5号和9号牢房有猎物。 他们每个人都可以移动到第6单元。 我如何解决这一冲突?
    谢谢

    搬家需要多长时间?如果你移动一个,那么在猎物移动后,你移动下一个,就没有冲突。猎物只会看到空间已经被占据,然后移动到其他地方


    如果移动需要时间,你可能会说,猎物互相注视,看看是否有其他猎物试图移动到某个地方(比如人们在车流中观察汽车)。然后,当5的猎物试图移动到目标区域时,你会将目标区域的状态更改为“保留给5”。然后来自9的猎物可以看到这一点,并决定他们是想与5碰撞(可能很有趣:P)还是避开5。

    取决于游戏逻辑。如果猎物可以在同一个单元格中,那么只需使用显示猎物计数的指示器即可。如果使用2D数组表示当前字段状态,则可以使用以下代码:

    -1 - predator
    n - preys
    
    n>=0,(n=0-单元为空,n=1单元包含1个猎物,依此类推)

    否则(如果猎物不能出现在同一牢房内)使用回合策略。保存阵法中的所有猎物或给每个猎物编号。在这种情况下,猎物的移动由简单循环(伪代码)表示:


    其中,移动逻辑描述了猎物如何移动的算法。

    有很多方法,取决于您是选择两步移动还是一步移动,等等:

  • 跟踪每个猎物的预期移动,并防止其他猎物占据这些移动
  • 检查另一个猎物是否已经占领了目的地,如果已经占领了,什么也不做
  • 如果两个猎物试图占据同一位置,则随机移除其中一个猎物
  • 如果目的地已被占用,请重新评估移动选项

  • 没有一个真正“正确”的方法来做这件事。

    请看这个相关的问题和我的答案。 它描述了一种良好的碰撞检测机制


    使用异步更新。以随机顺序遍历猎物,让它们依次决定应该移动到哪个细胞


    这是模拟中常见的方法。它还有一个额外的好处,它消除了动力学中的极限环

    这个问题很模糊。这是基于代理的模拟?时间是如何处理的?是连续的还是离散的?是的,它是基于代理的模型。每隔几毫秒就是一次新的移动。野外有两种生物:捕食者和猎物。它们的行为是由以下规则决定的:猎物:1)刚移动到一个未被占用的细胞2)每隔几步就会产生后代到他的旧细胞3)预期寿命受到捕食者移动次数的限制:1)捕食者移动到有猎物的细胞。如果这些单元格不存在,则在任何空闲的相邻单元格2)相同3)相同的情况下,您应该将该信息编辑到问题中。
    for each prey in preys
        move(prey)
    end