鱼群行为的建模与仿真_第1页
鱼群行为的建模与仿真_第2页
鱼群行为的建模与仿真_第3页
鱼群行为的建模与仿真_第4页
鱼群行为的建模与仿真_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

鱼群行为的建模与仿真

摘要

本文主要对人工鱼的集群行为,对天敌的有效躲避,和在集群中部分个体获

得食物信息的情况下,整个鱼类集群的运动行为进行了研究。并利用MATLAB

工具进行了模拟仿真。

针对问题一,我们对鱼类的集群运动主要提出了聚集、和邻居速度匹配、避

免碰撞三个原则。基于这三个原则建立了鱼类单人个体的自治模型,每个个体通

过相互作用,使集群形成。本文对三个原则的具体实现进行了分析和假设。得到

了计算机模拟仿真下的鱼类集群图形。

针对问题二,在模型一的基础上,我们增加了鱼群有效逃避天敌的规则。并

利用MATLAB进行在天敌存在的情况下,鱼类集群行为的运动特征,并且得出

了较好的仿真结果。

针对问题三,我们建立了鱼群觅食过程中的信息交流机制,得出了在部分人

工鱼知悉食物信息的情况下,整个鱼群的运动状态的仿真结果。

关键词:集群运动模拟仿真个体自治

一、问题的提出

在动物界,大量集结成群进行移动或者觅食的例子并不少见,这种现象在食草

动物、鸟、鱼和昆虫中都存在。这些动物群在运动过程中具有很明显的特征:群中

的个体聚集性很强,运动方向、速度具有一致性。通过数学模型来模拟动物群的集

群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。

根据相关资料,建立数学模型刻画动物集群运动、躲避威胁等行为,解决如

下问题:

问题一:建立数学模型模拟动物的集群运动。

问题二:建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。

问题三:假定动物群中有一部分个体是信息丰富者仪口掌握食物源位置信息,

掌握迁徙路线信息),请建模分析它们对于群运动行为的影响,解释群运动方向

决策如何达成。

二、基本假设

1、假设除视觉外其他感官在第一问中的影响忽略,如嗅觉,听觉;

2、假设每条鱼体型、感知能力相同;

3、假设鱼群在集群运动中没有死亡;

4、假设鱼的反应速度很快,改变速度所需时间非常短;

5、假设鱼遇到边界,以反射的方向反弹。

三、定义符号说明

符号说明

(X,y)二维体系中人工鱼的初始坐标

V人工鱼的速度

二维体系中人工鱼速度方向与横轴的夹角

Q人工鱼聚集的中心坐标

n在感知范围内邻居的个数

(X,y,z)三维体系中人工鱼的初始坐标

(a,P,y)二维体系中人工鱼游动的方向

E人工鱼的能量状态

£人工鱼的饥饿系数

四、问题的分析及模型的建立、求解

4.1对于问题一

4.1.1问题的分析

关于集群行为的研究,大致可以分为三个阶段:第一阶段是生物学家做了大

量研究,发现了许冬生物群体特有的动态行为;笫二阶段是实验物理学家和计算

机专家做了许多实验和仿真,用模拟仿生的方法证明这种生物群体现象可以由个

体的简单行为规律获得;第三阶段就是利用数学对群集行为进行严格建模及分

析。

动物的群体行为是相当于个体行为而言的。群体行为决定着个体行为的方

向,个体行为是群体行为的体现。群体是由个体构成的,因止匕,群体行为离小升

个体行为但群体行为并不是个体行为的简单相加。所以我们在研究鱼群集体行为

的过程中,首先对群体中单个鱼的行为做出研究,然后再从内部影响和外部作用

两方面入手,分析鱼群的群集行为。

对群集行为的研究主要有三种方法。第一种是欧拉法,在欧拉法中,一个群

体的模型中的每个个体成员不作为单个实体进行研究,而是通过密度概念将整个

群体作为一个连续集描述,欧拉法有一个明显的缺点就是忽略了个体的特性。第

二种是拉格朗日法,拉格朗日法基本的描述就是每个个体各自的运动方程。第三

类方法就是基于仿真的建模方法,基于仿真的群集模型无需建立像描述群体分布

的费克方程或描述各种吸引力/排斥力作用的牛顿运动方程,而是通过群体中的

