动物集群运动行为模型系列之二.doc

上传人:仙人指路1688 文档编号:4234947 上传时间:2023-04-10 格式:DOC 页数:25 大小:2.72MB
返回 下载 相关 举报
动物集群运动行为模型系列之二.doc_第1页
第1页 / 共25页
动物集群运动行为模型系列之二.doc_第2页
第2页 / 共25页
动物集群运动行为模型系列之二.doc_第3页
第3页 / 共25页
动物集群运动行为模型系列之二.doc_第4页
第4页 / 共25页
动物集群运动行为模型系列之二.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《动物集群运动行为模型系列之二.doc》由会员分享,可在线阅读,更多相关《动物集群运动行为模型系列之二.doc(25页珍藏版)》请在三一办公上搜索。

1、动物集群行为运动模型摘要在动物界,存在着大量的集群行为,这种现象在食草动物、鸟、鱼和昆虫中都存在。令人惊奇的是这些动物群在运动过程中具有很明显的凝聚性,方向性和一致性。近一些年,研究动物集群行为已经成为科学界的一项热门课题。通过数学模型来模拟动物群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的重要内容。形成相应的新算法,是有效研究动物间传递信息、抵御天敌、物种迁徙的重要方法,同时对于科学技术的进步、研究信息交换和网络技术、无人机系统(UAV)有着十分深远的影响。对于问题一,为了模拟动物的集群运动。我们引入了Boid模型。通过个体间的距离划分出了排斥区域、一致区域和吸引区域。当相

2、邻个体处于排斥去则保持足够的距离,尽量避免碰撞,当处于一致区域则尽量保持速度矢量的相同,当处于吸引区域则要缩小之间的距离,以免被孤立。通过以上原则确定个体下一时刻的速度方向,从而通过确定下一时刻的位置,通过迭代,模拟出集合任意一个体的运动方程。最终得到通过一定时间,集群内各个体沿着相同方向运动。对于问题二,为了刻画鱼群躲避黑鳍礁鲨鱼的运动行为,我们引入了排斥/吸引相互影响作用模型。在不含外界影响的情况下,确立了集群个体间的相互作用的函数。在此基础上引入外界条件,通过外界捕食者与集群间的排斥吸引关系对函数进行修改。最终建立了鱼群躲避黑鳍礁鲨鱼的运动方程。通过Matlab程序的实现,最终刻画了躲避

3、捕食的运动行为。对于问题三,对于分析信息丰富着对整体同步性的影响。我们在Boid模型的基础上通过Agent算法建立了Leader-Follower模型。通过对第一问的模型加入少量领导者,对跟随者的运动规律不受影响,对领导者而言,由于受到周围平均方向与一优先方向的共同影响。通过算式确定领导者的下一步速度方向。进一步确立领导者和跟随者的运动方程。通过改变相同集群集合的领导者比例和优先方向影响权重,发现得到群体体统越大的集群达到同步所需的领导者比例越小;领导者优先权重越大,系统同步程度越高。关键字:Boid模型 排斥/吸引相互影响作用模型 Agent算法 Leader-Follower模型 一 问题

4、重述 在动物界,大量集结成群进行移动或者觅食的例子并不少见,这种现象在食草动物、鸟、鱼和昆虫中都存在。这些动物群在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。通过数学模型来模拟动物群的集群运动行为以及探索动物群中的信息传递机制一直是仿生学领域的一项重要内容。请观察下面附件中给出的图片和视频资料,或者在网上搜索相关资料观察,思考动物集群运动的机理,建立数学模型刻画动物集群运动、躲避威胁等行为,考虑以下问题的分析建模:1. 建立数学模型模拟动物的集群运动。 2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位

5、置信息,掌握迁徙路线信息),请建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。二 模型假设1. 假设不考虑动物集群中个体的大小。2. 假设动物集群中个体的速度大小相等。3. 假设不考虑除热噪音以外的其他环境因素的影响。4. 假设集群中个体运动同步且无时间延迟。5. 假设群体中至少存在两个个体,且每个个体的运动受所有其它所有个体运动的影响。6. 假设集群中个体的视野角相同且为常数。三 符号说明:集群中个体的位置矢量;:集群中个体的速度矢量;:集群中个体运动速度的大小;:集群中个体的视野角;:集群中个体在第时刻的预期运动方向;:集群中个体运动的同步性系数;:集群中个体数;:表示个体间

