动物集群运动行为模型19_第1页
动物集群运动行为模型19_第2页
动物集群运动行为模型19_第3页
动物集群运动行为模型19_第4页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、)鱼群行为的建模与仿真摘要本文主要对人工鱼的集群行为,对天敌的有效躲避, 和在集群中部分个体获得食物信息的情况下,整个鱼类集群的运动行为进行了研究。并利用 MATLAB工具进行了模拟仿真。针对问题一, 我们对鱼类的集群运动主要提出了聚集、 和邻居速度匹配、 避免碰撞三个原则。 基于这三个原则建立了鱼类单个个体的自治模型, 每个个体通过相互作用, 使集群形成。 本文对三个原则的具体实现进行了分析和假设。 得到了计算机模拟仿真下的鱼类集群图形。针对问题二, 在模型一的基础上, 我们增加了鱼群有效逃避天敌的规则。 并利用 MATLAB进行在天敌存在的情况下,鱼类集群行为的运动特征,并且得出了较好的仿

2、真结果。针对问题三,我们建立了鱼群觅食过程中的信息交流机制, 得出了在部分人工鱼知悉食物信息的情况下,整个鱼群的运动状态的仿真结果。关键词:集群运动模拟仿真个体自治一、问题的提出在动物界,大量集结成群进行移动或者觅食的例子并不少见, 这种现象在食草动物、鸟、鱼和昆虫中都存在。这些动物群在运动过程中具有很明显的特征:群中的个体聚集性很强, 运动方向、速度具有一致性。 通过数学模型来模拟动物)群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。根据相关资料, 建立数学模型刻画动物集群运动、 躲避威胁等行为, 解决如下问题:问题一: 建立数学模型模拟动物的集群运动。问题二:

3、 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。问题三:假定动物群中有一部分个体是信息丰富者 (如掌握食物源位置信息,掌握迁徙路线信息 ),请建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。二、基本假设1、假设除视觉外其他感官在第一问中的影响忽略,如嗅觉,听觉;2、假设每条鱼体型、感知能力相同;3、假设鱼群在集群运动中没有死亡;4、假设鱼的反应速度很快,改变速度所需时间非常短;5、假设鱼遇到边界,以反射的方向反弹。三、定义符号说明符号说明( x, y)二维体系中人工鱼的初始坐标v人工鱼的速度二维体系中人工鱼速度方向与横轴的夹角Q人工鱼聚集的中心坐标n在感知范围内邻居的个数( x,

4、y,z)三维体系中人工鱼的初始坐标(,)三维体系中人工鱼游动的方向E人工鱼的能量状态人工鱼的饥饿系数)四、问题的分析及模型的建立、求解4.1对于问题一问题的分析关于集群行为的研究, 大致可以分为三个阶段: 第一阶段是生物学家做了大量研究,发现了许多生物群体特有的动态行为; 第二阶段是实验物理学家和计算机专家做了许多实验和仿真, 用模拟仿生的方法证明这种生物群体现象可以由个体的简单行为规律获得;第三阶段就是利用数学对群集行为进行严格建模及分析。动物的群体行为是相当于个体行为而言的。群体行为决定着个体行为的方向,个体行为是群体行为的体现。群体是由个体构成的,因此,群体行为离不开个体行为但群体行为并

5、不是个体行为的简单相加。 所以我们在研究鱼群集体行为的过程中,首先对群体中单个鱼的行为做出研究, 然后再从内部影响和外部作用两方面入手,分析鱼群的群集行为。对群集行为的研究主要有三种方法。 第一种是欧拉法, 在欧拉法中, 一个群体的模型中的每个个体成员不作为单个实体进行研究, 而是通过密度概念将整个群体作为一个连续集描述, 欧拉法有一个明显的缺点就是忽略了个体的特性。 第二种是拉格朗日法, 拉格朗日法基本的描述就是每个个体各自的运动方程。 第三类方法就是基于仿真的建模方法, 基于仿真的群集模型无需建立像描述群体分布的费克方程或描述各种吸引力 /排斥力作用的牛顿运动方程,而是通过群体中的个体建立

