欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    动物集群行为的建模与仿真.doc

    • 资源ID:4015741       资源大小:879.50KB        全文页数:30页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    动物集群行为的建模与仿真.doc

    动物集群行为的建模与仿真摘要生态系统中,动物个体的行为相对简单,集群后却能表现出复杂的群体行为。个体行为是构成群体行为的基础,个体之间的组织结构、个体行为之间的关系和群体行为的涌现机制是研究群体行为的关键要素。本文首先基于boid模型的三原则,从个体出发,对动物个体进行建模,分析个体之间的行为规则及相互影响,从而仿真出动物的集群行为。仿真结果在一定程度上反映了动物集群行为的实际情况,但该模型对各个参数的设置非常敏感,动物群体的速度不会趋于稳定一致,而且此模型假设各动物的速率相等且保持不变是不合理的,所以对模型进行了改进。改进模型引入了势场函数,将个体之间的相互作用抽象成吸引力和排斥力,利用牛顿运动定理描述个体运动规律。通过仿真结果发现,动物个体会先调整各自的间距,使其相互靠近以免落单,但又不至于相互碰撞;当动物个体之间的距离接近平衡距离时,动物个体会保持相对位置基本不变,调整各自的速度方向使趋近一致并平稳;另外,个体数目越多,出现落单的可能性就越小。上述结论都是符合实际情况的,说明改进后的模型更合理。鱼群躲避鲨鱼的行为,可以认为是由鲨鱼对鱼群的排斥力引起的,所以在原有合力的基础上再加上由鲨鱼引起的斥力即得到小鱼发现鲨鱼后的合力。仿真得到的结果反映,当有鲨鱼出没时,鱼群会迅速改变运动状态,逃离鲨鱼的攻击。动物群中的信息丰富者可以理解成Leader-Follower模型中的Leader,其他个体都是Follower。结合问题一中改进的模型和Leader-Follower模型,通过matlab编程仿真得到的结果反映了Leader对整个群体的作用和影响。关键词:集群行为 boid模型 势函数 leader-follower模型 matlab仿真1 问题重述在动物界,通常有一些动物会成群地行动,它们在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。近几十年来,智能群体(flockswarm)的协调控制问题引起了研究人员的极大关注。最近在通信,计算技术,以及相关问题在生物学,社会行为学,统计物理,计算机图形学方面的进展,大大推动了此领域 的研究。研究动物集群运动的机理,建立数学模型刻画动物集群运动、躲避威胁等行为,对智能群体(flockswarm)的协调控制问题有重要地作用。从以下几个方面分析建模:1. 建立数学模型模拟动物的集群运动。 2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位置信息,掌握迁徙路线信息),建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。2 模型假设1. 假设所有动物个体都可以看成质点;2. 假设动物群体中的决策者会通过一种特殊信息(气味,动作等)通知其他个体。3 符号说明 动物的位置向量; 动物与动物的相对位置向量; 动物的瞬时速度; 动物的加速度; 动物个体的最大速率; 动物个体之间的平衡距离; 动物个体的感知半径; 动物与动物之间的势场函数; 动物对动物的作用力; 动物的邻居个数;4模型建立与模型求解4.1 动物集群运动的建模与仿真动物集群行为由三部分因素构成:环境、个体、行为规则。环境是个体的生存空间,个体在环境中活动,收集环境中的各种信息(食物,障碍,敌人等等);个体的特性(感知范围,速度,加速度等)制约了个体的运动,而个体的总和构成了研究的群体对象;群体的演化过程由其行为规则集来控制,行为规则决定了个体与个体之间、个体与环境之间相互作用的方式。由于该问不考虑动物觅食、避险等行为,只研究动物的集群行为,所以在这里忽略环境对动物行为的影响,假设动物的活动范围无穷大。4.11 个体的描述把每个动物个体看成是一个能够自主决策的智能体,它们会根据自己的观察来感知周围的环境,并按照一定的规则决策。个体之间的交互作用是局部的,只能发生在所定义的邻域内。个体应当具有以下属性:(1)感知范围:个体所能感知的范围。个体的感知范围取决于所定义邻域半径的大小和个体与领域之间的夹角(本文中),感知范围越大,表明该个体与其它个体的作用越强,如下图所示:图一 感知范围示意图(2)位置:个体位置向量由一组坐标(x, y,z)表示。(3)速度:每个个体在运动时都具有一定的速度,它是瞬时的,具有大小和方向,用向量(x,y,z)表示。(4)加速度:个体改变速度大小的能力。 (5)最大速度:每个个体的速度不可能无限增长,具有一个最大值。(6)平衡距离:个体之间的平衡距离。当个体间的距离小于该值时,个体将朝着远离的方向运动。当个体之间的距离大于该值时,个体将朝着接近的方向运动。 4.12 行为规则的描述1987年,Reynolds2提出了一个模仿动物集群的计算机仿真模型,叫做Boid模型,Boid模型基于如下3条启发式规则: 1)分离(separation):避免与邻近的群成员发生碰撞。 2)调整(alignment):试图与邻近的群成员保持速度匹配。 3)聚合(cohesion):试图与邻近的群成员保持接近。 Reynolds最近的论文3对以上三条规则做了详细的解释,所以这三条规则是可信的。1.分离原则的实现 首先定义一个概念,当前动物能感知到的个体称为邻居。当某动物和它的邻居靠的太近时,这些邻居的中心会排斥该动物,使其向相反方向离开,此时的排斥邻居中心为观察范围内且相对距离小于平衡距离的各个体所在位置的平均值。图二 分离原则示意图排斥邻居中心的公式表示为: (1)表示为,为排斥邻居中心位置,为各排斥邻居的位置,为排斥邻居的数目。该动物由于分离原则所产生的运动方向用一个向量来表示,即为: (2)其中,表示当前动物的位置坐标。2.聚合原则的实现每个个体都有向邻居中心靠拢的特性,邻居中心为感知范围内且相对距离大于平衡距离的各个体所在位置的平均值(如图三所示的绿色个体):图三 聚合原则示意图中心位置的计算公式与排斥邻居中心位置的计算类似,用表示某动物由于聚合原则所产生的运动方向用向量来表示,计算公式如下: (3)3.调整原则的实现个体会不断调整自己的运动方向,尽量和它的邻居保持一致。如下图所示:图四 调整原则示意图某动物由于调整原则产生的运动方向向量为,公式表示为: (4)unite是将向量进行单位化,因为方向向量是用单位向量表示的。为各个邻居的速度,N为邻居的个数。假设每个动物个体都要遵守以上三条规则,这三条规则对改动物个体下一时刻运动方向起作用。但动物个体的运动方向不可能立刻改变,还表现了某种惯性的作用。这种惯性作用阻止运动方向的改变,设为: (5)为当前动物个体的速度。设为下个周期动物个体的运动方向向量,计算公式如下:(6)分别为分离原则,聚合原则,调整原则,惯性引起的方向向量。是权重,反映各规则对动物个体运动的影响程度,不同的动物取值有差异。设个体运动速度速率为,那么个体k的位置迭代公式为: (7)4.1.3仿真结果假设动物的运动速率,感知半径,平衡距离,各权重,取时间步长为0.1s,根据以上三个原则以及惯性所确定的位置迭代方程,通过matlab编程仿真,我们得到了动物个体集群行为的仿真动态图,下面分别给出仿真的初始状态,5s,10s的仿真结果:图五 初始状态图六 5s时的仿真结果图七 10s的仿真结果图中箭头方向表示个体的速度方向,分析图五、六、七,初始状态各动物个体的速度方向是随机的,杂乱无章,而且位置相对分散。而5s时各动物个体的速度方向趋近一致,位置也相对集中了,但速度方向并未高度一致,根据聚合原则,它们还会朝着集合的趋势运动。所以到了10s时,动物个体高度集中,此时分离原则将会占主导地位,所以从图七可以看出它们的速度方向都是背离的。从以上这些方面分析,此模型在一定程度上能够反映动物的集群行为。但是,该模型对各个参数的设置非常敏感,我们试着将参数设置成不同的值,发现仿真的结果有较大的区别,这就导致很难找到一组参数使动物群体的运动速度和相对位置趋于平稳并收敛于某个值,这对很多动物群体是不适用的。同时此模型假设各动物的速率相等且保持不变,而且动物的速度在一瞬间就可以到达期望的方向,这显然是不合理的,所以我们对模型进行了改进。4.1.3基于势函数的模型修正根据牛顿运动定律,动物个体的运动都可以用位移、速度、加速度来描述,用公式表示如下: (8)上式的变化范围从1到N,N为群体中动物的总数目,表示动物的位置向量,那么两个动物个体的相对位置向量为。由牛顿第二定理,为合外力,m为质量。上述的分离原则和聚合原则,可以抽象成排斥力和吸引力,这样可以求出动物个体的加速度,避免了速率不变的假设。动物个体之间有一个平衡距离,当时,两者之间表现为吸引力;当时,两者之间表现为排斥力。这一现象类似于分子之间的作用力,由物理知识可知,分子之间的作用力是由势场引起的,所以在这里引入了势函数来描述动物个体之间的吸引力和排斥力。势函数的定义4:一对相邻动物个体和的势函数是可微、非负、关于相邻个体和之间的间距径向无界的,并且:(1)当时,;(2)当相邻个体和之间达到希望的平衡间距时,即时,取其唯一的极小值。本文选取相邻个体和之间的势函数为: (9)其中c为常数,由物理知识可知,相邻个体和之间所产生的力为: (10)表示个体对个体的作用力,下图给出上式所描述的相邻个体和间的势函数及其产生的排斥力或吸引力随的变化曲线。图八 势函数及其产生的力从上图可以看出,当时,个体和之间表现为排斥力;当,个体和个体之间表现为吸引力;当,个体和之间既不吸引也不排斥,此时势能最小。那么,个体受到的合力的向量形式为: (11)个体由于受到周围邻居的吸引力和排斥力所引起的加速度为: (12)为个体周围邻居的个数。由三个基本原则可知,每一个个体都要尽量与其他个体的速度保持一致,这也会引起当前个体速度的改变。邻居的速度方向引起个体速度的改变可以由下图表示:图九 速度一致原则速度一致原则引起个体的加速度取各邻居引起的加速度的平均值为: (13)那么,合成加速度为,那么个体运动迭代公式为: (14)式中为时间步长。假设动物的最大运动速率,最大加速度,感知半径,平衡距离,质量,为了使动物群体尽快地达到稳定状态,我们设置所有动物个体的初始速度方向指向第一象限,但具体方向随机产生,取时间步长为0.1s,根据上述迭代公式进行仿真,下面分别给出初始状态、2.5s,5s, 10s的仿真结果:图十 初始状态图十一 2.5s时的仿真结果图十二 5s时的仿真结果图十三 10s时的仿真结果图中箭头方向为个体的速度方向,从以上四幅图可以看出,初始状态位置分散,而且速度方向不一致;到了2.5s时动物个体的位置集中起来,但速度方向杂乱无章,这说明动物群体会先调整各自的间距,使它们相互靠近以免落单,但又不至于相互碰撞;到了5s时,动物个体之间的相对位置基本不变,但速度方向更趋近于一致,这说明动物个体调整好各自的间距后,会在保持相对位置基本不变的基础上,调整各自的速度使其尽量保持一致;到了10s时,个体之间的速度方向已经高度一致,而且个体之间的间距没有发生大的变化,但从坐标上来看,它们的位置已经发生了变化,这证明了前一观点。10s以后的仿真图没有给出,但从10s以后的仿真结果来看,动物群体基本保持此间距和速度方向往前运动,但会有波动。从仿真结果来看,我们还发现了另一结论,当某一群体的个体数目越少时,越容易发生落单的现象,下面分给出10个、30个、60个个体在10s时的仿真结果:图十四 10个、30个、60个个体在10s时的仿真从图十四可以看出,当个体只有10个时,各个体朝四周运动,基本不存在集群行为;而当个体为30个时,大部分个体集群在一起,而且速度能趋近一致,但是有少部分个体会落单,速度朝着远离群体的方向;当个体达到60个时,所有个体都集群在一起,而且速度基本一致,不存在落单的现象。所以,在自然界中,动物(如鸟类,鱼类等)的集群行为通常是成千上万的个体,很少出现几十个个体集群的现象,这样能保证所有个体都不会落单。4.2 鱼群躲避鲨鱼行为的建模与仿真问题一中的模型只考虑了个体之间的相互影响,而忽视了环境对个体运动的影响,而动物的行为常常会受到环境因素(敌人,障碍,食物等)的影响。例如当鱼群遇到鲨鱼时,会改变自己的运动方向以躲避鲨鱼的攻击。鱼群的这种行为,可以看成是当鲨鱼进入鱼群的感知范围时,鱼群受到鲨鱼的排斥力而改变了它们的运动方向,而小鱼之间的相互作用力也存在,这就相当于在第一问式(11)求得合力的基础上再加一个较大的排斥力,修改(11)式如下: (15)其中,表示鲨鱼对小鱼(该条小鱼能感知到鲨鱼)的排斥力,k为常数;,为小鱼与鲨鱼之间的相对位置。小鱼运动的迭代公式和(14)相同,设小鱼最大运动速率,最大加速度,质量,感知半径,平衡距离,常数,设鲨鱼的初始位置是随机的,但沿一个方向匀速运动,运动速率1.25,仿真时间步长为0.1s。为了较明显地看到鱼群逃逸效果,matlab编程是在二维空间实现的,下面给出初始状态,2s,4s,7s的仿真结果:图十五 初始状态的鲨鱼和小鱼图十六 仿真2s后的鲨鱼和小鱼图十七 仿真4s后的鲨鱼和小鱼图十八 仿真7s后的鲨鱼和小鱼上面四幅图中红色的点为鲨鱼,其它小点都是小鱼。从图中可以看出,当有鲨鱼出没时,鱼群会迅速改变运动状态,逃离鲨鱼的攻击。到7s时,鱼群已经成功逃离了鲨鱼的追捕。4.3 Leader-Follower的动物集群行为的建模与仿真在上述模型的基础上,可以将其分为有决策者Leader和追随者Followers的集群运动。群体中的信息丰富者即为决策者,当其掌握到有用信息后,会向其他成员散布一种信息(气味、动作、声音等),此信息会影响到其他成员的运动,即Followers会追随Leader的运动。Leader的运动是自主的,属于单agent控制问题,而为了构造稳定的集群运动系统,Followers需要服从相应的有序化集群运动控制律。在该模型中,若Follower 接收到Leader的信息,影响它运动加速度的因素有两个:(1)Leader的运动;(2)邻居的运动。若Follower 未接收到Leader的信息,则只受邻居运动的影响。考虑一个包含Leader-Followers的群体,Follower 的运动控制律 可定义为(1)速度矢量: Leader的速度矢量(2)加速度: Leader的加速度其中:为平衡agent之间速度的控制矢量,为控制agent之间距离的控制矢量项。此模型用matlab编程后,仿真结果为:图十九 初始状态图二十 5秒后的仿真结果图二十一 20秒后的仿真结果图二十二 30秒后的仿真结果上图中,圆圈表示决策者Leader,蓝点表示追随者Followers,绿色箭头为运动方向。可以看到,初始状态时,各个agent的运动随机生成,是杂乱无章的。5秒后Followers的速度方向基本与Leader的速度方向保持一致,跟随Leader运动;20秒后,Leader的运动方向发生改变(实际中可以认为是发现危险或是食物),其他Followers的运动方向随之进行相应的调整;30秒后Followers的运动方向又基本与Leader的方向一致。这样,作为一个决策者的Leader,就起到了领导其他Followers的作用。在实际的动物集群行为里,角色Leader是由先掌握有用信息的部分agents充当的,它们通过散布特殊信息(该群体特有的气味、动作、声音等)向其他agents告知掌握的信息。随之,可以接收到信息agents作为Followers跟随Leader的运动(这里假设凡是掌握有用信息的agents都具有正确的决策能力)。那些不能接收到Leader特殊信息的agents则通过邻居的运动保证不脱离整个群体而间接地达到跟随Leader的目的。5模型评价模型优点:1. 利用势函数的概念,将动物个体之间的相互作用抽象为吸引力和排斥力,这样的描述合理形象,而且克服了原模型中不合理的假设,使得仿真结果更加符合动物集群行为的客观规律。2. 对每一个模型都用matlab软件进行了仿真,仿真程序很好地实现了理论算法,仿真结果将抽象的运算数据转变为了形象的图形,而且实际情况非常相近。模型缺点:1. 由于计算机的运算能力有限,只能得到较少数量的动物集群行为的仿真结果,没能得到现实情况中大量动物集群行为的仿真结果。 2.仿真得到的结果虽然很好地反映了实际情况,但动物个体的速度方向会不断震荡。6模型改进与推广1.模型改进(1)在第一问基于势函数的模型中,当agents间达到平衡间距即时,达到最小势能,此状态最稳定,agents都朝着这个平衡间距移动,但由于惯性的作用,agents的间距会在平衡间距附近震荡,导致不能尽快地达到平衡状态。这是由势函数平衡间距的单值性引起的,可在势函数中将平衡间距设为一个适当的范围,使其尽快到达平衡状态。(2)在第三问的Leader-Follower模型中,只限定了决策者的数量为一个。实际中是有多个信息丰富者的即Leaders,可将模型改进为多个Leaders对Followers的领导。而且leaders的充当者会时时地改变,合理地处理Leaders间的决策冲突以及Leaders角色变换中的衔接过程,可以更真实地仿真实际中的Leader-Follower群体决策问题。2. 模型推广我们的模型可推广到机器群的控制中,通过模拟动物集群行为,可将机器群中的每个个体看成agent,其中有Leaders与followers,agents之间会通过一定的约束关系使其保持一种稳定的队形。只需通过控制Leaders的运动状态,可以使Followers自动达到与Leaders运动一致的状态,简化了控制程序。参考文献1 王正林,刘明.精通matlab7.北京:电子工业出版社,2008。2REYNOLDS C W.Flocks,herds,andschools:a distributed behavioral model.Computer Graphics,21(4):25-34,1987.3 REYNOLDS C W.Steering behaviors for autonomous charactersCSan Francisco,CA:Miller Freeman Game Group,1999:7637824 贾秋玲.基于势函数的多机器人系统的编队控制.机器人,28(2):112-113,2006.附录附件:程序一:%此程序实现boid模型的仿真clear all %实现三维空间下的swarm行为 %预定义 agentnum =50; %个体数 maxneighborhoodsize =10;%最大邻居界限 iterate = 1; %迭代次数初值%各常数值velocity = 5.0; cruiseDistance = 5; %最小碰撞距离%初始化 position = 5+(10-5) * rand(agentnum,3); %记录各agent的位置信息,使x,y,z在5-10之间取值for i=1:agentnumv(i,1)= velocity * cos(2*pi*rand(1,1); %记录各agent的速度信息v(i,2)= velocity * cos(2*pi*rand(1,1);v(i,3)= velocity * cos(2*pi*rand(1,1);end%主循环 while iterate <= 1000 %总的运行次数 %初始化neighborArray,记录符合要求的各agent邻居编号 neighborArray = zeros(agentnum,agentnum); neighborArray1 = zeros(agentnum,agentnum); neighborArray2 = zeros(agentnum,agentnum); %figure(iterate)%连续绘图命令 x = position(:,1); y = position(:,2); z = position(:,3); for i=1:agentnum D1t(i,1)=(v(i,1)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,2)=(v(i,2)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,3)=(v(i,3)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); end %计算速度v for i=1:agentnum plot3(x(i),y(i),z(i),'.'); hold on; quiver3(x(i),y(i),z(i),0.5*D1t(i,1),0.5*D1t(i,2),0.5*D1t(i,3); %给各点加上箭头以表示每个点的速度方向 hold on; end hold off; xlim(min(x)-2 max(x)+1) %使坐标系合理的调节 ylim(min(y)-2 max(y)+1) zlim(min(z)-2 max(z)+1) %获取各agent的邻居信息 for i = 1:agentnum for t = 1:agentnum %不考虑位置相同的agent if x(i) = x(t) && y(i) = y(t) && z(i) = z(t) length = sqrt(x(t)-x(i)2 + (y(t)-y(i)2+(z(t)-z(i)2); %规定区域内并在可视范围中 if length < maxneighborhoodsize && acos(x(t)-x(i)/length) < 2.6167 neighborArray(i,t)=1; end if length>cruiseDistance && length < maxneighborhoodsize && acos(x(t)-x(i)/length) < 2.6167 %对相应邻居进行标注 neighborArray1(i,t) = 1; elseif length<cruiseDistance && acos(x(t)-x(i)/length) < 2.6167 neighborArray2(i,t)=1; end end end end %计算靠近规则下平均每条鱼附近的大于碰撞距离鱼的平均位置方向D2t for n = 1:agentnum count = 0; aveposition1=0,0,0 for m = 1:agentnum if neighborArray1(n,m) = 1 %用于记录agent个数 count = count + 1; aveposition1 = aveposition1 + x(m),y(m),z(m); end end if count = 0 aveposition1 = aveposition1/count; %aveposition1表示平均每条鱼附近的大于碰撞距离的鱼的平均位置 end a(1,1)=aveposition1(1,1)-position(n,1); a(1,2)=aveposition1(1,2)-position(n,2); a(1,3)=aveposition1(1,3)-position(n,3); D2t(n,1)= a(1,1)/sqrt(a(1,1)2+a(1,2)2+a(1,3)2);%计算平均位置角度D2t D2t(n,2)=a(1,2)/sqrt(a(1,1)2+a(1,2)2+a(1,3)2); D2t(n,3)=a(1,3)/sqrt(a(1,1)2+a(1,2)2+a(1,3)2); end %计算同向原则下的速度平均方向D3t for n = 1:agentnum count = 0; direction=0; for m = 1:agentnum if neighborArray(n,m) = 1 %用于记录agent个数 count = count + 1; D3t(count,1)=v(m,1)/sqrt(v(m,1)2+v(m,2)2+v(m,3)2); D3t(count,2)=v(m,2)/sqrt(v(m,1)2+v(m,2)2+v(m,3)2); D3t(count,3)=v(m,3)/sqrt(v(m,1)2+v(m,2)2+v(m,3)2); end end D3t(n,4)=sum(D3t(count,1)/count; D3t(n,5)=sum(D3t(count,2)/count; D3t(n,6)=sum(D3t(count,3)/count; end %计算避免碰撞原则下平均每条鱼附近的小于碰撞距离鱼的位置方向D4t for n = 1:agentnum count = 0; aveposition2=0,0,0 for m = 1:agentnum if neighborArray2(n,m) = 1 %用于记录agent个数 count = count + 1; aveposition2 = aveposition2 + x(m),y(m),z(m); end end if count = 0 aveposition2 = aveposition2/count; %aveposition1表示平均每条鱼附近的大于碰撞距离鱼的平均位置 end b(1,1)=position(n,1)-aveposition2(1,1); b(1,2)=position(n,2)-aveposition2(1,2); b(1,3)=position(n,3)-aveposition2(1,3); D4t(n,1)=(b(1,1)/sqrt(b(1,1)2+b(1,2)2+b(1,3)2);%计算平均位置角度D4t D4t(n,2)=(b(1,2)/sqrt(b(1,1)2+b(1,2)2+b(1,3)2); D4t(n,3)=(b(1,3)/sqrt(b(1,1)2+b(1,2)2+b(1,3)2); end for i=1:agentnum D1t(i,1)=(v(i,1)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,2)=(v(i,2)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,3)=(v(i,3)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); end %计算速度v lamda1=0.25; lamda2=0.25; lamda3=0.35; lamda4=0.15; for n=1:agentnum Dt(n,1)=lamda1*D1t(n,1)+lamda2*D2t(n,1)+lamda3*D3t(n,4)+lamda4*D4t(n,1); Dt(n,2)=lamda1*D1t(n,2)+lamda2*D2t(n,2)+lamda3*D3t(n,5)+lamda4*D4t(n,2); Dt(n,3)=lamda1*D1t(n,3)+lamda2*D2t(n,3)+lamda3*D3t(n,6)+lamda4*D4t(n,3); v(n,1)=velocity*(Dt(n,1); v(n,2)=velocity*(Dt(n,2); v(n,3)=velocity*(Dt(n,3); end %记录时间 time = 0.1; %依据速度v跟新各agent的位置信息,x=x+v*t. for i = 1:agentnum position(i,1) = position(i,1) + v(i,1) * time; position(i,2) = position(i,2) + v(i,2) * time; position(i,3) = position(i,3) + v(i,3) * time; end iterate = iterate+1; pause(time)end 程序二:%此程序实现基于势函数的模型的仿真clear all clc%实现三维空间下的swarm行为 %预定义 agentnum =40%个体数 maxneighborhoodsize =10;%最大邻居界限 iterate = 1; %迭代次数初值k=1.5; %平衡距离m=1; %质量R=40; %最大边界值%各常数值 maxvelocity=3;%最大速度maxaccleration=2 % 最大加速度%初始化 position = (10-5) * rand(agentnum,3); %记录各agent的位置信息,使x,y,z在5-10之间取值lamda1=1lamda2=1for i=1:agentnum %随机生成各个agent的速度向量为0到2 v(i,1)= 2 * rand(1,1); v(i,2)= 2 * rand(1,1); v(i,3)= 2 * rand(1,1);end%主循环 while iterate <= 1000 %总的运行次数 figure(iterate) x = position(:,1); y = position(:,2); z = position(:,3); for i=1:agentnum D1t(i,1)=(v(i,1)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,2)=(v(i,2)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); D1t(i,3)=(v(i,3)/sqrt(v(i,1)2+v(i,2)2+v(i,3)2); end %计算velocityUrge for i=1:agentnum plot3(x(i),y(i),z(i),'.'); hold on; quiver3(x(i),y(i),z(i),D1t(i,1),D1t(i,2),D1t(i,3); %为每个点标上箭头表示运动的速度方向 hold on; end

    注意事项

    本文(动物集群行为的建模与仿真.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开