找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 168|回复: 3

Boids

[复制链接]

21

主题

42

回帖

1516

积分

版主

积分
1516
发表于 9-9-2025 17:22:36 | 显示全部楼层 |阅读模式
本帖最后由 Ray 于 9-9-2025 17:23 编辑

Boids 是一个人工生命模拟程序,由 Craig Reynolds 在 1986 年提出。它通过为每个个体(称为 “boid”,发音为 “bird-oid”,意为“像鸟的物体”)设定几条简单的行为规则,来模拟鸟群、鱼群等生物群体的涌现行为。
其核心思想是:复杂的、看似智能的群体行为,源于个体遵循的几条简单规则。Boids 模型通常基于以下三个基本规则:
  • 分离:避免与群体中的同伴相撞,即与离得太近的邻居保持距离。
  • 对齐:调整自身方向,与周围邻居的平均飞行方向保持一致。
  • 凝聚:向周围邻居的平均位置(即群体的中心)靠拢,避免掉队。


通过调整这些规则的权重,可以模拟出各种不同的群体运动模式。

我的代码在经典的三条规则之外增加了一些功能。


核心模拟
  • Boid 类:定义了每个个体的属性和行为。

    • 属性:位置、速度、颜色、类型、轨迹历史、大小等。值得注意的是,不同种族的boids之间会互相排斥得更多,且不会对齐或凝聚。
    • 行为:update 方法整合了所有作用力来更新 boid 的状态。

  • 三条核心规则:

    • separation:分离规则。排斥力,防止 boid 挤在一起。
    • alignment:对齐规则。使 boid 与同类邻居的速度方向保持一致。
    • cohesion:凝聚规则。吸引力,使 boid 向同类邻居的中心点移动。

  • 额外规则:

    • mouse_attraction:鼠标交互。boid 会受到鼠标光标吸引或排斥(取决于 mouse_strength 的正负)。
    • velocity_maintain:速度维持。确保 boid 的速度不会低于最小值,保持运动。
    • check_bounds:边界处理。boid 在接近模拟区域边界时会“反弹”。


图形与界面
  • 可视化:

    • 用圆点表示 boid 当前位置,并用一条白线指示其速度和方向。
    • 绘制彩色轨迹,轨迹的长度和颜色因 boid 类型而异。

  • 用户界面:

    • 右侧有一个信息面板,显示 boid 总数、鼠标吸引力强度、鼠标位置以及按类型分类的统计信息(数量和平均速度)。

  • 交互功能:

    • 空格键:暂停/继续模拟。
    • 鼠标右键:在点击位置创建一个新的 boid。
    • 鼠标滚轮:上下滚动可以增加或减少鼠标对 boids 的吸引力/排斥力。
    • 鼠标移动:鼠标光标的位置会影响 boids 的运动。


可以在这里找到该项目的演示视频:BoidsSim







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

4

主题

23

回帖

301

积分

中级程序员

积分
301
发表于 9-10-2025 11:07:41 | 显示全部楼层
实际就是:个体执行简单的规则,群体涌现emergence出更有效(更智能)的行为表现。
那么,有没有可能通过适当的规则,仿真展现出鸟类世界最直观的涌现?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

21

主题

42

回帖

1516

积分

版主

积分
1516
 楼主| 发表于 9-10-2025 13:09:17 | 显示全部楼层
tiger 发表于 9-10-2025 11:07
实际就是:个体执行简单的规则,群体涌现emergence出更有效(更智能)的行为表现。
那么,有没有可能通过适 ...

可以的,增加一个leader就可以产生鸟群,如果想要产生人字形的话需要增加图形的奖励和惩罚,这是可以达到的

4

主题

23

回帖

301

积分

中级程序员

积分
301
发表于 9-10-2025 21:06:58 | 显示全部楼层
想看到代码和具体的实践。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 9-19-2025 08:06 , Processed in 0.067171 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表