个体建立模拟实际生物个体动态行为的行为规则来研究群集行为。

4.L2基于个体自治的鱼类集群模型

我们所进行的鱼群集群行为的仿真模型由三部分构成:

(1)环境。

(2)个体。

(3)行为规则。

环境是个体生存的空间,个体在环境中活动,利用环境中的资源来进行生存。

个体的综合构成了研究的群体对象。个体的演化过程由其行为规则控制,行为规

则则是决定了个体与个体之间、个体与环境之间相互作用的方式。任意时刻个体

在环境中都有一个确定的位置并且由其所占据的方位来确定。

(一)环境的描述

首先对一维的鱼群世界进行仿真,环境应为一个一维的有限平面区域,使用

反射型边界,当鱼游到边界以后按照镜子反射的方式反弹回来。我们可以把环境

描述成为一个宽为width,长为length的二维世界,如下图

X

length

(0.0)I——r

width下一寸刻,个体达动到(打.,)

图1:个体及其所处环境

因为计算机仅仅能处理离散的信息,所以环境也是一个离散的世界。我们用

计算机屏幕上一系列运动的点代替鱼个体,给它们设置坐标、速度等参数,就可

以把现实中的鱼映射到虚拟环境中来。所有个体在该环境中游动。描述个体的位

置和方向如下:

v=v-cosO,v=v-sin0(])

xy

其中e为速度方向和横轴方向的夹角。

x'=x+\vdby'=y+\vdt(2)

xy

其中,(XJ)为鱼的初始坐标位置,(x'P)为一段时间后,鱼的坐标位置。

(二)个体描述

对个体鱼的建模是仿真的核心与关键。把每条鱼看成一个人能够自主决策的

Agent,他们会根据自己的观察来感知周围的环境,并按照一定的规则决策°鱼

类个体之间的交互是由其视觉范围的大小决定的。个体的视觉范围是半径为r角

度为300度的一个扇形。

主体之间的交互作用是局部的,只能发生在所定义的邻域内。个体具有以下

属性:

(1)位置:个体位置由一组坐标(X,y)表不;

(2)感知范围:个体所能感知的范围。个体的感知范围取决于所定义邻域

半径的大小,感知范围越大,表明该个体与环境和其他个体的作用越强。

(3)碰撞距离:个体之间的最短距离。当个体之间的距离小于该值时,个

体将朝着远离的方向游动。

(4)初速度:仿真开始时,赋予每个个体的速度值,大小相等,方向相同。

(5)最大速度:鱼类在游动时所能达到的极限速度。

(6)加速度:个体受到外界干扰时,对个体行为的改变,表现为的速度的

改变。

(7)反弹速度:个体到边界时反弹回来的速度。

(三)规则描述

人工鱼的基本行为主要包括:(1)避开障碍物。(2)游向目标。(3)追

逐目标。(4)离开。(5)闲逛。(6)逃逸。(7)集群。

个体的行为规则主要表现为群体游动时的游动规则,游动规则主要包括:

[1]聚集规则(尽量靠近邻居)

0速度匹配(尽量与邻居的运动方向一致)

⑶避免碰撞(尽量避免与群体内部和群体外部的障碍发生碰撞)

在这里我们定义邻居为如果两个个体之间的距离小于某个给定的值r,则它们

互为邻居。

每条人工鱼下一刻游动的方向都要受这三个因素和当前鱼的游动方向的影

响,将这四个方向的平均作为人工鱼下一刻游动的方向如下图。

此刻人工鱼的游动方向

下一刻人工鱼的游动方向

碰撞方向

图3:人工鱼下一刻的游动方向

然而四个因素对鱼群的影响力的大小不同,根据它们对人工鱼下一刻运动方

向影响的大小进行赋权,则人工鱼下一刻的运动方向(与二维区域横轴的夹角)

9=X0+X0+Z0+Z0(3)

/+1/1/22/33/44/

九+九+入+九=1(4)

F面分别对四条游动准则分别进行描述:

(1)聚集性。

每个个体都有向邻居中心靠拢的特性,邻居中心为感知范围内所有个体所在

位置的平均值。

口=且丘〃)

n

当前状态下的人工鱼相对中心位置的方向为

