资源描述
动物集群运动行为模型
动物集群运动行为模型
摘要
动物集群运动行为近几年受到国内外学者的广泛关注,研究这些集群运动不仅对人们的工作和生活具有重要的现实意义,对了解自然界和生物系统具有深远的科学意义。
问题一,通过题目中给出的图片和视频资料,通过互联网查资料得到动物集群运动的机理。针对这些机理,我们引用了传统的Vicsek模型对鱼群的集群运动进行数学表述,并在上述规则下通过vc++程序实现了对模型的仿真,并调整噪音和密度参数,详细说明了上述因素对鱼群运动行为的影响。
问题二,为了刻画鱼群躲避黑鳍礁鲨鱼的运动行为,我们对传统的The Selfish Gene模型进行了改进,进一步考虑了猎物极限速度的大小,并与传统模型中考虑的距离因素进行加权处理,得到优化的有捕食者情况下的运动行为模型。
问题三,我们借助模型一求解的鱼群运动规律,在此基础上进行了约束限制,建立了鱼群避障模型。
关键词:Vicsek模型 The Selfish Gene模型 避障模型
目录
第一部分 问题重述…………………………………………………………(3)
第二部分 问题分析…………………………………………………………(3)
第三部分 模型假设及说明…………………………………………………(4)
第四部分 定义与符号说明…………………………………………………(4)
第五部分 模型的建立与求解………………………………………………(5)
1.问题1的模型………………………………………………………………
Vicssek模型……………………………………………………………(5)
……………………………………………………………………………….
2. 问题2的模型………………………………………………………………
优化的The Selfish Gene模型………………………………………(10)
……………………………………………………………………………….
3. 问题3的模型………………………………………………………………
避障模型………………………………………………………(12)
……………………………………………………………………………….
第六部分 对模型的评价……………………………………………………(13)
第七部分 参考文献…………………………………………………………(13)
第八部分 附录………………………………………………………………(14)
动物集群运动行为模型
一、 问题重述
在动物界,大量集结成群进行移动或者觅食的例子并不少见,这种现象在食草动物、鸟、鱼和昆虫中在。这些动物群在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。通过数学模型来模拟动物群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。
请观察下面附件中给出的图片和视频资料,或者在网上搜索相关资料观察,思考动物集群运动的机理,建立数学模型刻画动物集群运动、躲避威胁等行为,例如,可以考虑以下问题的分析建模:
1. 建立数学模型模拟动物的集群运动。
2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。
3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位置信息,掌握迁徙路线信息),请建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。
二、 问题分析
本文我们建立了鱼群的集体运动行为模型,讨论了群体一般情况下、有捕食者的情况下以及有领导者的情况下的运动行为。
首先,根据给出的图片和视频资料和网上搜索相关资料得到鱼群集群运动的机理,并把这些机理用数学语言表述出来,我们采用了Vicsek模型及其算法,模拟出鱼群在不同噪音,不同密度情况下的运动状态,并对运动状态进行了一定的分析,总结出鱼群运动的规律。
其次,为了刻画鱼群躲避黑鳍礁鲨鱼的运动行为,我们对传统的The Selfish Gene模型进行了改进,进一步考虑了猎物极限速度的大小,并与传统模型中考虑的距离因素进行加权处理,得到优化的有捕食者情况下的运动行为模型。最后,我们借助模型一求解的鱼群运动规律,在此基础上进行了约束限制,建立了鱼群避障模型。
三、 模型假设及说明
1.模型表现个体数为 N 的一群可视为质点的个体在 L*L 的二维周期边界 条件的平面上运动的情况。
2.假设在每一时步中个体的速度大小保持不变,方向取其周围个体的平均方向, 即以该个体为中心在半径为 r 的圆内所有个体方向的平均。
3.假设每个个体的初始位置在该平面区域内随机分布,初始运动方向在[ -π , π)间随机分布。
4、假定系统中只有少数个体带有信息(知道飞行路线或目的地等),其他个体并 不知道谁是领导者。
5.多个体的群体运动特征
(1) 独立个体间有相互作用:自驱动(self-propelled)
(2) 有限的感知力,有限的知识,有限的信息。
(3)自组织(self-organization)的复杂集体行为:同步(consensus )结构性(pattern)、集体智慧。
(4)不一定有领导者(Leader)
也许存在外界条件驱动:天敌攻击、食物驱动、目的地等
四、 定义与符号说明
1、 最优攻击目标:捕食者花费最少量的体力和时间可捕获的猎物,不仅取决于 猎物与捕食者之间当前距离的远近;更应取决于该猎物极限速度的大小。
2、 为个体在t时刻的位置
3、 为个体在t时刻的速度
4、 为个体在t时刻的速度方向
5、 代表噪音,取值为的随机数,η为可调常数
6、 为以个体i 为圆心,视野半径 r 内所有个体(包含个体i 自 身)的平均速度方向
7、 为第i个猎物的总的量化值
8、 为从捕食者到第i个猎物的距离
9、 为第i个猎物的极限速度
10、 , 分别为距离与极限速度的权重
11、 为捕食者是否被发现的标志,未被发现时为0,被发现后为1
12、 为逃避捕食者的力, 为结合的力
五、 模型的建立与求解
5.1问题一的求解(Vicsek模型)
5.1.1模型的建立
位置变换关系:
速度方向更新规则:
平均速度方向:
同时,鱼群的运动也需要满足以下三个规则:
1) 聚集,即尽量与邻居内个体靠的近一些,以避免孤立;
2) 排斥,即避免同周围个体发生碰撞;
3) 速度匹配,即努力与周围的个体保持速度上的同步。
5.1.2模型的仿真模拟
不同噪音和密度下个体速度和位置的示意图
图一
图一表示取个体数 N = 300。a.t = 0, L = 7, η= 2.0,个体随机分布在二维平面上。
图二
图二表示密度低噪音情况,这里参数取为 L = 25, η= 0.1,系统经过一段时间演化稳定后的状态,出现了沿任意方向前进的簇团。
图三
图三高密度强噪音情况,这里参数取为L = 7, η= 2.0,经过一段时间演化稳定后个体之间具有某种关联性地随机运动。
图四
图四L = 5, η= 0.1高密度低噪音的情况,在这种情况下个体经过演化后出现了有趣的结果,它们沿相同的方向前进,即同步现象。
模拟结果:在高密度低噪音的情况下,个体经过有限的运动时间(收敛时间)后,会最终达到同步,即运动方向达到一致。
为了表征最后所有个体的同步情况,我们进一步引入了序参量:
显然,0≤≤1。 取值越大表示个体运动方向的一致性越好,当 = 1时,所有个体运动方向都一致。
5.1.3模型因素的进一步分析
(a)密度相同,不同规格大小的平面上的收敛情况(从上到下符号对应的参数取值分别为 N = 40, L= 3.1, N = 100, L= 5,N = 400, L= 10, N = 4000, L= 31.6, N = 10000, L= 50, ρ = LN2)由模拟结果我们可以看出随着噪音的增大有序度在减小,即只有在低噪音情况下系统才可能最终达到同步状态;相同密度不同规格下的收敛情况相类似。
(b)噪音一定的情况下,(这里,方格边长取值为 L = 20)有序度随密度的增加而增大,即只有在密度大于一定范围时系统才可能趋于同步。
由上面的模拟结果我们可以看到当密度一定,随着噪音的增大,序参量在减小,存在一个临界噪音值,用 ηc 表示,使得序参量为 0;当噪音固定的时候,随着个体密度的减小,序参量也减小,存在一个临界密度 ρc,使得序参量为0。即存在类似于平衡系统中的临界点,并且随着系统尺寸的增大这种现象就会越明显。L→∞ 时噪音和密度的临界值分别为 ,,则可写成如下形式:
其中,β,δ为临界指数。对于L有限的情况,噪音临界值ηc 和密度临界值ρc都是依赖于L的,分别记为ηc(L),ρc(L),对上式两边分别取对数并由图 1.3可得如下图所示的关系,由直线的斜率可得β值,直线的截距可得噪音临界值ηc和密度临界值 ρc。
上图分别是 l n V a~l n( [ηc(L)/η]/ηc( L))和lnva ~ ln([ρ-ρc(L)]/ρc( L))之间的关系。其中,参数取值为(a) ρ = 0.4,(b) L = 20, η= 2.0。由图中斜率可算出文中参数情况下的 β ,δ 值,分别为: β = 0.45 ± 0.07, δ = 0.35 ± 0.06。
5.2问题二的求解(优化The Selfish Gene模型)
5.2.1模型的建立
以黑鳍礁鲨与鱼群为例,对黑鳍礁鲨鱼来说,应考虑选择哪条鱼作为猎捕对象,即确定最佳捕食目标。而对鱼群则相反,应该考虑如何逃避,不让自己成为那个牺牲品。在根据Richard Dawkins提出的The Selfish Gene所建的模型中[8]:捕食者仅依据距离的远近来判断最佳捕食目标,而猎物群个体执行的是拼命往群体中心跑以减小自身的危险区域,该模型有加以改进的必要。为此,本文提出最优攻击目标的概念。定义最优攻击目标为捕食者花费最少量的体力和时间可捕获的猎物,不仅取决于猎物与捕食者之间当前距离的远近;更应取决于该猎物极限速度的大小。在现实中,猎物的极限速度是由老弱病幼、饥饿、疲劳等诸多因素决定的。显然,对捕食者而言,这两个指标均应是越小越好。当两者的加权和为最小时,就是合理的最优攻击目标。量化计算公式如下:
(1)
v2
v1
r2
r1
图2 确定最优攻击目标的相关参数示意,三角形为猎物,矩形为捕食者
为使模拟更逼真,还应考虑到现实中捕食者往往采取隐蔽的手段悄悄潜近猎物,直至足够近时,才突然发起进攻,以增大捕食成功率。而猎物中无论哪一个发现有威胁逼近时,均会以各种特有的方式向同伴示警,比如,鱼以高高跳跃来示警。因此,在捕食者被发现前,猎物群的运动相对静止或很慢,上式中的第2项不应对捕食者确定攻击目标起作用。因为猎物的极限速度在模拟中是用其即时速度来估计的,这也是合理的,一般说来猎物在受到捕食威胁时,都会以最快的速度逃离险境的。当捕食者被猎物发现时,显然存在着两种情况,一是捕食者认为距离已足够近而主动攻击,可设置一个下限阈值来表述;二是因捕食者隐蔽的不够好而被某些机警的猎物提前发现,这时对捕食者来说,要么立即出击,要么只得放弃,可再为距离设置一个上限阈值。上下阈值的大小均与捕食者的极限速度有关。于是可将公式改写为
(2)
其中,flag为捕食者是否被发现的标志,未被发现时为0,被发现后为1,vi׳为第i个猎物的即时速度。另设标志位sign指示捕食者当前所处状态,隐蔽潜近时为0,攻击时为1。当flag = 0时不断检查,
(3)
其中,V为捕食者的极限速度,c1为系数,R1为距离下限阈值。如(3)式成立,则主动攻击,sign改为1;当flag从0变1时,如捕食者还未主动攻击,即sign=0,则检查
(4)
其中,c2为系数, R2为距离上限阈值。如果(4)式成立,选择放弃,否则立即出击,sign改为1。显然有c2>c1和R2>R1成立。
对于猎物则应选择向远离捕食者的方向跑,同时注意不脱离大群体,即
(5)
其中,k1,k2为系数,且k1>k2,Fevasion为逃避捕食者的力,Fcohesion为结合的力。
关于捕食结束的时机选择,或是随着捕食成功而结束,或是当捕食过程超过某一设定的时间阈值t后,捕食者最终选择放弃。
5.3 问题三的求解(避障模型)
5.3.1模型的建立
假设障碍物为半径为的圆形,则鱼群在距离障碍物圆心r(r>)时就开始偏转,称到r的区域为影响区域。并且假设在R>r时障碍物对鱼的运动影响为零。
则继续引用第一问模型,再添加约束条件可得:
其中,表示在t时刻由于要躲避障碍物而使鱼产生的沿鱼和障碍物连线方向的速度的变化。表示t时刻鱼真正的总速度。
六、 对模型的评价
6.1 模型的优点
1.模型一引用了Vicsek模型,形式简单易懂,在二维平面较好的表现了集群的运动行为。
2.模型二充分考虑到捕食者和被捕食者的优化情况,将传统的The Selfish Gene模型考虑的距离因素和极限速度结合起来进行一定的加权处理,更好的表现了有捕食者情况下的集群运动行为。
3、模型三沿用问题一的模型,加上一定的约束条件,总体来说简单易懂。再引入约束条件时,类比万有引力定律得出群体与障碍物之间的排斥模型,具有一定的现实意义。
6.2 模型的缺点
1. 模型一并没考虑到收敛时间对集群运动行为的影响。
2. 模型二只是有捕食者的集群运动进行了一定的定量分析,并没有对仿真过程进行模拟。
3. 模型三也只是对行为进行定量描述,由于时间原因没有进行编程仿真模拟。
6.3模型的改进
1. 对于模型一可以考虑收敛时间及鱼群的视角进一步优化模型。
2. 对于模型二和模型三可以根据定量描述编程实现仿真模拟。
参考文献:
[1] Vicsek, T., Czirók, A., Ben-Jacob, E. et al.(1995) Novel type of phase transition in a system of self-driven particles. Phys. Rev. Lett., 75: 1226-1229
[2] 基于 Vicsek 模型的自驱动集群动 田宝美 [硕士学位论文] 中国科学技术大学 二零零九年五月
[3] 一种提高Vicsek模型收敛效率的新方法 蔡云泽、高建喜 200240 上海交通大学
[4] Vicsek模型的连通与同步 刘志新、郭雷 中国科学院数学与系统科学研究院 北京 100080
[5] 敌对群体行为动画的攻击模型建立 肖 华 、张文俊 上海大学影视艺术与技术学院, 上海 200072
七、 附录
a#include<iostream>
#include<time.h>
using namespace std;
#define NETSIZE 100
#define DIM 10
#define POPSIZE 100
#define VISUAL 10
double cp[14][2]={16.47,96.10,16.47,94.44,20.09,92.54,22.39,93.37,25.23,
97.24,22.00,96.05,20.47,97.02,17.20,96.29,16.30,97.38,14.05,98.12,16.53,97.38,21.52,95.59,19.41,97.13,20.09,92.55};
double Path[NETSIZE][NETSIZE];
void InitPath()
{
for(int i=0;i<NETSIZE;i++)
for(int j=0;j<NETSIZE;j++)
Path[i][j]=(cp[i][0]-cp[j][0])*(cp[i][0]-cp[j][0])+(cp[i][1]-cp[j][1])*(cp[i][1]-cp[j][1]);
}
class Artificial_fish
{
public:
Artificial_fish();
//float prey();
void updateneiborflag(Artificial_fish *Pointer);
// float follow();
// float swarm();
void evaluate();
void ShuiJi();
void display();
void display1();
int fish[DIM];
bool neiborflag[POPSIZE];
double fitness;
};
Artificial_fish::Artificial_fish()
{
this->ShuiJi();
for(int flag=0;flag<POPSIZE;flag++)
neiborflag[flag]=false;
}
void Artificial_fish::ShuiJi()
{
int i,num;
bool *tag=new bool[DIM];
for(i=0;i<DIM;i++)
tag[i]=false;
while(--i>=0)
{
do{
num=rand()%DIM;
}while(tag[num]);
fish[i]=num;
tag[num]=true;
}
delete []tag;
}
void Artificial_fish::display()
{
for(int i=0;i<DIM;i++)
{
cout<<fish[i]<<" ";
}
cout<<endl;
cout<<"fitness="<<fitness;
cout<<endl;
}
void Artificial_fish::display1()
{
for(int j=0;j<POPSIZE-1;j++)
{
cout<<neiborflag[j];
}
cout<<endl;
}//你的程序这里少了一个},仔细看下。
void Artificial_fish::updateneiborflag(Artificial_fish * Pointer)
{
for(int flag=0;flag<POPSIZE;flag++)
neiborflag[flag]=false;
for(int n=0;n<POPSIZE;n++)
{
int distance=0;
for(int i=0;i<NETSIZE-1;i++)
{
if(this->fish[i]!=(Pointer+n)->fish[i])
distance++;
}
if(distance<=VISUAL&&distance!=0)
{
neiborflag[n]=true;
}
}
}
void Artificial_fish::evaluate()//i条鱼状态变量,edge是边长度矩阵,返回一个回路的真实长度
{
fitness=0;
for(int m=0;m<DIM-1;m++)
fitness+=Path[this->fish[m]][this->fish[m+1]];
fitness+=Path[this->fish[0]][this->fish[DIM-1]];
}
void main()
{
srand((unsigned)time(NULL)); //初始化鱼群随机产生的
InitPath();
Artificial_fish a[POPSIZE];
int i;
for(i=0;i<POPSIZE;i++)
{
a[i].evaluate();
cout<<"The "<<i<<"th fish:";
(a+i)->display();
}
for(i=0;i<POPSIZE;i++)
{
(a+i)->updateneiborflag(a);
(a+i)->display1();
}
}
18
展开阅读全文