6、模拟实际生物个体动态行为的行为规则来研究群集行为。基于个体自治的鱼类集群模型我们所进行的鱼群集群行为的仿真模型由三部分构成:(1)环境。(2)个体。(3)行为规则。环境是个体生存的空间, 个体在环境中活动,利用环境中的资源来进行生存。个体的综合构成了研究的群体对象。 个体的演化过程由其行为规则控制, 行为规则则是决定了个体与个体之间、 个体与环境之间相互作用的方式。 任意时刻个体在环境中都有一个确定的位置并且由其所占据的方位来确定。(一)环境的描述首先对二维的鱼群世界进行仿真, 环境应为一个二维的有限平面区域, 使用反射型边界,当鱼游到边界以后按照镜子反射的方式反弹回来。 我们可以把环境描述成

7、为一个宽为 width ,长为 length 的二维世界,如下图)图 1:个体及其所处环境因为计算机仅仅能处理离散的信息, 所以环境也是一个离散的世界。 我们用计算机屏幕上一系列运动的点代替鱼个体, 给它们设置坐标、 速度等参数, 就可以把现实中的鱼映射到虚拟环境中来。 所有个体在该环境中游动。 描述个体的位置和方向如下:vx v cos , vy v sin( 1)其中为速度方向和横轴方向的夹角。x ' x vxdt, y' y vydt( 2)其中, ( x, y) 为鱼的初始坐标位置,( x ', y ') 为一段时间后,鱼的坐标位置。(二)个体描述对个体

8、鱼的建模是仿真的核心与关键。 把每条鱼看成一个人能够自主决策的Agent ,他们会根据自己的观察来感知周围的环境,并按照一定的规则决策。鱼r类个体之间的交互是由其视觉范围的大小决定的。个体的视觉范围是半径为角度为 300 度的一个扇形。图 2:鱼类的视觉范围主体之间的交互作用是局部的, 只能发生在所定义的邻域内。 个体具有以下属性:(1)位置:个体位置由一组坐标(x,y)表示;)(2)感知范围:个体所能感知的范围。个体的感知范围取决于所定义邻域半径的大小,感知范围越大,表明该个体与环境和其他个体的作用越强。(3)碰撞距离:个体之间的最短距离。当个体之间的距离小于该值时,个体将朝着远离的方向游动

9、。(4)初速度:仿真开始时,赋予每个个体的速度值,大小相等,方向相同。(5)最大速度:鱼类在游动时所能达到的极限速度。(6)加速度:个体受到外界干扰时,对个体行为的改变,表现为的速度的改变。(7)反弹速度:个体到边界时反弹回来的速度。(三)规则描述人工鱼的基本行为主要包括:( 1)避开障碍物。( 2)游向目标。( 3)追逐目标。( 4)离开。( 5)闲逛。( 6)逃逸。( 7)集群。个体的行为规则主要表现为群体游动时的游动规则,游动规则主要包括:1 聚集规则(尽量靠近邻居)2 速度匹配(尽量与邻居的运动方向一致)3 避免碰撞(尽量避免与群体内部和群体外部的障碍发生碰撞)在这里我们定义邻居为如果

10、两个个体之间的距离小于某个给定的值r ,则它们互为邻居。每条人工鱼下一刻游动的方向都要受这三个因素和当前鱼的游动方向的影响,将这四个方向的平均作为人工鱼下一刻游动的方向如下图。图 3:人工鱼下一刻的游动方向然而四个因素对鱼群的影响力的大小不同, 根据它们对人工鱼下一刻运动方向影响的大小进行赋权,则人工鱼下一刻的运动方向(与二维区域横轴的夹角)t 11 1t2 t23 t 34 t( 3)12341(4)下面分别对四条游动准则分别进行描述:(1)聚集性。每个个体都有向邻居中心靠拢的特性, 邻居中心为感知范围内所有个体所在位置的平均值。QQi (in)(5)n当前状态下的人工鱼相对中心位置的方向为

11、a r c t ayny(6)xx其中, Q( x, y) 为鱼群靠拢的中心,( x, y) 为人工鱼当前所在位置。(2)速度匹配人工鱼要与邻域内的鱼保持游动时速度大小和方向一致, 速度和方向为邻域内的均值,则vi(7)vnarctan xxiyyi( 8)2n( xi , yi ) 为邻域内第 i 条鱼的位置, vi 为邻域内第 i 条鱼的速度。(3)避免碰撞为了避免鱼群之间的碰撞。 在人工鱼进入危险距离后, 若即将与一条鱼碰撞,设为 f1 ,那么人工鱼就以与f1运动的方向垂直的方向进行规避。若是即将与两条鱼碰撞,分别设为 f1 , f 2 。则人工鱼就以与f1 , f2 运动的合成方向相垂