6、的吸引/排斥函数;:目标个体对群内个体的排斥函数;:目标个体对群内个体的吸引函数:集群中个体之间的作用强度或权值;:优先方向的影响权重; ,:集群中个体间相互作用势函数;:集群中领导者个体的优先方向;:集群中跟从者在时刻的预期运动方向;:集群中领导者在时刻的预期运动方向;四 问题分析关于问题一,为了模拟出动物如何进行集群运动,我们引入了Boid模型。通过对鱼的集群的具体分析以定性解决动物集群的运动特点。在问题中,我们通过把动物个体之间的距离远近分排斥区域、一致区域和吸引区域,通过对不同区域个体根据周围其他个体的个数确定下一步行进的方向的规则确定。最终在Matlab中实现物种集群行动的模拟。关于

7、问题二,为了刻画鱼群躲避黑鳍礁鲨鱼的运动行为,我们引入排斥/吸引相互影响作用模型,通过把捕食者与集群相对当作外界影响,对原有模型进行改进,建立有外界影响的集群中个体的运动方程与捕食者的运动方程。分析鱼群如何通过集群行动躲避捕食。关于问题三,是在第一问的基础上关于Boid模型的改进,由于每个个体的地位不再是相等的,各个体之间相对的影响也不相同。因此我们引入了Leader-Follower模型。通过分别对领导者和跟随者关系的分类。通过相应给出相互影响的原则分别确定在三个区域中其他个体对该个体下一运动方向的影响。并通过比较不同优先方向影响权重和(假定相同的跟随者的情况下)不同领导者个数,定量的分析信

8、息丰富着对集群运动行为的影响。五 模型的建立与求解(一) 问题一模型的建立与求解:Boid模型的简单原则是:(1) 聚集,即尽量与距离间的个体靠的近一些,以避免被孤立;(2) 排斥,即防止与周围距离较近的个体发生碰撞;(3) 速度匹配,即努力与周围的个体速度保持一致。在此原则的基础上,我们对模型进行详细的描述:设系统由各个体组成,他们的位置和速度矢量分别为,每个个体在三维空间中的速度大小都为。为个体在时刻的预期方向。在每一步,每个个体都能感知到三维空间中其他不同个体的位置和角度,用这些信息去计算。把对每一个体按距离远近分为:排斥区域(zone of repulsion),一致区域(zone o

9、f orientation),吸引区域(zone of attraction)。三个区域如图所示:Boid模型的三个区域示意图,zor表示排斥区域,zoo表示一致区域,zoa表示吸引区域;为视野盲区,的取值范围是,。个体的运动规则为:首先,每个个体尽量与排斥区域(以该点为圆心,半径为组成的球形区)中的其他个体保持最小距离,并计其中的个数为,则个体的预期方向按照下面的方向进行调整: ,其中 。其次,如果,则个体的预期方向受一致区域(以个体为中心,处于和之间的球型区域,去除该个体后面的视角为的盲区 )以及吸引区(以个体 为中心,处于和之间的球形区域,去除该个体后面的视角为的盲区 )中的个体数的影响

10、,记相应区域中邻居个体的个数分别为 ,那可定义, 如下: , ;如果 ,则 ;同样,如果 ,则 ;如果两者都不为0,则定义 ;如果经过上面的运算后得到的 ,或者在三个区域中都没有个体,则 设旋转速率为,则每一步个体能转动的最大角度为,如果和 之间的角度差小于,则 ,否则个体向期望的方向旋转角度为,这样就确定了个体下一步的速度方向。 因此我们通过以上原则构建的方程组为: 对于集群行动的同步性,我们通过来表示:其中表示都有个体速度的模,代表集群中个体数,代表集群趋于稳定后个体的速度矢量。在外界影响因素恒定, 的情况下得到进群趋于同步的图形如下:时间为1时的图像 时间为8时的图像 时间为20时的图像

11、 时间为29时的图像 时间为40时的图像 时间为53时的图像 时间为66时的图像 时间为84时的图像 时间为114时的图像 (此时间集群同步性趋于稳定) 对图像结果分析我们可以得出,当时间为114时,集群以初步达到集群运动方向性的稳定状态(假设100个个体的集群中的情况为集群行动趋于同步)。具体运动动画已由Matlab实现。(程序见附录一) (二)问题二模型的建立与求解:解决个体集群躲避捕食者的集群行为,首先要了解吸引/排斥相互作用模型。吸引/排斥原则是指个体之间的相互作用具有长距离吸引和短距离排斥的性质。在自主车辆和机器人研究领域Khatib提出“人工势场”这种虚拟方法。它的基本思想是将机器

