您的当前位置:首页正文

动物集群运动行为模型-20

2020-08-20 来源:好走旅游网


集群动物运动的研究和模拟仿真

摘 要

在自然界里,我们经常能够看到某些动物的集群运动行为,比如鱼群的觅食、躲避危险,鸟群的迁徙等这些高度一致性的行为。这些群体当中的个体的行为都是相对比较简单的,但是每个个体只需要遵循某种规则后,整个群体就涌现出高度的群体智能行为。本文主要为了探讨其中的运动机理与规则建立了相应的模型。

对于模拟动物集群运动,我们先抛开具体的物种和运动形式,并把连续运动进行离散化,构造了某时刻群体的状态矩阵用来表示所有个体的位置和速度。

v1y2v2, yn1vn1ynvnn3通过建立个体的距离约束方程、速度约束方程、位置约束方程和状态转换条件进

y1x1x2S(t)xn1xn而求出任意时刻的群体状态矩阵。根据状态矩阵就可得到群体的运动规律。

鲨鱼捕食鱼群,是一个无领导者的模型。在模拟鲨鱼捕食一问中,经过对视频的分析,我们将问题归结为小鱼选择最佳的躲避速度(大小和方向),引用最优化思想建立目标函数

P(t1)D(t1)mincosvd(t1),vi(t1)(1)i

Pi(t)D(t)从而确定躲避速度。再根据鲨鱼和小鱼的初始状态以及速度确定了鲨鱼和鱼群的

运动规律。根据该规律进行Matlab编程模拟,我们模拟出了“鲨鱼被包围”的情形。

在群体中含有信息丰富者情况下,可以将信息丰富者看做群体的领导者,建立了leader-follower模型,根据条件:

,via,vwnvwa(1)via cosvwa,via QNQ确定了leader的运动,进而确定整个群体的运动。

最后我们通过编写相关的程序来仿真群体的运动,从而检验模型的正确性。 关键词:离散化 状态矩阵 最优化 leader-follower模型

vwat1vwtQNQi1vi

1.问题重述

在动物界,大量集结成群进行移动或者觅食的例子并不少见,这种现象在食草动物、鸟、鱼和昆虫中都存在。这些动物群在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。通过数学模型来模拟动物群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。

1. 建立数学模型模拟动物的集群运动。

2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。

3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位置信息,掌握迁徙路线信息),请建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。

2.模型假设

(1)假设每个个体的感知范围极限是相同的。 (2)部信息的强度与传播的距离成反比。 (3)在短时间内个体的运动是匀速直线的。

(4)每个个体接受到信息到做出相应的动作的时间是相等的。 (5)每个个体的最大移动速度是相等的。

(6)在时间不长t内黑鳍礁鲨鱼的速度基本上是不变的。

3.符号说明及意义

Pi(xi,yi,vi)——表示个体i,其中xi表示横坐标,yi表示纵坐标,vi表示速度

vk——表示个体i感知范围内个体k的速度

rminRL——表示个体之间能够容忍的最小距离

——表示个体能够感知的极限距离 ——表示x方向的位置变动因子 ——表示y方向的位置变动因子 ——表示运动速度最大偏差因子

xymax

vmax——表示个体的最大移动速度

vd——表示危险源的速度(比如黑鳍礁鲨鱼)

1——表示速度大小状态因子 2——表示速度方向状态因子

vwt——个体t的自主速度 vwn——表示核心群体下一步速度

——表示vwa与via的方向相近程度

4.问题分析及模型的建立

4.1模型一的建立 4.1.1问题分析

动物的集群运动会因为不同的物种、种群和环境而存在不同点,但是从本质上集群运动是有共同点的。不考虑具体的哪种动物和具体的集群运动,从整体上分析,动物的集群运动可以分为三种: (1)觅食运动

(2)躲避捕食运动

(3)随机运动(没有明确目的的集群运动)

群中的每个个体在综合外部信息和内部信息后自己决定如何进行反应动作。外部信息是让他们产生集群运动转变的因素,比如食物位置、捕食者出现和运动规律等;内部信息是群体中各个个体之间进行传递交流的信息,包含信息发出者的位置、运动状态、发出的声音、气味和特殊物质等。

