首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕食-食饵模拟

捕食-食饵模拟
EN

Stack Overflow用户
提问于 2012-01-20 09:21:59
回答 5查看 2.1K关注 0票数 5

我在尝试实施一个捕食者-食肉动物模型。它是基于agent的模型。每隔几毫秒就会有一次新的变化。在野外有两种生物:捕食者和猎物。他们每一个人的行为由以下规则决定:

猎物:

  1. 刚刚搬进了一个空着的细胞
  2. 每几步就创造出他的老细胞的后代
  3. 预期寿命受限于移动

的次数

掠食者:

  1. 捕食者与猎物一起移动到细胞中。如果没有这样的单元,则在任何自由相邻的cell
  2. Same
  3. Same

我对猎物的选择有问题。

例如,我在单元格5和9中有猎物。每个单元格都可以移动到单元格6。如何解决这个冲突?谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-20 11:11:09

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

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

票数 4
EN

Stack Overflow用户

发布于 2012-01-20 09:39:37

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

如果移动需要时间,你可以说猎物互相注视,看看其他猎物是否试图移动(就像人们在交通中观察汽车一样)。然后,当来自5的猎物试图移动时,您会将目标字段的状态更改为“为5保留”。然后从9的猎物可以看到这一点,并决定他们是否想与5碰撞(可能是无畏:P)或避免5。

票数 0
EN

Stack Overflow用户

发布于 2012-01-20 09:40:26

取决于游戏逻辑。如果preys可以位于同一单元格上,那么只需使用指示符显示捕食计数。如果使用2D数组表示当前字段状态,则可以使用以下代码:

代码语言:javascript
复制
-1 - predator
n - preys

N >= 0,(n =0-细胞为空,n=1细胞包含1只猎物等)。

否则(如果猎物不能出现在同一单元格上),则使用基于转弯的策略。把你所有的猎物都保存在数组里,或者给每个猎物编号。在这种情况下,preys的动作由简单循环(伪代码)表示:

代码语言:javascript
复制
for each prey in preys
    move(prey)
end

哪里移动逻辑描述算法如何你的猎物移动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8939122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档