12、直的方向进行规避。当有 n条时,同样以与 n 条鱼运动合成方向的垂直方向进行规避。如下图:)f 1f 2规避方向人工鱼的运动合成方向图 4: 避免碰撞的规避图在三维状态下, 我们采取相同的准则, 进行模拟仿真。 环境应为一块有限的三维区域,我们选定( x,y,z)作为人工鱼的位置, 用它游动方向和 x 轴, y 轴和 z轴的夹角(,) 作为人工鱼游动的方向。 聚集性的方向为人工鱼和鱼群中心的方向向量。速度匹配的方向为邻居所有鱼的夹角(,) 的均值。避免碰撞仍然采用合成的方法。模型的求解通过 MATLAB仿真模拟,得到在二维条件下,初始状态的鱼群,如下图:10008006004002000-20

13、0-400-600-800-1000-800-600-400-20002004006008001000-1000图 5:鱼群初始状态)在模型一的规则下,鱼群的聚群行为10008006004002000-200-400-600-800-1000-400 -20002004006008001000-1000 -800 -600图 6:二维鱼群集群应用二维的规则,同样可以得到在三维状态下的模拟成果10005000-500-10001000500100005000-500-500-1000-1000图 7:鱼群三维初始状态)三维集群之后的状态,如下图10005000-500-1000100050010

14、0005000-500-500-1000-1000图 8:三维鱼群的集群4.2对于问题二问题的分析在问题一的分析和模型的建立求解过程中, 我们并没有考虑人工鱼群在食物链中受到天敌威胁的情况。 鱼类在海洋中有效的躲避天敌也是鱼类运动中的一项规则。所以我们在第一问的基础之上建立鱼类的躲避规则, 重新仿真鱼类集群运动。模型的建立在游动规则的基础上加入躲避天敌这项规则, 进一步完善模型。 人工鱼下一刻的运动状态和方向也要受到天敌的影响。4 躲避天敌人工鱼在遭遇黑鳍礁鲨鱼时,迅速以与相对黑鳍礁鲨鱼相反的方向逃离。3 arctan xx1( 9)yy1其中, ( x, y) 为人工鱼所在的位置, ( x1

15、 , y1) 为天敌所在的位置,3 为人工鱼遭遇天敌时逃离的方向与横轴的夹角。在三维的状态中,人工鱼相对黑鳍礁鲨鱼的向量(x x1 , yy1, z z1) 。 求出和 x 轴, y 轴, z 轴的夹角1 , 1, 1 ,从而确定人工鱼的逃离方向。)模型的求解利用 MATLAB编程模拟仿真在二维状态下人工鱼在黑鳍礁鲨鱼进入的初始状态下的运动情况,如下图 :10008006004002000-200-400-600-800-1000-400 -2000200400600800 1000-1000 -800 -600图 9:黑鳍礁鲨鱼进入的初始状态(注:·表示人工鱼, o 表示黑鳍礁鲨鱼

16、)黑鳍礁鲨鱼游动T 时刻,人工鱼对它的躲避行为,如下图:10008006004002000-200-400-600-800-10000200400600800 1000-1000 -800 -600 -400 -200图 10:鱼群对黑鳍礁鲨鱼的躲避行为(注:·表示人工鱼, o 表示黑鳍礁鲨鱼)利用 MATLAB编程模拟仿真在三维状态下人工鱼在黑鳍礁鲨鱼进入的初始状态下的运动情况,如下图 :4x 1010.50-0.5-110.51400.5x 10-0.504-0.5x 10-1-1图 11:加入黑鳍礁鲨鱼的初始状态(注:·表示人工鱼, o 表示黑鳍礁鲨鱼)黑鳍礁鲨鱼游动