在集群运动中,每个个体都遵循相同的动作反应规律。因为个体的感知范围有限,为了保持群体运动的整体性,个体的运动还要遵循下三个约束条件: (1)与邻近的个体之间保持必要的距离。距离太近影响个体的运动,距离太远导致个体容易脱离群体;

(2)感知范围内的个体运动速度具有一致性。 (3)感知范围内的个体位置具有中心一致性。

4.1.2集群运动的离散化处理

集群运动在时间和空间上是连续的。为了简化描述集群运动,从时间的角度把该运动进行离散化,每一时刻,该群都有一种状态,把状态按照时间的顺序排列就可以近似描述集群的运动。在每一时刻,群中的个体必然要满足上面的三个约束条件,所以我们也把上面两个条件成为状态条件,根据状态条件可以建立描述集群运动的状态方程。

我们首先只靠虑集群在二维平面的运动,在此我们定义了Pi(xi,yi,vi)这样一个变量来描述运动的个体,其中xi表示个体i的在世界坐标系中的横坐标,yi表示个体i在世界坐标系的纵坐标,vi表示个体i的运动的方向。进一步简化问题,我们将运动的个体投影到地面就可以把个体看作是点的运动,为此我们模拟地面上点的运动进而可以推测出个体的运动。

个体投影到地面的表示如下图:

现在讨论有n个个体的集群的运动情况,于是我们建立了一个由n个个体的t时刻状态组成的状态矩阵S(t);

x1x2S(t)xn1xn矩阵中vi表示i个体的速度 依据状态条件建立状态方程: 距离条件 rminy1y2yn1ynv1v2vn1vnn3

22dxixkyiyk1/22、3RL k1、m

mxkxk1(1)xim、2、3位置中心一致性  k1mykkyi1(1y)mm

速度一致性 vik1vkmm1 0max

其中rmin表示个体之间能够容忍的最小距离,RL表示个体能够感知的极限距离,m表示i个体感知范围内相邻个体的数量,vi表示i个体运动速度,vk表示个体k的运动速度,x表示x方向的位置变动因子,y表示y方向的位置变动因子,max表示运动速度最大偏差因子。

t+1时刻的状态矩阵与t时刻具有相同的形式,为此我们只需要知道i个体的速度变化就可以求解t+1时刻的状态矩阵。

位置变换表达式: 速度大小更新式:

Pi,t1(xi,yi)Pi,t(xi,yi)vit

vi(t1)vi(t)vi vi1(vmaxvi(t)) 1(0,1)

加速取正(+)

速度方向更新式:

i(t1)i(t)i i2逆时针改变方向取正(+)

2 2(0,1)

vmax表示个体的最大移动速度,上式中t是t时刻与t+1时刻的间隔时间,

vi表示个体i速度大小的变化值,i表示个体i速度方向的变化值,1表示

速度大小状态因子,2表示速度方向状态因子。

在随机运动过程的中,1、2都是(0,1)范围内的一个随机数;在觅食过程中个体的速度方向改变不大,主要是速度大小的改变,于是我们取10.6、

20.1;在躲避危险的过程中速度大小、方向均有较大的改变,1、2的取值满足使其到达最安全的地方。,

我们发现不管外界的环境如何,某一状态下集群总是一个整体,所以我们根据这个规律建立任意一状态的方程,并推导出了t状态和t+1状态之间的关系,依此就可以像滚雪球一样得到所有状态的矩阵,进而就可得到集群的运动情况。

模拟仿真结果如下(程序代码见附录程序一):

初始位置分布情况 10个步长后的分布情况

50个步长后的分布情况 100个步长后的分布情况

500个步长后的分布情况

4.2模型二的建立 4.2.1问题分析

关于鱼群躲避黑鳍礁鲨鱼,从视频中可以看出:在水表面,鲨鱼进入鱼群时,最先感觉到捕食者迫近的小鱼(靠外层鲨鱼前方)向两边分散游开,速度很快;距离鲨鱼稍远的鱼则反应一般,只是跟随旁边一侧的鱼游动,速度一般;鲨鱼两侧的鱼在向鲨鱼的后方游去,速度一般;鲨鱼身后的鱼已经重新聚群,鲨鱼身后