12、人在周围环境中的运动,设计成一种抽象的人造引力场中的运动,目标点对移动机器人产生“引力”,障碍物对移动机器人产生“斥力”,趋向目标点同时避开障碍物,最后通过求合力来控制移动机器人的运动。在人工势场中的群体系统动态方程可以表示为:其中表示个体的状态向量,;表示个体之间的作用强度或权值;是个体间相互作用势函数;是梯度算符;。在上式中,权系数 表示个体之间没有相互作用,通常令 。如果 ,则称个体之间的相互作用是对称的。矩阵描述了群体系统的关联/通信拓扑结构。从而在不含外部作用的吸引/排斥相互作用模型考虑考虑维欧氏空间中一个有个个体的群体模型。把每个个体视为一个点,并且忽略它们的大小。群内个体的位置记

13、为。假设同步运动且无时间延迟,所有个体同时运动且确切知道群内所有其他个体的状态。个体的运动方程为:其中表示个体间的吸引/排斥函数,每个个体的运动方向是由群内所有其他个体作用在这个个体上的吸引力/排斥力的总和决定的。吸引力/排斥力函数为:其中为正常量,满足,。函数表示的是群集内个体间的吸引/排斥函数,参数表示吸引项,而代表排斥项。该函数表示在群集内,个体距离较远情况下,个体间的关系表示为相互吸引,即作用系数占主导地位;在个体距离较近的情况下,个体间的关系表示为相互排斥,即作用系数占主导地位。当时集群内个体不会产生相互的作用力,使得群集会向一个固定方向和目标运动。定义群体中心为,由于的对称性,中心

14、对应的所有时刻都是静止的。换言之,由于是关于原点对称的,个体向个体运动正如个体向个体运动。当群内成员在其排斥范围内没有任何相邻个体时,称这样的个体成员为自由个体。即成员在时刻满足,其中是群内成员的集合。由于所有的其他成员与自由个体间的距离远远大于0 ,因此,施加在个体上的总的作用力为群内所有其他个体对其吸引力的总和,这个力是指向群体中心 的,即群内个体将向中心运动。对于每个个体,定义。若个体在时刻是自由个体,它与群体中心之间的距离大于,即,则在时刻,它将沿 减少的方向运动(即向着中心运动)。随着时间的推移,所有群内成员将会收敛于一个封闭球内:。其中,而且,收敛时间是有限的,界限为 。下面我们通

15、过排斥/吸引相互作用模型,建立躲避/追捕模型来模拟刻画鱼群躲避黑鳍礁鲨鱼的运动行为。考虑维欧式空间中运动的一个含有个个体的集群和一个目标个体(捕食者)之间的躲避和追捕行为。将每个个体视为空间中点且忽略它们的大小,假设群体中至少存在两个个体,且每个个体的运动受所有其它所有个体运动的影响,假设个体运动同步且无时间延迟。群体内个体的运动方程和捕食者的运动方程为:其中表示群体内个体的位置向量。表示群体内个体之间的吸引/排斥函数,表示目标个体对群内个体的排斥函数,反映目标个体对群内个体的排斥力;表示目标个体对群内个体的吸引函数,反映目标个体对群内个体的吸引力;表示目标个体的位置向量。选取群内个体之间的吸

16、引/排斥函数为:其中为正常数,为常数,。为个体之间的吸引函数,表示个体之间的吸引力,为个体之间的排斥函数,表示个体之间的排斥力。选取目标个体对群内个体的排斥函数为:选取目标个体对群内个体的吸引函数为:其中,为常数,均为正常数,。由的定义可知:代入群体内个体的运动方程和捕食者的运动方程得:我们取,群内个体个数为100个,捕食者个数1个,各个体位置随机确定,捕食者沿着对角线方向进行捕食的躲避捕食模型的程序动画截图如下:黑圈代表捕食者,红叉代表群内个体 以上把附图分别代表了迭代次数为11,20,29,40,52,63,75,87(次).结果分析:通过Matlab程序对运动图像的实现,我们的算法大致模