17、T 时刻,人工鱼对它的躲避行为,如下图:4x 1010.50-0.5-110.51400.5x 10-0.504-0.5x 10-1-1图 12:鱼群对黑鳍礁鲨鱼的躲避行为(注:·表示人工鱼, o 表示黑鳍礁鲨鱼)4.3对于问题三问题的分析在问题一和问题二的解决过程中, 我们并未考虑人工鱼的能量系统, 都是在假设人工鱼不会在能量消耗下自然死亡的情况下进行模拟仿真的。在问题三中, 由于要解决对于寻求食物状态下, 集群的决策形成。 因此我们考虑引入人工鱼的能量消耗系统, 综合人工鱼的能量状态来形成对于食物信息的合理决策。模型的建立首先定义个体在能量系统中的各个要素:( a)能量值个体能量

18、的多少由获得的资源量来衡量,每个仿真周期内个体都要消耗一定的能量 , 能量值的变化由新陈代谢率决定。当个体的能量值小于或等于 0时 , 该个体死亡。( b)新陈代谢率一个仿真周期个体所消耗的能量值。 能量是维持个体在虚拟世界中生存的基本因素。( c)最大能量 :个体所能拥有能量的最大值。当个体的能量值达到该值时, 停止觅食。( d)初始能量仿真开始时 , 个体所拥有的能量值。在获得食物信息的情况下, 在集群中知道食物信息的个体行为发生改变, 表现为朝着食物的方向加速游动,vt v0 a(T t )( 10)v0 为初始速度, vt 为 T 时刻的速度, t 为获知食物信息的时刻,T 为当前时刻

19、。影响人工鱼的运动状态的因素除了食物信息之外还有人工鱼自身的能量状态。我们用饥饿系数 来表示人工鱼当前的能量状态。Ee(T t)(11)Emax其中 E 表示人工鱼的初始状态能量,即t 时刻的能量。 T表示发现食物信息的时刻。 e 表示人工鱼单位时间消耗的能量。Emax 表示人工鱼能量的满值状态。表示人工鱼的吃饱状态(0. 8,1. 0)()表示人工鱼的正常状态(12)0.4,0. 8( 0,0.4)表示人工鱼处于饥饿状态所以如果人工鱼处于饥饿状态, 并且接收到食物信息, 就会以尾追的状态去寻求食物。)5 尾追鱼群中的单个人工鱼会向拥有食物信息的人工靠近, 去寻找食物,则鱼群运动的方向是:1a

20、rctan xx0(13)yy0其中, ( x, y) 为人工鱼当前所在位置。(x0 , y0 ) 为知道食物信息的人工鱼的位置。如果人工鱼没有处于饥饿状态,就会按照问题一和问题二中的规则进行游动。在三维状态下,人工鱼相对知悉食物信息的鱼的向量坐标是' ( x x0, y y0 , z z0 ) ,求出 ' 相对于 x 轴, y 轴, z 轴的夹角0,0,0,从而确定人工鱼的逃离方向。模型的求解利用 MATLAB 编程模拟仿真在获得食物位置时,人工鱼群运动的初始状,如下图 :4x 1010.50-0.5-110.51400.5x 10-0.504-0.5x 10-1-1图 13

21、:知悉食物初始状态的运动情况(注 :·点表示人工鱼,+ 表示食物的位置)在T时刻,人工鱼相对食物的运动状态,如下图:)4x 1010.50-0.5-110.51400.5x 10-0.504-0.5x 10-1-1图14:T时刻运动情况(注 :·点表示人工鱼,+ 表示食物的位置)五、结果分析本文通过建立鱼群行为仿真模型 , 基于集群规则,对鱼群集群,躲避天敌以及觅食行为进行了二维图像仿真 , 通过模型的进一步分析, 又将模型推广至三维,通过设置不同的仿真参数 , 利用计算机的仿真模拟鱼类个体之间的相互作用,最终达到集群形成的效果,较为真实的模拟了自然环境中鱼类的集群行为。六

