生物群体运动模型笔记

本文详细介绍了生物群体运动的两种基础模型——Boid模型和Vicsek模型,以及它们的改进。Boid模型通过个体间的相互作用模拟生物集群行为,Vicsek模型则从统计力学角度研究群体一致性。文中还探讨了有限视野、随机视线方向、拓扑交互等改进策略,以更好地模拟真实世界的群体运动现象。
摘要由CSDN通过智能技术生成

生物群体运动模型笔记

1.概述

  生物集群在自然界中广泛存在,如鸟群、鱼群和细菌群落。由于集群展现出自组织特性与多变的行为模式,作为一个跨学科的研究课题,对集群现象的研究很早就在如生物、物理和计算机等多个学科内展开。

  对多个体系统的模型研究进展进行梳理,如右图所示。可以看出,Reynolds (Boid)和 Vicsek 模型是多个体系统模型研究的基础,以后学者多是基于 Vicsek 模型进行研究,其改进也是根据不同目的而开展工作的。

TIM截图20191103152413.png

2. Boid模型

  在 1987 年,Reynolds 构造了一个计算机仿真模型,其程序能够模拟在三维空间中鸟群的飞翔和鱼群的游动,后来他将这种仿真命名为 Boid 模型。

微信截图_20191031213522.png

  Biod 模型的三个规则

    (a) 个体为了避免碰撞而相互分离;

    (b) 调整个体的方向为最近邻个体的方向的平均值;

    © 个体移动到最近邻个体的中心位置。

  每个个体能够在整个3D空间中运动,但是每个个体能感知到的区域是有限的。如图所示,个体能感知到的是一个扇形区域,该扇形区域是由角度和半径两个因素决定的。

image-20191101110145003.png

20190905105725881.png

  由美国普林斯顿大学副教授 Couzin 等人于 2002 年将 Boid 模型用数学模型进行了精确的描述。

  设系统有 N 个个体组成

boid 模型是一种模拟鸟群行为的计算模型,它描述了鸟群中每只鸟的简单行为规则,如飞行速度、方向和与其他鸟的距离等,通过这些规则的相互作用,可以模拟出群体整体的集体行为。 下面是一个简单的用 Python 编写的 boid 模型程序: ```python import numpy as np import matplotlib.pyplot as plt # 初始化参数 num_boids = 100 # 鸟群中的鸟的数量 size = 100 # 模拟空间的大小 speed_limit = 5 # 鸟的最大速度 sight_distance = 10 # 鸟的视野距离 cohesion_factor = 0.01 # 群体凝聚力因子 separation_factor = 0.1 # 群体分离力因子 alignment_factor = 0.1 # 群体一致性因子 # 生成鸟群随机初始位置和速度 positions = np.random.rand(2, num_boids) * size velocities = np.random.rand(2, num_boids) * speed_limit # 模拟鸟群行为 for _ in range(100): # 计算每只鸟的三个力的总和 cohesion_force = np.mean(positions, axis=1) - positions separation_force = 1 / np.linalg.norm(positions[:, :, np.newaxis] - positions[:, np.newaxis, :], axis=1) alignment_force = np.mean(velocities, axis=1) - velocities # 根据力的总和更新鸟的速度 velocities += cohesion_factor * cohesion_force + separation_factor * separation_force + alignment_factor * alignment_force # 根据速度更新鸟的位置 positions += velocities # 限制速度不超过最大速度 velocities /= np.maximum(np.linalg.norm(velocities, axis=0), speed_limit) # 限制鸟的位置在模拟空间内 positions = np.clip(positions, 0, size) # 绘制鸟群的最终位置 plt.scatter(positions[0], positions[1]) plt.xlim(0, size) plt.ylim(0, size) plt.show() ``` 这个程序通过使用 NumPy 库来进行矩阵运算,使得计算效率更高。首先,我们初始化了鸟群的位置和速度,然后进行一系列的模拟步骤来更新每只鸟的位置和速度。在更新过程中,我们根据鸟与其他鸟的距离和速度之差来计算三个力,然后将这些力累加到鸟的速度上。最后,我们限制了鸟的速度不超过最大速度,并将鸟的位置限制在模拟空间内。最后,我们使用 matplotlib 库来绘制鸟群的最终位置。 希望这个程序对你有帮助!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值