17、拟了鱼群躲避捕食者的集群行为。鱼群个体尽量与捕食者有一定的安全距离,从而尽量避免个体在捕食者附近,从而导致鱼群内部自身的调整。但是很有可能出现鱼群内部个体间的相互碰撞。由于程序假定个体在固定区域运动,从而,在程序运行中有个别从边界出现的个体进入捕食者的捕食范围。但真实情况是可以避免的,从而程序不存在这个方面的缺陷。(程序见附录二)(三)第三问的建立和求解:由于依旧是模拟种群群体运动行为,从而我们采用Boid模型,在此基础上把种群个体分为领导者与跟随者,由于两类的影响地位不一样,从而我们在规定规则时进行区分。具体阐述是领导者按照某个固定的方向运动,在整个运动过程中不受其他个体的影响,但是领导者的

18、运动会影响其他个体,从而可能使得系统中其他个体与领导者同步,假定系统中只有少数个体带有信息(知道运动路线或目的地),其他个体并不知道谁是领导者,即在不改变系统中原有个体布局规则的前提下加入几个领导者来达到预期的集群行为。对于原系统来说,领导者也只是一个普通的个体,它只是影响其邻居中的其他个体;对于带有信息的个体,它们的运动规则是周围平均方向与一优先方向的合作成为下一时步的方向,表达式为 ,为优先方向的影响权重。跟随者的运动方程为:领导者的运动方程为:假定集群中集群个体数为70个的情况下,优先方向权重。领导者比例不同的情况下,通过来确定集群系统趋于稳定时的迭代次数。由于在运动过程中速度大小不变,

19、从而迭代次数越小,在集群趋于同步时,所用的时间越少,集群行为越迅速。当领导者比例为时,集群同步过程中的截图如下: 迭代10次 迭代31次 迭代43次 迭代58次当迭代次数为58次趋于稳定。当领导者比例为时,集群同步过程中的截图如下: 迭代18次 迭代30次 迭代42次 迭代66次当迭代66次时集群趋于稳定。当领导者比例为时,集群同步过程中的截图如下: 迭代32次 迭代48次 迭代61次 迭代80次当迭代80次时集群趋于稳定。通过分析可以得到,发现群体系统越大的集群达到同步所需的领导者比例越小。在集群个体数为70不变的情况下,当优先权重分别为1,2,3的情况下,满足的迭代次数,对应的次数如图所示

20、:时,迭代60次 时,迭代50次时,迭代36次通过分析得在集群个数一定时,领导者优先权重越大,系统同步程度越高。(程序见附录三)大致比例根据参考文献图:六 模型的评价与推广在模型建立上,本题三问都是在假定速度大小恒定的情况下进行模型建立和编程实现的,使得模型在平面向量的计算上更加容易计算,减少了计算量,并且能大致有效的模拟出动物集群运动的过程。但是,考虑问题上规避了很多客观存在的因素,使得模型的仿真程度有待提高。其次,模型在引用算法上,比较单一,第二问单纯考虑了集群与捕食者的相互影响,而没有考虑其他外界因素。我们觉得在此基础上,我们还可以考虑变速情况以及采用不定环境下的集群模型对前两问进行模拟

21、仿真。在第三问,我们可以通过Agent算法对集群的内部状态进行控制,对领导者进行路径优化选择决策。这样可以更加精确的分析信息丰富者对群运动同步性的影响。总体上说,本体的模型建立还是简单可行的,有比较强的实际应用。七参考文献1 姜启源.数学模型M.高等教育出版社,20032 刘思泽.数学软件M.重庆大学理学院,20083 张德丰.MATLAB数值分析M.机械工业出版社,20114 马莉.MATLAB数学实验与建模M.清华大学出版社,20105 田宝美.基于Vicsek模型的自驱动集群动力学研究D.中国科学技术大学硕士学位论文,20096林颖婷.集群动力学基本模型探究R.八附录附录1:问题一程序代

