动物集群运动模型
摘要
本文主要模拟了鱼群的集群运动、鱼群躲避捕食者追捕的运动情况以及鸟群觅食运动的模拟,以此研究动物个体间的信息传递机制,同时也是对群体智能的初步探索。
针对问题一,需要我们给出对鱼群集群运动的模型,并编写程序将运动模拟出来,对此我们建立了Boid模型,根据模型给出的准则以及算法,我们通过matlab编程,在忽略阻力等因素下分别模拟出在平面以及空间鱼群的运动,并得出密度必须大于一定值时,鱼群才能最终达到同步。鱼群的整个集群运动从刚开始的随机产生的各个个体的不均匀无规则分布到逐渐的聚拢成群再到最后的一致方向的前进。
针对问题二,我们在问题一的模型的基础上给出了鱼群躲避捕食者的模型,制定了鱼个体的适度逃离区域和加速逃离区域,分析捕食者与鱼个体的关系,给出进一步的模型,通过编写程序得到模拟的结果,得到了对鱼群躲避捕食者的运动的合理的动态模拟,并且给出了模型的改进方向。
针对问题三,我们更加倾向于研究鸟群的觅食行为,因此我们将问题改成鸟群的觅食模拟,将鸟群的觅食行为转化为求最优解的问题,这正好与问题中提到了有一部分个体掌握食物源位置信息相对应。针对问题,我们建立了粒子群优化模型,通过PSO算法,通过鸟群寻找食物的最短路径的最优解的问题的分析,我们利用优化算法来模拟了鸟群在山间的觅食行为,得到了鸟群可以绕过我们设定的障碍物(山峰)到达食物点。
关键字:动物集群运动 Boid模型 PSO算法 鸟群觅食
1
一、问题重述
在动物界,大量集结成群进行移动或者觅食的例子并不少见,这种现象在食草动物、鸟、鱼和昆虫中都存在。这些动物群在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。通过数学模型来模拟动物群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。
通过观察附件中给出的图片和视频资料,或者在网上搜索相关资料观察,思考动物集群运动的机理,建立数学模型刻画动物集群运动、躲避威胁等行为,例如,可以考虑以下问题的分析建模: 1. 建立数学模型模拟动物的集群运动。
2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。
3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位置信息,掌握迁徙路线信息),请建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。
建议与说明:
1.在上述问题的讨论中,如果能适时分析动物群中的信息传递机制无疑是更好的。
2.如果对问题2和问题3之外的其他集群运动行为更感兴趣,也可将这两个问题替换为你所感兴趣的问题来讨论。
3.建模过程中的数据资料可以在网上查询或者自行合理设定。若果感到在三维空间讨论问题太复杂,可以先在二维空间讨论,再推广至三维空间。
4.最好能对你所做的机理分析模型给出计算机仿真方法以便于实际情况对比评价。
二、模型假设
1.忽略障碍、阻力以及其它无关次要因素对于集群运动的影响 2.问题一鱼群中每个个体运动的速度都是恒定一样的 3.鱼群集群运动的模拟中不考虑障碍物的存在 4.忽略其它种群对本文所研究种群的影响 5.不考虑集群中个体的体积,都按粒子处理
三、符号说明
N 鱼群的总数 CiVi?? 集群中每个个体的位置矢量
集群中每个个体的速度矢量 V 集群中每个个体运动的速度
rr 排斥区域的半径
2
ro 一致区域的半径 ra 吸引区域的半径
? 惯性权重
m 粒子数 d 空间维数 Vmin 最小速度 Vmax 最大速度
???Xi 粒子i的位置矢量
????Xp 捕食者的位置矢量
?????????di(t?1) 个体i在t?1时刻的预期方向 c1、c2 学习因子(加速因子)
?1、?2 均匀分布在(0,1)之间的随机数 Xi(t)??xi1(t),xi2(t),...,xid(t)? 在第t次迭代时粒子i的位置表示 Vi(t)??vi1(t),vi2(t),...,vid(t)? 在第t次迭代时粒子i的速度表示 Pi(t)??pi1(t),pi2(t),...,pid(t)? 个体极值
Pg(t)??pg1(t),pg2(t),...pgd(t)? 全局极值
四、问题分析
本问题是一个动物集群运动的模型问题,动物的集群运动包括很多,其中有觅食、追尾、躲避捕食者等等运动,问题一需要我们考虑动物集群的运动模型,也就是鱼群的游弋、鸟群的飞翔等行为,是不需要考虑觅食、追尾等行为活动的,我们通过建立Boid模型进行鱼群集群运动的模拟。问题二需要我们给出鱼群躲避捕食者的运动模拟,要解决问题,那就需要我们在问题一模型的基础上给出鱼的逃逸模式,然后对逃逸运动进行模拟。问题三是需要我们模拟集群运动中存在领导者时的集群运动的模拟,可以运用和问题一一样的思路,但是我们对于鸟群的觅食行为更感兴趣,所以我们转而对鸟群觅食进行建模,我们选择PSO算法,通过模型求最优解的过程对鸟群觅食行为进行模拟,从而建立起了比较合适的模型。针对这些问题,我们主要的工作是首先建立合适的模型,通过我们建立的模型,根据模型的算法,我们可以编写程序得到对集群运动的模拟。
3
五、模型的建立与求解
5.1鱼群集群运动的模拟
5.1.1模型的建立
我们根据问题一的要求,通过查阅资料得出了Boid模型可以解决类似的问题,这里我们就选用Boid模型作为此文的模型。
Boid群模型包括三个简单的指导规则,它们描述了一个单一的“Boid”如何基于位置和邻近个体的速度进行分离、内聚和排序活动的。模型的三个规则(Reynolds聚结规则)如下:
(1) 群中心定位:试图与邻近的群个体保持接近; (2) 避免障碍:避免与邻近的群个体发生冲突; (3) 速度匹配:试图与邻近的群个体速度匹配;
设系统有N个个体组成,它们的位置和速度矢量分别为Ci、Vi,每个个体
???????????在三维空间中按照恒定的速度V运动,di(t?1)为个体i在t?1时刻的预期方向。在每一步t,每个个体可以感知到三个不重叠的区域中其他个体的位置和角度,
?????????这些信息用于计算di(t?1),这三个区域分别为:排斥区域,一致区域,吸引区域,也称为Three-circle模型,其模型的三个区域如图(图1)所示:
图1 Boid模型的三个区域示意图,zor为排斥区域,zoo为一致区域,zoa为吸引区域;3600??为视野盲区,?取值范围为[2000?3600]
个体的运动规则为:首先,每个个体尽量与排斥区域(以该个体为中心,以
rr为半径的球)中的其他个体保持最小距离,并记其中的个体数为nr,则个体i的预期方向按照下面的方式调整
4
?????????di(t?1)???nrj?i?????rij(t)rij(t),i?1,...,N,t?0
其中rij(t)?(Cj?Ci)。其次,如果nr?0,则个体i的预期方向受“一致区域”(以个体i位中心,处于rr和ro之间的球形区域,除去该个体后面的角度为3600??的盲区)及“吸引区域”(以个体i位中心,处于ro和ra之间的球形区域,除去该个体后面的角度为3600??的盲区)中的个体的影响,记相应区域中的邻居个数分
??????????????????别为no、na,则可定义do(t?1)、da(t?1)如下:
???????????????????novj(t)?????????narij(t)do(t?1)??;da(t?1)??
j?ivj(t)j?irij(t)????????????????????????????????????如果na?0,则di(t?1)?do(t?1);同样,如果no?0,则di(t?1)?da(t?1);如
?????????1???????????????????果两者都不为0,则定义di(t?1)??do(t?1)?da(t?1)??;如果经过上面的运算后2???????????????????????所得到的di(t?1)?0,或者在三个区域中都没有个体,则di(t?1)?vi(t)。设旋转??????????????速率为?,即每一时步个体所能转过的最大角度为?,如果vi(t)与di(t?1)之间的
?????????????????角度差小于?,则di(t?1)?vi(t?1),否则,个体i向期望的方向旋转角度?,这样就得到了个体下一步的运动方向。
5.1.2模型的求解
根据模型,我们利用matlab编程,得到二维空间(平面)和三维空间(立体)的鱼群运动的模拟。
5.1.2.1平面鱼群运动的模拟
程序见附录1。我们取了个体为100,个体的旋转速率为0.5,得到了运动的模拟动画。
下面我们截取了整个动态模拟过程中的3幅图。
5