G-=arctan2_2-(6)

x-x

其中,0=氏了)为鱼群靠拢的中心,■),)为人工鱼当前所在位置。

(2)速度匹配

人工鱼要与邻域内的鱼保持游动时速度大小和方向•致,速度和方向为邻域

内的均值,则

u=曳(7)

n

Ex~x

arctan-1

e=(8)

2n

(x,),)为邻域内第i条鱼的位置,u为邻域内第i条鱼的速度。

iii

(3)避免碰撞

为了避免鱼群之间的碰撞。在人工鱼进入危险距离后,若即将与一条鱼碰撞,

设为/,那么人工鱼就以与《运动的方向垂直的方向进行规避。若是即将与两

条鱼碰撞,分别设为则人工鱼就以与(运动的合成方向相垂直的方

向进行规避。当有"条时,同样以与〃条鱼运动合成方向的垂直方向进行规避。

如下图:

在三维状态下,我们采取相同的准则,进行模拟仿真。环境应为一块有限的

三维区域,我们选定(x,y,z)作为人工鱼的位置,用它游动方向和x轴,y轴和z

轴的夹角(a,)作为人工鱼游动的方向。聚集性的方向为人工鱼和鱼群中心的

方向向量。速度匹配的方向为邻居所有鱼的夹角(a,p,y)的均值。避免碰撞仍然

采用合成的方法。

4.1.3模型的求解

通过MATLAB仿真模拟,得到在二维条件下,初始状态的鱼群,如下图:

1000

800

••s••・

600••.•

400•••

・••*•

200".•'

o••e*<•:

••

-200,°*

*••

-400•,••

一•••

-600*••.

-800*••••••,

-1000::c:c::::

-1000-800-600-400-20002004006008001000

图5:鱼群初始状态

在模型一的规则下,鱼群的聚群行为

图6:二维鱼群集群

应用二维的规则,同样可以得到在三维状态下的模拟成果

图7:鱼群三维初始状态

三维集群之后的状态,如下图

图8:三维鱼群的集群

4.2对于问题二

4.2.1问题的分析

在问题一的分析和模型的建立求解过程中,我们并没有考虑人工鱼群在食物

链中受到天敌威胁的情况。鱼类在海洋中有效的躲避天敌也是鱼类运动中的一项

规则。所以我们在第一问的基础之上建立鱼类的躲避规则,重新仿真鱼类集群运

动。

4.2.2模型的建立

在游动规则的基础上加入躲避天敌这项规则,进一步完善模型。人工鱼Y一

刻的运动状态和方向也要受到天敌的影响。

14]躲避天敌

人工鱼在遭遇黑鳍礁鲨鱼时,迅速以与相对黑鳍礁鲨鱼相反的方向逃离。

乂一x

a=arctan------(9)

3J

其中,氏3为人工鱼所在的位置,(彳J;)为天敌所在的位置,为人工鱼

遭遇天敌时逃离的方向与横轴的夹角。

在三维的状态中,人工鱼相对黑鳍礁鲨鱼的向量,之一力。求

I1I

出。和入•轴,j轴,宅轴的夹角(a,B,y),从而确定人工鱼的逃离方向。

I11

4.2.3模型的求解

利用MATLAB编程模拟仿真在二维状态下人工鱼在黑鳍礁鲨鱼进入的初

始状态下的运动情况,如下图:

1000

-600_.•••••-

・・••♦*•

-800I.-

.10001r*ff1r1r-

-1000-800-600-400-20002004006008001000

图9:黑鳍礁鲨鱼进入的初始状态

(注:•表示人工鱼,。表示黑鳍礁鲨鱼)

黑鳍礁鲨鱼游动T时刻,人工鱼对它的躲避行为,如下图:

1000

800

600

400

200

0

-200

-400

-600

-800

-1000

-1000-800-600-400-20002004006008001000

图10:鱼群对黑鳍礁鲨鱼的躲避行为

(汪:・表小人工鱼,。表小黑鳍礁鲨鱼)

利用MATLAB编程模拟仿真在三维状态下人工鱼在黑鳍礁鲨鱼进入的初始

状态下的运动情况,如下图:

图11:加入黑鳍礁鲨鱼的初始状态

(注:•表示人工鱼,。表示黑鳍礁鲨鱼)