22、、模型的评价与改进模型的优点 :)( 1)基于仿真的群集模型可以为个体如何完成群集行为提供一个明确的视觉过程。( 2)我们在解决问题的过程中同时对二维和三维进行了仿真,并且得出了合理的结果。模型的缺点:( 1)个体可能存在有很多不同的行为规则,都能够使得群体实现相同的集结行为,也就是说并不能从群体仿真实验中的涌现结果推论出确切的个体行为。( 2)实际智能个体的行为可能是非常复杂的,在仿真中也难以复制。个体的简单规则可以使得群体涌现与实际生物界中相似的群体行为, 但缺乏理论分析的手段,而且也不能保证现实生物系统就是遵循这样的简单规则。( 3)我们对于鱼类活动的原则考虑比较少,行为准则略显粗糙。参

23、考文献:1 江道平 尹怡欣等,群体中 Agent 基于内部状态的行为选择, 系统仿真学报, 2009 年 01 月;2 赵建 曾建朝,鱼群集群行为的建模与仿真,太远科技大学学报, 2009 年02月;3 班晓娟 宁淑荣等,人工鱼高级自组织行为研究,自动化学报, 2008 年10 月;4 陈世明,群集行为的建模与控制方法综述,华东交通大学电气与电子工程学院, 2006 年 09 月)附录第一问程序:%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示 clear;clc;N=50;% 鱼的数量 50,Rn=1500;% 领域半径VV=30;%初始速度 3.0,%a=3;%加速度 0.3,Vs

