植绒行为问题

Isk*_*rak 8 java simulation artificial-life boids

昨天我遇到了Craig Reynolds的Boids,随后我发现我会用Java实现一个简单的2D版本.我已经根据Conrad Parker的笔记精心制作了一个相当基本的设置.

但是,我得到了一些相当奇怪的(在我看来)行为.目前,我的boids合理地快速移动到粗糙的网格或格子中,然后在现场进行抽搐.我的意思是他们移动一点并且非常频繁地旋转.

目前,我已实施:

  1. 对准
  2. 凝聚
  3. 分割
  4. 速度限制

最初,我的boids随机分布在屏幕区域(与Parker方法略有不同),它们的速度都指向屏幕区域的中心(请注意,随机初始化的速度会产生相同的结果).更改速度限制值只会改变boids移动到此模式的速度,而不会形成模式.

我认为,这可能是:

  1. 我正在使用的参数的结果(现在我的代码如Parker的伪代码所述;我还没有尝试过雷诺兹所描述的由角度和半径定义的影响区域.)
  2. 我需要实现的东西,但我不知道.
  3. 我做错了什么.

预期的行为将更像雷诺兹的boids页面上applet中发生的二维版本,尽管现在我还没有实现任何方法来保持屏幕上的boid.

有没有人遇到过这个?有关原因和/或如何解决的任何想法?如果它有帮助,我可以发布一个.gif的行为.

Con*_*ker 11

也许你对分离规则的权重过于强烈,导致所有的boids尽可能远离所有相邻的boids.我的伪代码中有各种常量作为权重:规则1中的/ 100和规则3中的/ 8(规则2中的隐含*1); 这些可以调整,这通常可用于建模不同的行为,如紧密蜂拥或昆虫.

也是任意的|距离| 应修改分离规则中的<100以匹配模拟的单位; 此规则应仅适用于近距离的boids,基本上是为了避免碰撞.

玩得开心!