22、码function boid2(n,eta)%generates boids in a fieldrange = 2;speed =0.3;TIME = 1000;density = 0.7;RUNS = 1;fieldsize = sqrt(n/density);pos = fieldsize*rand(n,2);heading = 2*pi*rand(n,1);relposX = zeros(n);relposY = zeros(n);neighbours = zeros(n);RelHead = zeros(n,1);B = zeros(n,1);newHeading = zeros(n

23、,1);newPos = zeros(n,2);meanHeading = zeros(TIME,1);deviationMean = zeros(n,TIME);for run=1:RUNSfor time=1:TIMEfor i=1:nfor j=1:nrelposX(i,j) = abs(pos(i,1) - pos(j,1);relposY(i,j) = abs(pos(i,2) - pos(j,2);if(sqrt(relposX(i,j)2 + relposY(i,j)2) = range)neighbours(i,j)=1;endendendfor i=1:nfor j=1:ni

24、f(neighbours(i,j)=1)relheading(i,j) = heading(j,1)-heading(i,1);endendendRelHead = sum(relheading,2);for i=1:nwhile RelHead(i,1) piRelHead(i,1) = RelHead(i,1) - pi;endendnoise = (rand(n,1)*eta) -eta/2;newHeading(:,1) = heading(:,1) + RelHead(:,1)./sum(neighbours,2) + noise(:,1);newPos(:,1) = pos(:,1

25、) + cos(newHeading(:,1)*speed;newPos(:,2) = pos(:,2) + sin(newHeading(:,1)*speed;for k=1:nwhile newPos(k,1) = fieldsizenewPos(k,1) = newPos(k,1) - fieldsize;endwhile newPos(k,2) = fieldsizenewPos(k,2) = newPos(k,2) - fieldsize;endendheading = newHeading;pos = newPos;meanHeading(time,1) = mean(headin

26、g,1);deviationMean(time,1) = mean(abs(meanHeading(time,1)-heading(:,1);scatter(pos(:,1),pos(:,2), vr);axis(0 fieldsize 0 fieldsize); xlabel(time );M(time) = getframe;endrunDev(:,run) = deviationMean(:,1);end%plot(runDev)movie2avi(M,boidtest.avi, quality,100);附录二:问题二程序代码range = 2;n=100;eta=0.8;s1=1.2

27、5;ds=3;dx=0;dy=10;speed =2;TIME = 200;density = 0.7;RUNS = 1;fieldsize = sqrt(n/density)*10;pos = fieldsize*rand(n,2);heading = 2*pi*rand(n,1);relposX = zeros(n);relposY = zeros(n);neighbours = zeros(n);RelHead = zeros(n,1);B = zeros(n,1);newHeading = zeros(n,1);newPos = zeros(n,2);meanHeading = zer

28、os(TIME,1);deviationMean = zeros(n,TIME);for run=1:RUNSfor time=1:TIMEfor i=1:nfor j=1:nrelposX(i,j) = abs(pos(i,1) - pos(j,1);relposY(i,j) = abs(pos(i,2) - pos(j,2);if(sqrt(relposX(i,j)2 + relposY(i,j)2) = range)neighbours(i,j)=1;endendendfor i=1:nfor j=1:nif(neighbours(i,j)=1)relheading(i,j) = hea

29、ding(j,1)-heading(i,1);endendendRelHead = sum(relheading,2);for i=1:nwhile RelHead(i,1) piRelHead(i,1) = RelHead(i,1) - pi;endendnoise = (rand(n,1)*eta) -eta/2;newHeading(:,1) = heading(:,1) + RelHead(:,1)./sum(neighbours,2) + noise(:,1);newPos(:,1) = pos(:,1) + cos(newHeading(:,1)*speed;newPos(:,2)

30、 = pos(:,2) + sin(newHeading(:,1)*speed;for k=1:nwhile newPos(k,1) = fieldsizenewPos(k,1) = newPos(k,1) - fieldsize;endwhile newPos(k,2) = fieldsizenewPos(k,2) = newPos(k,2) - fieldsize;endendheading = newHeading;pos = newPos;meanHeading(time,1) = mean(heading,1);deviationMean(time,1) = mean(abs(mea

31、nHeading(time,1)-heading(:,1);relposX1 = zeros(n);relposY1 = zeros(n);neighbours1 = zeros(n);for i=1:nfor j=1:nrelposX1(i,j) = abs(pos(i,1) - dx);relposY1(i,j) = abs(dy- pos(j,2);if(sqrt(relposX1(i,j)2 + relposY1(i,j)2) = ds)pos(:,1)=pos(:,1)+5*cos(0.5)*speed;pos(:,2)=pos(:,2)+4*sin(0.5)*speed;enden

32、denddx=dx+s1*0.8;dy=dy+s1*0.6;scatter(dx,dy,ok);hold onscatter(pos(:,1),pos(:,2), xr);hold offaxis(0 fieldsize 0 fieldsize); xlabel(time );M(time) = getframe;endrunDev(:,run) = deviationMean(:,1);end%plot(runDev)movie2avi(M,boidtest.avi, quality,100);附录三:问题三程序代码%实现二维空间下的swarm行为%预定义agentnum = 70; %个体

33、数worldboundary = 50; %最大边界值neighborhoodsize = 50;%邻居界限iterate = 0;%各常数值wanderConstant = 1.0; worldCenterConstant = 12.0; centerConstant = 10.0; velocityConstant = 5.0; spacingConstant = 2.0; maxVelocity = 6.0; maxAcceleration = 35.0; cruiseDistance = 0.35;%初始化position = 5 + (10-5) * rand(agentnum,2)

34、; %记录各agent的位置信息,使x,y在5-10之间取值velocity = 10 + (20-10) * rand(agentnum,2); %记录各agent的速度信息,决定着agent的位置信息,使x,y在10-20之间取值acceleration = zeros(agentnum,2); %记录各agent的加速度信息,决定着agent的速度信息%主循环while iterate = 1000 %总的运行次数 %局部变量初始化 aveVelocity = zeros(1,2); center = zeros(1,2); %初始化neighborArray,记录符合要求的各agent

35、邻居编号 neighborArray = zeros(agentnum,agentnum); %与五个常数相对应的五个向量值 wanderUrge = zeros(agentnum,2); worldCenterUrge = zeros(agentnum,2); centerUrge = zeros(agentnum,2); velocityUrge = zeros(agentnum,2); spacingUrge = zeros(agentnum,2); x = position(:,1); y = position(:,2); x1=min(x); y1=mean(y)+1.2; x2=m

36、in(x)+0.4; y2=mean(y)+1.7; x3=min(x)+0.3; y3=mean(y)+0.6; plot(x,y,.,x1,y1,or,x2,y2,or,x3,y3,or) xlim(min(x)-2 max(x)+1) ylim(min(y)-2 max(y)+1) %获取各agent的邻居信息 for i = 1:agentnum for t = 1:agentnum %不考虑位置相同的agent if x(i) = x(t) & y(i) = y(t) length = sqrt(x(t)-x(i)2 + (y(t)-y(i)2); %规定区域内并在可视范围中 if

37、length neighborhoodsize & acos(x(t)-x(i)/length) worldboundary worldCenterUrge(k,1) = worldCenterUrge(k,1) - x(k); worldCenterUrge(k,2) = worldCenterUrge(k,2) - y(k); end end %计算centerUrge for n = 1:agentnum count = 0; for m = 1:agentnum if neighborArray(n,m) = 1 %用于记录agent个数 count = count + 1; cent

38、er = center + x(m),y(m); end end if count = 0 center = center/count; centerUrge(n,:) = center - centerUrge(n,:); end end %计算velocityUrge for n = 1:agentnum count = 0; for m = 1:agentnum if neighborArray(n,m) = 1 %用于记录agent个数 count = count + 1; aveVelocity = aveVelocity + velocity(m,:); end end if co

39、unt = 0 aveVelocity = aveVelocity/count; velocityUrge(n,:) = aveVelocity - velocityUrge(n,:); end end %计算spacingUrge for n = 1:agentnum for m = 1:agentnum if neighborArray(n,m) = 1 toNeighbor = sqrt(x(m)-x(n)2 + (y(m)-y(n)2); if toNeighbor cruiseDistance spacingUrge(n,:) = spacingUrge(n,:) + toNeigh

40、bor; end end end end %单位化向量 for q = 1:agentnum wanderUrgeL = sqrt(wanderUrge(q,1)2 + wanderUrge(q,2)2); worldCenterUrgeL = sqrt(worldCenterUrge(q,1)2 + worldCenterUrge(q,2)2); centerUrgeL = sqrt(centerUrge(q,1)2 + centerUrge(q,2)2); velocityUrgeL = sqrt(velocityUrge(q,1)2 + velocityUrge(q,2)2); spacingUrgeL = sqrt(spacingUrge(q,1)2 + spacingUrge(q,2)2); if wanderUrgeL = 0 wanderUrge(q,:) = wanderUrge(q,:) / wanderUrgeL; wanderUrge(q,:) = wanderUrge(q,:)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号