黑鳍礁鲨鱼游动T时刻,人工鱼对它的躲避行为,如下图:

图12:鱼群对黑鳍礁鲨鱼的躲避行为

(注:•表示人工鱼,。表示黑鳍礁鲨鱼)

4.3对于问题三

4.3.1问题的分析

在问题一和问题二的解决过程中,我们并未考虑人工鱼的能量系统,都是在

假设人工鱼不会在能量消耗下自然死亡的情况下进行模拟仿真的。

在问题三中,由于要解决对于寻求食物状态下,集群的决策形成。因此我们

考虑引入人工鱼的能量消耗系统,综合人工鱼的能量状态来形成对于食物信息的

合理决策。

432模型的建立

首先定义个体在能量系统中的各个要素:

(a)能量值

个体能量的多少山获得的资源量来衡量,每个仿真周期内个体都要消耗一

定的能最,能量值的变化山新陈代谢率决定。当个体的能量值小十或等十。时,该个

体死亡。

(b)新陈代谢率

一个仿真周期个体所消耗的能量值。能量是维持个体在虚拟世界中生存的基

本因素。

(c)最大能量:

个体所能拥有能量的最大值。当个体的能量值达到该值时,停止觅食。

(d)初始能量

仿真开始时,个体所拥有的能量值。

在获得食物信息的情况下,在集群中知道食物信息的个体行为发生改变,表

现为朝着食物的方向加速游动,

〃=〃+〃(T一力(10)

/0

〃为初始速度,〃为了时刻的速度,/为获知食物信息的时刻,下为当前时

0;

刻。

影响人工鱼的运动状态的因素除了食物信息之外还有人工鱼自身的能量状

态。我们用饥饿系数£来表示人工鱼当前的能量状态。

(11)

E

max

其中E表示人工鱼的初始状态能量,即,时刻的能量。T表示发现食物信息

的时刻。e表示人工鱼单位时间消耗的能量。E表示人工鱼能量的满值状态。

ma:

(0.8,1.0)表示人工鱼的吃饱状态

(04,0.8)表示人工鱼的正常状态(12)

(0,0.4)表示人工鱼处于饥饿状态

所以如果人工鱼处于饥饿状态,并且接收到食物信息,就会以尾追的状态去

寻求食物。

[5]尾追

鱼群中的单个人工鱼会向拥有食物信息的人工靠近,去寻找食物,则鱼群运

动的方向是:

X—X

0=arctan------(13)

1J"

其中,(七力为人工鱼当前所在位置。3。,乙)为知道食物信息的人工鱼的位

置。

如果人工鱼没有处于饥饿状态,就会按照问题一和问题二中的规则进行游

动。

在三维状态下,人工鱼相对知悉食物信息的鱼的向量坐标是

L=-/,々-V),求出L相对于*轴,J轴,彳轴的夹角(a,B,Y),从

000000

而确定人工鱼的逃离方向。

4.3.3模型的求解

利用MATLAB编程模拟仿真在获得食物位置时,人工鱼群运动的初始状,

如下图:

图13:知悉食物初始状态的运动情况

(注:•点表示人工鱼,。表示食物的位置)

在T时刻,人工鱼相对食物的运动状态,如下图:

图14:T时刻运动情况

(注:,点表小人工鱼,。表小食物的位置)

五、结果分析

本文通过建立鱼群行为仿真模型,基于集群规则,对鱼群集群,躲避天敌以

及觅食行为进行了二维图像仿真,通过模型的进一步分析,又将模型推广至三维,

通过设置不同的仿真参数,利用计算机的仿真模拟鱼类个体之间的相互作用,最

终达到集群形成的效果,较为真实的模拟了自然环境中鱼类的集群行为。

六、模型的评价与改进

模型的优点:

(1)基于仿真的群集模型可以为个体如何完成群集行为提供•个明确的视觉过

程。

(2)我们在解决问题的过程中同时对二维和三维进行了仿真,并且得出了合理

的结果。

模型的缺点:

(1)个体可能存在有很多不同的行为规则,都能够使得群体实现相同的集结行

为,也就是说并不能从群体仿真实验中的涌现结果推论出确切的个体行为。