24、i=18;%反弹速度 0.8,%鱼的活动范围XRange=-10000,10000;YRange=-10000,10000;ZRange=-10000,10000;VRan=-5*pi/6,5*pi/6;%( 1)随机产生鱼的位置PF(x,y)为位置集for i=1:NPZ(i,1)=XRange(1)+(XRange(2)-XRange(1)*rand; %X 坐标PZ(i,2)=YRange(1)+(YRange(2)-YRange(1)*rand; %Y 坐标PZ(i,3)=ZRange(1)+(ZRange(2)-ZRange(1)*rand; %Z 坐标PF(i,1)=PZ(i,1)

25、;PF(i,2)=PZ(i,2);PF(i,3)=PZ(i,3);VZ(i,1)=2*pi*rand;%alpha X 速度方向VZ(i,2)=2*pi*rand;%beta Y 速度方向VZ(i,3)=2*pi*rand;%gama Z 速度方向VF(i,1)=VZ(i,1);VF(i,2)=VZ(i,2);VF(i,3)=VZ(i,3);VZ(i,4)=VV;%gama Z 速度大小VF(i,4)=VZ(i,4);endlam=0.1 0.3 0.3 0.3;%(2)判断一条鱼和其他鱼之间的距离%如果 <Rmin 则避免碰撞;若 >Rmin,<Rmax 保持速度相同;若

26、>Rmax,<Rvis 则加速追尾;%( 2)搜索视野范围内的鱼,并统计个数while 1for i=1:Ncn=0;)alsum=0;besum=0;gasum=0;for j=1:Nif(i=j)&&sqrt(PZ(i,1)-PZ(j,1)2+(PZ(i,2)-PZ(j,2)2+(PZ(i,3)-PZ(j,3)2)<=Rn cn=cn+1;alsum=alsum+VZ(i,1);besum=besum+VZ(i,2);gasum=gasum+VZ(i,3);endendif cn=0alsum=alsum/cn;besum=besum/cn;gasum=g

27、asum/cn;VF(i,1)=alsum;VF(i,2)=besum;VF(i,3)=gasum;endPF(i,1)=PZ(i,1)+VF(i,4)*cos(VF(i,1);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);%是否越界if PF(i,1)<XRange(1)|PF(i,1)>XRange(2)VF(i,1)=VF(i,1)+pi;endif PF(i,2)<YRange(1)|PF(i,2)>YRange(2)VF(i,2)=VF(i,2)+pi;endif

28、 PF(i,3)<ZRange(1)|PF(i,3)>ZRange(2)VF(i,3)=VF(i,3)+pi;endPF(i,1)=PZ(i,1)+VF(i,4)*cos(VF(i,1);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);endTU1=plot3(PZ(:,1),PZ(:,2),PZ(:,3),'.');%更新鱼的状态for i=1:NPZ(i,1)=PF(i,1);PZ(i,2)=PF(i,2);PZ(i,3)=PF(i,3);VZ(i,1)=VF(i,1

29、);)VZ(i,2)=VF(i,2);VZ(i,3)=VF(i,3);endset(TU1,'xdata',PZ(:,1),'ydata',PZ(:,2),'zdata',PZ(:,3);drawnow;axis(XRange,YRange,ZRange);grid on;pause(0.01);end第二问程序:%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示clear;clc;N=50;% 鱼的数量 ,Rn=1500;% 领域半径VV=30;%初始速度 ,a=3;%加速度 ,Vsi=18;%反弹速度 ,%鱼的活动范围XRange=-1

30、0000,10000;YRange=-10000,10000;ZRange=-10000,10000;VRan=-5*pi/6,5*pi/6;%( 1)随机产生鱼的位置PF(x,y)为位置集for i=1:NPZ(i,1)=XRange(1)+(XRange(2)-XRange(1)*rand; %X 坐标 PZ(i,2)=YRange(1)+(YRange(2)-YRange(1)*rand; %Y 坐标 PZ(i,3)=ZRange(1)+(ZRange(2)-ZRange(1)*rand; %Z 坐标 PF(i,1)=PZ(i,1);PF(i,2)=PZ(i,2);PF(i,3)=PZ(

31、i,3);VZ(i,1)=2*pi*rand;%alpha X 速度方向VZ(i,2)=2*pi*rand;%beta Y 速度方向VZ(i,3)=2*pi*rand;%gama Z 速度方向VF(i,1)=VZ(i,1);VF(i,2)=VZ(i,2);VF(i,3)=VZ(i,3);VZ(i,4)=VV;%gama Z 速度大小VF(i,4)=VZ(i,4);endfor i=1:4%鲨鱼初状态;SZ(1)=XRange(1)+(XRange(2)-XRange(1)*rand; %X 坐标 SZ(2)=YRange(1)+(YRange(2)-YRange(1)*rand; %Y 坐标)

32、SZ(3)=ZRange(1)+(ZRange(2)-ZRange(1)*rand; %Z 坐标 SF(1)=SZ(1);SF(2)=SZ(2);SF(3)=SZ(3);SVZ(1)=2*pi*rand;%alpha X 速度方向SVZ(2)=2*pi*rand;%beta Y 速度方向SVZ(3)=2*pi*rand;%gama Z 速度方向SVF(1)=SVZ(1);SVF(2)=SVZ(2);SVF(3)=SVZ(3);SVZ(4)=VV;SVF(4)=SVZ(4);endlam=0.1 0.3 0.3 0.3;%(2)判断一条鱼和其他鱼之间的距离%如果 <Rmin 则避免碰撞;若

33、 >Rmin,<Rmax 保持速度相同;若 >Rmax,<Rvis 则加速追尾;%( 2)搜索视野范围内的鱼,并统计个数while 1for i=1:Ncn=0;alsum=0;besum=0;gasum=0;for j=1:Nif(i=j)&&sqrt(PZ(i,1)-PZ(j,1)2+(PZ(i,2)-PZ(j,2)2+(PZ(i,3)-PZ(j,3)2)<=Rn cn=cn+1;alsum=alsum+VZ(i,1);besum=besum+VZ(i,2);gasum=gasum+VZ(i,3);endendif cn=0&&

34、sqrt(SZ(1)-PZ(i,1)2+(SZ(2)-PZ(i,2)2+(SZ(3)-PZ(i,3)2)>=Rnalsum=alsum/cn;besum=besum/cn;gasum=gasum/cn;VF(i,1)=alsum;VF(i,2)=besum;VF(i,3)=gasum;endddd=sqrt(SZ(1)-PZ(i,1)2+(SZ(2)-PZ(i,2)2+(SZ(3)-PZ(i,3)2);)if ddd<=RnVF(i,1)=pi+acos(SZ(1)-PZ(i,1)/ddd);VF(i,2)=pi+acos(SZ(2)-PZ(i,2)/ddd);VF(i,3)=pi

35、+acos(SZ(3)-PZ(i,3)/ddd);VF(i,4)=VZ(i,4)+a;if VF(i,4)>VmaxVF(i,4)=Vmax;endendPF(i,1)=PZ(i,1)+VF(i,4)*cos(VF(i,1);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);%是否越界if PF(i,1)<XRange(1)|PF(i,1)>XRange(2)VF(i,1)=VF(i,1)+pi;endif PF(i,2)<YRange(1)|PF(i,2)>YRange

36、(2)VF(i,2)=VF(i,2)+pi;endif PF(i,3)<ZRange(1)|PF(i,3)>ZRange(2)VF(i,3)=VF(i,3)+pi;endPF(i,1)=PZ(i,1)+VF(i,4)*cos(VF(i,1);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(1)=SZ(1)+SVF(4)*cos(SVF(1);SF(2)=SZ(2)+SVF(4)*cos(SVF(2);SF(3)=SZ(3)+SVF(4)*cos(SVF(3)

37、;if SF(1)<XRange(1)|SF(1)>XRange(2)SVF(1)=SVF(1)+pi;endif SF(2)<YRange(1)|SF(2)>YRange(2)SVF(2)=SVF(2)+pi;endif SF(3)<ZRange(1)|SF(3)>ZRange(2)SVF(3)=SVF(3)+pi;endSF(1)=SZ(1)+SVF(4)*cos(SVF(1);SF(2)=SZ(2)+SVF(4)*cos(SVF(2);SF(3)=SZ(3)+SVF(4)*cos(SVF(3);TU1=plot3(PZ(:,1),PZ(:,2),PZ(

38、:,3),'.');T2=plot3(SZ(1),SZ(2),SZ(3),'ro');)%更新鱼的状态for i=1:NPZ(i,1)=PF(i,1);PZ(i,2)=PF(i,2);PZ(i,3)=PF(i,3);VZ(i,1)=VF(i,1);VZ(i,2)=VF(i,2);VZ(i,3)=VF(i,3);VZ(i,4)=VF(i,4);endSZ(1)=SF(1);SZ(2)=SF(2);SZ(3)=SF(3);SVZ(1)=SVF(1);SVZ(2)=SVF(2);SVZ(3)=SVF(3);set(T2,'xdata',SZ(1),&#

39、39;ydata',SZ(2),'zdata',SZ(3);set(TU1,'xdata',PZ(:,1),'ydata',PZ(:,2),'zdata',PZ(:,3);drawnow;axis(XRange,YRange,ZRange);grid on;pause(0.01);end第三问程序:%实现功能:模拟鱼群的集群,避敌,觅食行为,进行动画演示clear;clc;N=100;%鱼的数量 ,Rn=30000;%领域半径VV=1100;%初始速度 ,a=10;%加速度 ,Vsi=100;%反弹速度 ,Vmax=VV+

40、60;%鱼的活动范围XRange=-10000,10000;YRange=-10000,10000;ZRange=-10000,10000;VRan=-5*pi/6,5*pi/6;%( 1)随机产生鱼的位置PF(x,y)为位置集for i=1:NPZ(i,1)=XRange(1)+(XRange(2)-XRange(1)*rand; %X 坐标PZ(i,2)=YRange(1)+(YRange(2)-YRange(1)*rand; %Y 坐标PZ(i,3)=ZRange(1)+(ZRange(2)-ZRange(1)*rand; %Z 坐标PF(i,1)=PZ(i,1);PF(i,2)=PZ(

41、i,2);PF(i,3)=PZ(i,3);VZ(i,1)=2*pi*rand;%alpha X 速度方向VZ(i,2)=2*pi*rand;%beta Y 速度方向VZ(i,3)=2*pi*rand;%gama Z 速度方向)VF(i,1)=VZ(i,1);VF(i,2)=VZ(i,2);VF(i,3)=VZ(i,3);VZ(i,4)=VV;%gama Z 速度大小VF(i,4)=VZ(i,4);endfor i=1:4%食物位置;SZ(1)=XRange(1)+(XRange(2)-XRange(1)*0.82; %X 坐标 SZ(2)=YRange(1)+(YRange(2)-YRange(1)*0.455; %Y 坐标 SZ(3)=ZRange(1)+(ZRange(2)-ZRange(1)*0.5421; %Z坐标endlam=0.1 0.3 0.3 0.3;%(2)判断一条鱼和其他鱼之间的距离%如果 <Rmin 则避免碰撞;若 >Rmin,<Rmax 保持速度相同;若 >Rmax,<Rvis 则加速追尾;%( 2)搜索视野范围内的鱼,并统计个数while 1T2=p

温馨提示

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

评论

0/150

提交评论