的空隙由前方游回来的鱼填充。看起来是鲨鱼在鱼群里游动,鱼群采取分散向后转移的方式躲避鲨鱼的捕食,鲨鱼好像被鱼群包围。如下图1:

图1 鲨鱼被包围示意

包围圈周围的鱼的运动是我们研究的主要内容。为了研究这个运动,我们需要的条件有:

(1)鲨鱼和鱼群中的小鱼耳的初始位置; (2)鲨鱼的运动包含速度大小和方向,;

(3)小鱼的速度变化规律,包含大小和方向,这可以帮助确定小鱼某时刻的位置;

(4)小鱼的感知和交流方式,这可以帮助我们确定小鱼如何根据捕食者的运动进行反应;

鲨鱼和鱼群运动之间的影响关系如下图2

图2 鲨鱼的运动和小鱼的运动之间的影响关系

说明:

(1)鲨鱼速度大小决定外部信息信号的强弱,而鲨鱼和小鱼的距离决定小鱼所接收到的信号的强度,小鱼根据接收到的信号强度决定躲避快慢; (2)鲨鱼的运动方向和鲨鱼与小鱼之间的位置关系共同决定了小鱼的躲避方向,即如“鲨鱼被包围示意图”中表示的小鱼向左或向右跑和前进的方向; (3)鲨鱼的位置由上一时刻的位置和速度决定,小鱼同理。

4.2.2模型建立

根据上述说明我们建立平面直角坐标系xoy来表示,

图3 平面坐标系中鲨鱼和小鱼个体的运动关系

问题最终归结为为小鱼找到一个合适的躲避速度,到达一个新的位置,使自己最为安全,满足以下两个条件(目标函数)即可:

躲避方向 mincosvd(t1),vi(t1) 下一时刻位置 maxPi(t1)D(t1)

这是双目标问题,为此我们采用加权系数化为单目标问题求解

mincosvd(t1),vi(t1)(1)Pi(t1)D(t1)

为权重系数

其中认为在短时间t内,vD(t1)vD(t) 在t时间之后

小鱼的位置 P(x1,y1)P(x1,y1)V1t 鲨鱼的位置 D(x,y)D(x,y)V0t 小鱼的速度变为V1,鲨鱼的速度变为V0'。