(2)实际智能个体的行为可能是非常复杂的,在仿真中也难以复制。个体的简

单规则可以使得群体漉现与实际生物界中相似的群体行为,但缺乏理论分析的手

段,而且也不能保证现实生物系统就是遵循这样的简单规则。

(3)我们对于鱼类活动的原则考虑比较少,行为准则略显粗糙。

参考文献:

[11江道平尹怡欣等,群体中Agent基寸•内部状态的行为选择,系统仿真学

报,2009年01月;

[2]赵建曾建朝,鱼群集群行为的建模与仿真,太远科技大学学报,2009年

02月;

⑶班晓娟宁淑荣等,人工鱼高级自组织行为研究,自动化学报,2(X)8年10

月;

[4]陈世明,群集行为的建模与控制方法综述,华东交通大学电气与电子工程

学院,2006年09月

附录

第一问程序:

%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示

clear;clc;

N=50;%鱼的数量50,

Rn=1500;%领域半径

W=30;%初始速度3.0,

%a=3;%加速度0.3,

Vsi=18;%反弹速度0.8,

%鱼的活动范围

XRange=[-10000,10000];

YRange=[-10000,10000];

ZRange=[-10000,10000];

VRan=[-5*pi/6,5*pi/6];

%(1)随机产生鱼的位置PF(x,y)为位置集

fori=l:N

PZ(i,l)=XRange(1)4-(XRange(2)-XRangp(l))*rand;%X坐标

PZ(i,2)二YRange⑴+(YRange(2)-YRange⑴)*rand;%Y坐标

PZ(i,3)=ZRange⑴+(ZRange(2)-ZRange⑴)*rand;%Z坐标

PF(i,l)=PZ(i,l);

PF(i,2)=PZ(i,2);

PF(i,3)=PZ(i,3);

VZ(i,l)=2*pi*rand;%alphaX速度方向

VZ(i,2)=2*pi*rand;%betaY速度方向

VZ(i,3)=2*pi*rand;%gamaZ速度方向

VF(i,l)=VZ(i,l);

VF(i,2)=VZ(i,2);

VF(i,3)=VZ(i,3);

VZ(i,4)=W;%gamaZ速度大小

VF(i,4)=VZ(i,4);

end

lam=[0.10.30.30.3];

为⑵判断一条鱼和其他鱼之间的距离

%如果vRmin则避免碰撞;若,Rmin,〈Rmax保持速度相同;若〉Rmax,vRvis则

加速追尾;

%(2)搜索视野范围内的鱼,并统计个数

while1

fori=l:N

cn=0;

alsum=0;

besum=0;

gasum=0;

forj=l:N

if(i-=j)&&sqrt((PZ(i,l)-PZ(j,l))-2+(PZ(i,2)-PZ(j,2))-2+(PZ(i,3)-PZ(j,3))"2)<=Rn

cn=cn+l;

alsum=alsum+VZ(i,1);

besum=besum+VZ(i,2);

gasum=gasum+VZ(i,3);

end

end

ifcn〜=0

alsum=alsum/cn;

besum=besum/cn;

gasum=gasum/cn;

VF(i,l)=alsum;

VF(i,2)=besum;

Vr(i,3)=gasum;

end

PF(i,l)=PZ(i,l)+VF(i,4)*cos(VF(i,l));

PF(i,2)=PZ(i,2)+VF(i,4)*cos(VF(i,2));

PF(i,3)=PZ(i,3)+VF(i,4)*cos(VF(i,3));

%是否越界

ifPF(i,l)<XRange(l)||PF(i,l)>XRange(2)

VF(i,l)=VF(i,l)+pi;

end

ifPF(i,2)<YRange(1)||PF(i,2)>YRange(2)

VF(i,2)=VF(i,2)+pi;

end

ifPF(i,3)<ZRange(1)||PF(i,3)>ZRange(2)

VF(i,3)=VF(i,3)+pi;

end

PF(i,l)=PZ(i,l)+VF(i,4)*cos(VF(i,l));

PF(i,2)=PZ(i,2)+VF(i,4)*cos(VF(i,2));

PF(i,3)=PZ(i,3)+VF(i,4)*cos(VF(i,3));

end

TUl=plot3(PZ(:,l),PZ(:,2),PZ(:,3);.,);

%更新鱼的状态

fori=l:N

PZ(i,l尸PF(i,l);

PZ(i,2)=PF(i,2);

PZ(i,3)=PF(i,3);

VZ(i,l)=VF(i,l);

VZ(i,2)=VF(i,2);

VZ(i,3)=VF(i,3);

end

set(TUl,'xdata',PZ(:,l);yda£,PZ(:,2),'zdata',PZ(:,3));

drawnow;

axis([XRangc,YRangc,ZRangc]);gridon;

pause(0.01);

end

第二问程序:

%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示

clear;clc;

N=50;%鱼的数量,

Rn=1500;%领域半径

W=30;%初始速度,

a=3;%加速度,

Vsi=18;%反弹速度,

%鱼的活动范围

XRange=[-10000,10000];

YRange=[-10000,10000];

ZRange=[-10000,10000];

VRan=[-5*pi/6,5*pi/6];

%(1)随机产生鱼的位置PF(x,y)为位置集

fori=l:N

PZ(i,l)=XRange(l)-t-(XRange(2)-XRange(l))*rand;%X坐标

PZ(i,2)=YRangc⑴+(YRangc⑵-YRangc⑴)*rand;%Y坐标

PZ(i,3)二ZRangc⑴+(ZRangc⑵-ZRangc⑴)*rand;%Z坐标

PF(i,l)=PZ(i,l);

PF(i,2)=PZ(i,2);

PF(i,3)=PZ(i,3);

VZ(i,l)=2*pi*rand;%alphaX速度方向

VZ(i,2)=2*pi*rand;%bctaY速度方向

VZ(i,3)=2*pi*rand;%gamaZ速度方向

VF(i,l)=VZ(i,l);

VF(i,2)=VZ(i,2);

VF(i,3)=VZ(i,3);

VZ(i,4)=VV;%gamaZ速度大小

VF(i,4)=VZ(i,4);

end

fori=l:4

%鲨鱼初状态;

SZ⑴=XRange⑴+(XRange⑵-XRange⑴)*rand;%X坐标

SZ⑵二YRangc⑴+{YRangc⑵-YRangc⑴)*rand;%Y坐标

SZ(3)=ZRange(l)+;ZRange(2)-ZRange(l))*rand;%Z坐标

SF(1)=SZ(1);

SF(2)=SZ(2);

SF⑶二SZ(3);

SVZ(l)=2*pi*rand;%alphaX速度方向

SVZ(2)=2*pi*rand;%betaY速度方向

SVZ(3)=2*pi*rand;%gamaZ速度方向

SVF(1)-SVZ(1);

SVF(2)=SVZ(2);

SVF(3)=SVZ(3);

SVZ(4)=VV;

SVF(4)=SVZ(4);

end

lam=[0.10.30.30.3];

%(2)判断一条鱼和其他鱼之间的距离

%如果vRmin则避免碰撞;若aRmin,〈Rmax保持速度相同;则

加速追尾;

%(2)搜索视野范围内的鱼,并统计个数

while1

fori=1:N

cn=0;

alsum=0;

bcsum=0;

gasum=0;

forj=l:N

if(i-=j)&&sqrt((PZ(i,l)-PZg,l))A2+(PZ(i^)-PZ(j,2))A2+(PZ(i,3)-PZ(j,3)r2)<=Rn

cn=cn+l;

alsum=aIsum+VZ(i,l);

besum=besum+VZ(i,2);

gasum=gasum+VZ(i,3);

end

end

ifen〜=0&&sqrt((SZ(l)-PZ(i,1))人2+(SZ(2)-PZ(i,2))人2+(SZ(3)-PZ(i,3))人2)>=Rn

alsum=alsum/cn;

besum=besum/cn;

gasum=gasum/cn;

VF(i,l)=alsum;

VF(i,2)=besum;

VF(i,3)=gasum;

end

ddd二sqrt((SZ⑴-PZ(i,l)尸2+(SZ(2)-PZ(i,2)>2+(SZ(3)-PZ(i,3))八2);

ifddd<=Rn

VF(i,l)=pi4-acos((SZ(l)-PZ(i,l))/ddd);

VF(i,2)=pi+acos((SZ(2)-PZ(i,2))/ddd);

VF(i,3)=pi+acos((SZ(3)-PZ(i,3))/ddd);

VF(i,4)=VZ(i,4)+a;

ifVF(i,4)>Vmax

VF(i,4)=Vmax;

end

end

PF(i,l)=PZ(i,l)+VF(i,4)*cos(VF(i,l));

PF(i,2)=PZ(i,2)+VF(i,4)*cos(VF(i,2));

PF(i,3)=PZ(i,3)+VF(i,4)*cos(VF(i,3));

%是否越界

ifPF(i,l)vXRange⑴||PF(i,l)>XRange⑵

VF(i,l)=VF(i,l)+pi;

end

ifPF(i,2)<YRange(1)||PF(i,2)>YRange(2)

VF(i,2)=VF(i,2)+pi;

end

ifPF(i,3)<ZRange(1)||PF(i,3)>ZRange(2)

VF(i,3)=VF(i,3)+pi;

end

PF(i,l)=PZ(i,l)+VF(i,4)*cos(VF(i,l));

PF(i,2)=PZ(i,2)+VF(i,4)*cos(VF(i,2));

PF(i,3)=PZ(i,3)+VF(i,4)*cos(VF(i,3));

end

%鲨鱼下一时刻状态

SF(l)=SZ(l)+SVF(4)*cos(SVF(l));

SF(2)=SZ(2)+SVF(4)*cos(SVF(2));

SF(3)=SZ(3)+SVF(4)*cos(SVF(3));

ifSF⑴vXRange⑴||SF⑴〉XRange⑵

SVF⑴=SVF⑴+pi;

end

ifSF(2)<YRange(l)||SF(2)>YRange(2)

SVF(2)=SVF(2)+pi;

end

ifSF(3)<ZRangc(l)||SF(3)>ZRangc(2)

SVF(3)=SVF(3)+pi;

end

SF(l)=SZ(l)+SVF(4)*cos(SVF(l));

SF⑵二SZ(2)+SVF(4)*cos(SVF⑵);

SF(3)=SZ(3)+SVF(4)*cos(SVF(3));

TUInplot3(PZ(:,l),PZ(:2),PZ(:,3),');

T2=plot3(SZ⑴,SZ(2),SZ(3);r。);

%更新鱼的状态

fori=l:N

PZ(i,l)=PF(i,l);

PZ(i,2)=PF(i,2);

PZ(i,3)=PF(i,3);

VZ(i,l)=VF(i,l);

VZ(i,2)=VF(i,2);

VZ(i,3)=VF(i,3);

VZ(i,4)=VF(i,4);

end

SZ(1)=SF(1);SZ(2)=SF(2);SZ(3)=SF(3);

SVZ(1)=SVF(1);SVZ(2)=SVF(2);SVZ(3)=SVF(3);

sct(T2,'xdata',SZ⑴,'ydata',SZ⑵,'zdata',SZ(3));

sct(TUl,,xdata\PZ(:,l),'ydata',PZ(:,2):zdara,,PZ(:,3));

drawnow;

axis(fXRange,YRange,ZRange]);gridon;

pause(O.OI);

end

第三问程序:

%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示

clear;clc;

N=l()();%鱼的数量,

Rn=30000;%领域半径

W=1100;%初始速度,

a=10;%加速度,

Vsi=100;%反弹速度,

Vmax=W+60;

%鱼的活动范围

XRange=[-10000,10000];

YRange=[-10000,10000];

ZRange=[-10000,10000];

VRan=[-5*pi/6,5*pi/6];

%(1)随机产生鱼的位置PF(x,y)为位置集

fori=l:N

PZ(i,l)=XRange⑴+(XRange⑵-XRange⑴)*rand;%X坐标

PZ(i,2)=YRangc⑴+(YRangc(2)-YRangc⑴)*rand;%Y坐标

PZ(i,3)=ZRangc(1)4-(ZRangc(2)-ZRangc(1))*rand;%Z坐标

PF(i,l)=PZ(i,l);

PF(i,2)=PZ(i,2);

PF(i,3)=PZ(i,3);

VZ(i,l)=2*pi*rand;%alphaX速度方向

VZ(i,2)=2*pi*rand;%bctaY速度方向

VZ(i,3)=2*pi*rand;%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论