V、D'(x,y)、P'(x1,y1)的初状态状态进之后的一个t中鲨鱼和小鱼以V0、''1'''行运动,并且一直如此循环下去,直到鲨鱼离开鱼群,鱼群不再受到被捕食的威胁。

对于其中的一些参数取值的选取,在进行matlab模拟时可以适当选取,如果模拟结果比较符合实际情况则认为参数值的选取是合适的。

模拟仿真结果如下(程序代码见附录程序2)

图4 鲨鱼捕食模型的Matlab模拟结果

说明:我们模拟鲨鱼作匀速直线运动进行捕食(红色代表鲨鱼运动轨迹,每个点代表一个时刻的鲨鱼位置),并且刻画了六条小鱼的躲避轨迹(六条蓝色轨迹代表,起点为每条轨迹的点稀疏的一端)。点越密表示小鱼的速度越小,变化不大。从模拟结果图中我们可以看出鱼群的运动基本上符合视频中的真实运动特点:小鱼起初躲避速度很快,(图上表示为小鱼轨迹点稀疏),向鲨鱼前进方向的两侧躲避;之后慢慢减速;在运动到鲨鱼身后时,基本上就不在躲避运动(表现为小鱼运动轨迹末端点的分布密集)。所以我们认为模型的模拟效果是比较好的。

4.3模型三的建立和求解

在群体中包含信息丰富者时,模拟信息丰富个体对群体运动行为的影响。我们分析认为,若动物群体中有一部分个体是信息丰富者,那么这些个体就可以看作是整个群体的领导者。因为他们掌握了重要的信息(比如食物的位置信息),他们本身的行为就表现的很有方向性(目标明确)。而其他个体只能通过他们传递的信息知道有相关的信息,但是并不知道信息所反映的实际情况是什么,所以他们只会跟随这些信息丰富者的运动或者与自己相邻个体的运动而运动。在寻找食物或迁移的过程中整个群体是跟随信息丰富个体运动的,而且信息丰富个体都掌握着信息,所以他们本身的运动具有很高的一致性。在此我们将这些信息丰富个体看做一个整体,定义为核心群体,其他个体定义为跟随群体。问题三就可以简化成整个群体随核心群体的运动,于是我们建立一个leader-follower的模型,重点研究核心群体的运动方向。核心群体的运动方向是由两方面的影响决定的:一是自主运动方向,就是他们根据自己掌握的信息运动;二是被动运动方向,就是他们的运动还会受到跟随群体运动的影响。

假设群体的总量为N,核心群体中个体的数量为Q,他们中个体t的自主速度为vwt,跟随群体中个体的数量为N-Q,他们中个体i的速度为vi。由此我们建立以下关系:

Qvwat1vwtQ

NQviai1vi

NQvwnvwa(1)via

其中 cosvwa,via

式中vwa表示核心群体中的平均速度,via表示跟随群体的平均速度,vwn表示核心群体下一步速度,表示vwa与via的方向相近程度,=1表示vwa与via同向。

另外整个跟随群体是满足问题一中状态矩阵中的随机过程。

5.模型的改进与推广

(一)改进

鉴于问题的复杂性我们只考虑了群体在二维平面的运动情况,在此我们可以根据已经建立好的模型将其延伸到三维空间,这样更加符合实际情况。在考虑小鱼躲避鲨鱼时应该将危险信号强度与躲避速度的关系考虑进来。 (二)推广

通过对群体集群运动的研究,在过程方面,生物群体的同步、躲避危险的机制可以应用到分布式机器人集群、无人驾驶飞行器、卫星群的运动控制;在信息管理方面,可以从生物体如何形成有效决策的得到启示,为管理机制的改进和管理效率的提高提供新思想。

6.模型的评价

(一)、模型的优势: (1)应用离散化的概念,将集群的连续运动化为间隔时间很短的静止状态影像。 (2)用矩阵简单明了的描述了每一个静止的状态。

(3)只考虑两个状态之间的联系,不需要分析其中的转换过程。 (4)引用了最优化的概念有效的解决了躲避运动速度的确定。 (二)、模型的缺点:

(1)问题三中将整个群体划分为两类,分别作为整体研究简单,但是忽略了个体之间的差异。

(2)模型中某些参数的确定带有较强的主观性。

7.参考文献

[1]沈继红,施久玉等,《数学建模》,哈尔冰:哈尔冰工程大学出版社,1996

[2]郑家茂,《数学建模基础》,南京:东南大学出版社,1997

[3] 赵建,《鱼群集群行为的建模与仿真》,太原:太原科技大学出版社,2005

[4] 刘秉泉,《基于Vicsek模型的导弹集群建模与仿真研究》,电子信息与电气工

程学院,

[5] 张仲秋,周应琪等,《鱼群群体运动的数学模型》,上海:上海海洋大学海洋

学院,2011

[6] 江铭炎,袁东风等,《改进的人工鱼群算法》,济南:山东大学信息科学与工

程学院

8.附录

程序一:问题一的模拟仿真代码: format long Visual=10; N=100;

Gen_number=1000; a1=-10; b1=10; a2=-10; b2=10;

maxstep=0.3; dmin=1; dmax=3; k=0;

delta_max=pi*3/180;

%位置初始化

X1=rand(N,1)*(b1-a1)+a1; X2=rand(N,1)*(b2-a2)+a2; X1_next=X1; X2_next=X2; X=[X1 X2]; %方向初始化

alpha=rand(N,1)*2*pi;

while(kXX=[X(i,1),X(i,2)]; d_clofrd(i)=100; friend=[]; for j=1:N if(i==j)

continue end

XXX=[X(j,1),X(j,2)];

if(norm(XX-XXX)if(norm(XX-XXX)d_clofrd(i)=norm(XX-XXX); end end

mean_alpha(i)=mean(alpha(friend)); if (m(i)==0) CX1(i)=0; CX2(i)=0; else

CX1(i)=mean(X1(friend)); CX2(i)=mean(X2(friend));

d_center(i)=sqrt((CX1(i)-X1(i)).^2+(CX1(i)-X1(i)).^2); mean_alpha(i)=mean(alpha(friend)); end end

%行为 for i=1:N if(m(i)==0)

alpha_next(i)=rand*2*pi; step=maxstep;

X1_next(i)=step*sin(alpha_next(i))+X1(i); X2_next(i)=step*cos(alpha_next(i))+X2(i); end

if(d_clofrd(i)alpha_next(i)=rand*2*pi;

step=rand*(maxstep-dmin)+dmin;

X1_next(i)=step*sin(alpha_next(i))+X1(i); X2_next(i)=step*cos(alpha_next(i))+X2(i); else

alpha_next(i)=atan((X1(i)-X1(clofrd(i)))/(X2(i)-X2(clofrd(i))))+rand*2*delta_max-delta_max;

if(maxstep<(-dmax+d_clofrd(i))) step=maxstep; else

step=rand*(maxstep+dmax-d_clofrd(i))-dmax+d_clofrd(i); end

X1_next(i)=step*sin(alpha_next(i))+X1(i); X2_next(i)=step*cos(alpha_next(i))+X2(i); end end

if(d_clofrd(i)>dmax)

alpha_next(i)=atan((X1(i)-X1(clofrd(i)))/(X2(i)-X2(clofrd(i))))+rand*2*delta_max-delta_max;

if(maxstep<(-dmax+d_clofrd(i))) step=maxstep; else

step=rand*(maxstep+dmax-d_clofrd(i))-dmax+d_clofrd(i); end

X1_next(i)=-step*sin(alpha_next(i))+X1(i); X2_next(i)=-step*cos(alpha_next(i))+X2(i); end

if((d_clofrd(i)>dmin)&&(d_clofrd(i)alpha_next(i)=mean_alpha(i)+rand*2*delta_max-delta_max; step=rand*maxstep;

X1_next(i)=step*sin(alpha_next(i))+X1(i); X2_next(i)=step*cos(alpha_next(i))+X2(i); end

if((X1_next(i)>b1)||(X1_next(i)==b1)) X1_next(i)=b1-(X1_next(i)-b1);

elseif((X1_next(i)if((X2_next(i)>b2)||(X2_next(i)==b2)) X2_next(i)=b2-(X2_next(i)-b2);

elseif((X2_next(i)%向中心靠拢 for i=1:N

c_alpha=atan((X1_next(i)-CX1(i)/(X2_next(i)-CX2(i))))+rand*2*delta_max-delta_max;

if (d_center(i)>maxstep) step=maxstep; else

step=d_center(i); end

X1_next(i)=-step*sin(c_alpha)+X1_next(i); X2_next(i)=-step*cos(c_alpha)+X2_next(i); end

X1=X1_next; X2=X2_next;

alpha=alpha_next; k=k+1;%进入下一代 end

plot(X1,X2,'.');

问题二的模拟仿真代码:

A=[7,1; 7,2 6,1 6,2 5,1

5,2];%%在鱼群中取6个鱼作为研究对象 for i=1:6 P=0;

P=[A(i,1),A(i,2)] %%鱼的位置标示 D=[0,0]; %%鲨鱼的位置标示 v0=[1,0]; %%鲨鱼的速度 k=1;t=0.1 for j=1:100

if norm(P-D)<5

plot(P(1),P(2),'.b',D(1),D(2),'^r'),hold on;axis equal; n=(P-D);

c=complex(n(1),n(2));

v1=[D(2)-P(2),P(1)-D(1)]*k*(norm(v0))^2*(cos(angle(c))+1.1)norm(P-D);

%%小鱼的 P=P+v1*t; D=D+v0*t; else

D=D+v0*t;

end end end

因篇幅问题不能全部显示,请点此查看更多更全内容