1、动物集群行为的建模与仿真摘要生态系统中,动物个体的行为相对简单,集群后却能表现出复杂的群体行为。个体行为是构成群体行为的基础,个体之间的组织结构、个体行为之间的关系和群体行为的涌现机制是研究群体行为的关键要素。本文首先基于 boid 模型的三原则,从个体出发,对动物个体进行建模,分析个体之间的行为规则及相互影响,从而仿真出动物的集群行为。仿真结果在一定程度上反映了动物集群行为的实际情况,但该模型对各个参数的设置非常敏感,动物群体的速度不会趋于稳定一致,而且此模型假设各动物的速率相等且保持不变是不合理的,所以对模型进行了改进。改进模型引入了势场函数,将个体之间的相互作用抽象成吸引力和排斥力,利用
2、牛顿运动定理描述个体运动规律。通过仿真结果发现,动物个体会先调整各自的间距,使其相互靠近以免落单,但又不至于相互碰撞;当动物个体之间的距离接近平衡距离时,动物个体会保持相对位置基本不变,调整各自的速度方向使趋近一致并平稳;另外,个体数目越多,出现落单的可能性就越小。上述结论都是符合实际情况的,说明改进后的模型更合理。鱼群躲避鲨鱼的行为,可以认为是由鲨鱼对鱼群的排斥力引起的,所以在原有合力的基础上再加上由鲨鱼引起的斥力即得到小鱼发现鲨鱼后的合力。仿真得到的结果反映,当有鲨鱼出没时,鱼群会迅速改变运动状态,逃离鲨鱼的攻击。动物群中的信息丰富者可以理解成 Leader-Follower 模型中的 L
3、eader,其他个体都是 Follower。结合问题一中改进的模型和 Leader-Follower 模型,通过 matlab 编程仿真得到的结果反映了 Leader 对整个群体的作用和影响。关键词:集群行为 boid 模型 势函数 leader-follower 模型 matlab 仿真1 问题重述在动物界,通常有一些动物会成群地行动,它们在运动过程中具有很明显的特征:群中的个体聚集性很强,运动方向、速度具有一致性。近几十年来,智能群体(flockswarm)的协调控制问题引起了研究人员的极大关注。最近在通信,计算技术,以及相关问题在生物学,社会行为学,统计物理,计算机图形学方面的进展,大大
4、推动了此领域 的研究。研究动物集群运动的机理,建立数学模型刻画动物集群运动、躲避威胁等行为,对智能群体(flock swarm) 的协调控制问题有重要地作用。从以下几个方面分析建模:1. 建立数学模型模拟动物的集群运动。 2. 建立数学模型刻画鱼群躲避黑鳍礁鲨鱼的运动行为。3. 假定动物群中有一部分个体是信息丰富者(如掌握食物源位置信息,掌握迁徙路线信息) ,建模分析它们对于群运动行为的影响,解释群运动方向决策如何达成。2 模型假设1. 假设所有动物个体都可以看成质点;2. 假设动物群体中的决策者会通过一种特殊信息(气味,动作等)通知其他个体。3 符号说明动物 的位置向量;iPi动物 与动物
5、的相对位置向量;ij j动物 的瞬时速度;iVi动物 的加速度;ia动物个体的最大速率;mxv动物个体之间的平衡距离;bd动物个体的感知半径;sR动物 与动物 之间的势场函数;ijVij动物 对动物 的作用力;ijFji动物 的邻居个数;iNi4 模型建立与模型求解4.1 动物集群运动的建模与仿真动物集群行为由三部分因素构成:环境、个体、行为规则。环境是个体的生存空间,个体在环境中活动,收集环境中的各种信息(食物,障碍,敌人等等) ;个体的特性(感知范围,速度,加速度等)制约了个体的运动,而个体的总和构成了研究的群体对象;群体的演化过程由其行为规则集来控制,行为规则决定了个体与个体之间、个体与
6、环境之间相互作用的方式。由于该问不考虑动物觅食、避险等行为,只研究动物的集群行为,所以在这里忽略环境对动物行为的影响,假设动物的活动范围无穷大。4.11 个体的描述把每个动物个体看成是一个能够自主决策的智能体,它们会根据自己的观察来感知周围的环境,并按照一定的规则决策。个体之间的交互作用是局部的,只能发生在所定义的邻域内。个体应当具有以下属性:(1)感知范围 :个体所能感知的范围。个体的感知范围取决于所定义邻域半径的sR大小和个体与领域之间的夹角(本文中 ) ,感知范围越大,表明该个体与其angle150它个体的作用越强,如下图所示:图一 感知范围示意图(2)位置 :个体位置向量由一组坐标(x
7、, y,z)表示。P(3)速度 :每个个体在运动时都具有一定的速度,它是瞬时的,具有大小和方向,V用向量(x,y,z)表示。(4)加速度 :个体改变速度大小的能力。 a(5)最大速度 :每个个体的速度不可能无限增长,具有一个最大值。mx(6)平衡距离 :个体之间的平衡距离。当个体间的距离小于该值时,个体将朝着远bd离的方向运动。当个体之间的距离大于该值时,个体将朝着接近的方向运动。4.12 行为规则的描述1987 年,Reynolds2提出了一个模仿动物集群的计算机仿真模型,叫做 Boid 模型,Boid 模型基于如下 3 条启发式规则: 1)分离(separation):避免与邻近的群成员发
8、生碰撞。 2)调整(alignment):试图与邻近的群成员保持速度匹配。 3)聚合(cohesion):试图与邻近的群成员保持接近。 Reynolds 最近的论文3对以上三条规则做了详细的解释,所以这三条规则是可信的。1.分离原则的实现 首先定义一个概念,当前动物能感知到的个体称为邻居。当某动物和它的邻居靠的太近时,这些邻居的中心会排斥该动物,使其向相反方向离开,此时的排斥邻居中心为观察范围内且相对距离小于平衡距离的各个体所在位置的平均值。图二 分离原则示意图排斥邻居中心的公式表示为:(1)=eieePN表示为 ,为排斥邻居中心位置, 为各排斥邻居的位置,eP,exyz ,eieixyz为排
9、斥邻居的数目。N该动物由于分离原则所产生的运动方向用一个向量 来表示,即为:11=,Dt(2)012220001222000122200-=-+-=-+-ee eee eee exyyxzyy其中, 表示当前动物的位置坐标。0,xyz2.聚合原则的实现每个个体都有向邻居中心靠拢的特性,邻居中心为感知范围内且相对距离大于平衡距离的各个体所在位置的平均值(如图三所示的绿色个体):图三 聚合原则示意图中心位置的计算公式与排斥邻居中心位置的计算类似,用 表示,aaPxyz某动物由于聚合原则所产生的运动方向用向量 来表示,计算公式22=,Dt如下:(3)022220022220022220-=-+-y-
10、z=-+-aaaaaaxzxyz3.调整原则的实现个体会不断调整自己的运动方向,尽量和它的邻居保持一致。如下图所示:图四 调整原则示意图某动物由于调整原则产生的运动方向向量为 ,公式表示为:33=,Dt(4)3uniteivDtNunite 是将向量进行单位化,因为方向向量是用单位向量表示的。 为各个邻居的iv速度,N 为邻居的个数。假设每个动物个体都要遵守以上三条规则,这三条规则对改动物个体下一时刻运动方向起作用。但动物个体的运动方向不可能立刻改变,还表现了某种惯性的作用。这种惯性作用阻止运动方向的改变,设为:(5)440,uniteDtv为当前动物个体的速度。0v设 为下个周期动物个体的运
11、动方向向量,计算公式+1=,+1,tttt如下:(6)123441DttDttDt分别为分离原则,聚合原则,调整原则,惯性引起的方向1234 tt、 、 、向量。 是权重,反映各规则对动物个体运动的影响程度,不同的动物取、 、 、值有差异。设个体运动速度速率为 ,那么个体 k 的位置迭代公式为:=nv(7)-1+-kknkkknxtvtyyztt4.1.3 仿真结果假设动物的运动速率 ,感知半径 ,平衡距离 ,各权重=5nv=3sR=2bd,取时间步长为 0.1s,根据以上三个原则以及惯性所1234=0.5,.,0.,.2确定的位置迭代方程,通过 matlab 编程仿真,我们得到了动物个体集群
12、行为的仿真动态图,下面分别给出仿真的初始状态,5s,10s 的仿真结果:图五 初始状态 图六 5s 时的仿真结果图七 10s 的仿真结果图中箭头方向表示个体的速度方向,分析图五、六、七,初始状态各动物个体的速度方向是随机的,杂乱无章,而且位置相对分散。而 5s 时各动物个体的速度方向趋近一致,位置也相对集中了,但速度方向并未高度一致,根据聚合原则,它们还会朝着集合的趋势运动。所以到了 10s 时,动物个体高度集中,此时分离原则将会占主导地位,所以从图七可以看出它们的速度方向都是背离的。从以上这些方面分析,此模型在一定程度上能够反映动物的集群行为。但是,该模型对各个参数的设置非常敏感,我们试着将
13、参数设置成不同的值,发现仿真的结果有较大的区别,这就导致很难找到一组参数使动物群体的运动速度和相对位置趋于平稳并收敛于某个值,这对很多动物群体是不适用的。同时此模型假设各动物的速率相等且保持不变,而且动物的速度在一瞬间就可以到达期望的方向,这显然是不合理的,所以我们对模型进行了改进。4.1.3 基于势函数的模型修正根据牛顿运动定律,动物个体的运动都可以用位移 、速度 、加速度 来描述,iPivia用公式表示如下:(8)=iidPvta上式 的变化范围从 1 到 N,N 为群体中动物的总数目, 表示 动物的i =,iiiPxyz位置向量,那么两个动物个体的相对位置向量为 。-iji由牛顿第二定理
14、, , 为合外力,m 为质量。上述的分离原则和聚合=Fa原则,可以抽象成排斥力和吸引力,这样可以求出动物个体的加速度,避免了速率不变的假设。动物个体之间有一个平衡距离 ,当 时,两者之间表现为吸引力;bdijbP当 时,两者之间表现为排斥力。这一现象类似于分子之间的作用力,由物理知ijbPd,个体 和个体 之间表现为吸引力;当 , ,个体 和 之间既不吸引0ijFi =ijbPd0ijFij也不排斥,此时势能最小。那么,个体 受到的合力的向量形式为:i(11)=1iNijjF个体 由于受到周围邻居的吸引力和排斥力所引起的加速度为:i(12)1iam为 个体周围邻居的个数。iN由三个基本原则可知
15、,每一个个体都要尽量与其他个体的速度保持一致,这也会引起当前个体速度的改变。邻居 的速度方向引起个体 速度的改变可以由下图表示:j i图九 速度一致原则速度一致原则引起 个体的加速度 取各邻居 引起的加速度的平均值为:i2iaj(13)=12-Njiiiv那么,合成加速度为 ,那么个体 运动迭代公式为:1+iia(14)2+=iiiiiiiPttvtat式中 为时间步长。t假设动物的最大运动速率 ,最大加速度 ,感知半径 ,平衡距离max3vmax=2=5sR,质量 ,为了使动物群体尽快地达到稳定状态,我们设置所有动物个体的=1.5bd1初始速度方向指向第一象限,但具体方向随机产生,取时间步长
16、为 0.1s,根据上述迭代公式进行仿真,下面分别给出初始状态、2.5s,5s, 10s 的仿真结果:图十 初始状态 图十一 2.5s 时的仿真结果图十二 5s 时的仿真结果 图十三 10s 时的仿真结果图中箭头方向为个体的速度方向,从以上四幅图可以看出,初始状态位置分散,而且速度方向不一致;到了 2.5s 时动物个体的位置集中起来,但速度方向杂乱无章,这说明动物群体会先调整各自的间距,使它们相互靠近以免落单,但又不至于相互碰撞;到了 5s 时,动物个体之间的相对位置基本不变,但速度方向更趋近于一致,这说明动物个体调整好各自的间距后,会在保持相对位置基本不变的基础上,调整各自的速度使其尽量保持一
17、致;到了 10s 时,个体之间的速度方向已经高度一致,而且个体之间的间距没有发生大的变化,但从坐标上来看,它们的位置已经发生了变化,这证明了前一观点。10s 以后的仿真图没有给出,但从 10s 以后的仿真结果来看,动物群体基本保持此间距和速度方向往前运动,但会有波动。从仿真结果来看,我们还发现了另一结论,当某一群体的个体数目越少时,越容易发生落单的现象,下面分给出 10 个、30 个、60 个个体在 10s 时的仿真结果:图十四 10 个、30 个、60 个个体在 10s 时的仿真从图十四可以看出,当个体只有 10 个时,各个体朝四周运动,基本不存在集群行为;而当个体为 30 个时,大部分个体
18、集群在一起,而且速度能趋近一致,但是有少部分个体会落单,速度朝着远离群体的方向;当个体达到 60 个时,所有个体都集群在一起,而且速度基本一致,不存在落单的现象。所以,在自然界中,动物(如鸟类,鱼类等)的集群行为通常是成千上万的个体,很少出现几十个个体集群的现象,这样能保证所有个体都不会落单。4.2 鱼群躲避鲨鱼行为的建模与仿真问题一中的模型只考虑了个体之间的相互影响,而忽视了环境对个体运动的影响,而动物的行为常常会受到环境因素(敌人,障碍,食物等)的影响。例如当鱼群遇到鲨鱼时,会改变自己的运动方向以躲避鲨鱼的攻击。鱼群的这种行为,可以看成是当鲨鱼进入鱼群的感知范围时,鱼群受到鲨鱼的排斥力而改
19、变了它们的运动方向,而小鱼之间的相互作用力也存在,这就相当于在第一问式(11)求得合力的基础上再加一个较大的排斥力,修改(11)式如下:(15)=1+iNijisjPF其中 ,表示鲨鱼对 小鱼(该条小鱼能感知到鲨鱼)的排斥力,k 为常数;2=-isikFPi,为 小鱼与鲨鱼之间的相对位置。iis小鱼运动的迭代公式和(14)相同,设小鱼最大运动速率 ,最大加速度max=3v,质量 ,感知半径 ,平衡距离 ,常数 ,设鲨鱼的初始位max21=5sR=1.5bd10k置是随机的,但沿一个方向匀速运动,运动速率 1.25,仿真时间步长为 0.1s。为sv了较明显地看到鱼群逃逸效果,matlab 编程是
20、在二维空间实现的,下面给出初始状态,2s,4s,7s 的仿真结果:图十五 初始状态的鲨鱼和小鱼 图十六 仿真 2s 后的鲨鱼和小鱼图十七 仿真 4s 后的鲨鱼和小鱼 图十八 仿真 7s 后的鲨鱼和小鱼上面四幅图中红色的点为鲨鱼,其它小点都是小鱼。从图中可以看出,当有鲨鱼出没时,鱼群会迅速改变运动状态,逃离鲨鱼的攻击。到 7s 时,鱼群已经成功逃离了鲨鱼的追捕。4.3 Leader-Follower 的动物集群行为的建模与仿真在上述模型的基础上,可以将其分为有决策者 Leader 和追随者 Followers 的集群运动。群体中的信息丰富者即为决策者,当其掌握到有用信息后,会向其他成员散布一种信
21、息(气味、动作、声音等) ,此信息会影响到其他成员的运动,即 Followers 会追随 Leader 的运动。Leader 的运动是自主的,属于单 agent 控制问题,而为了构造稳定的集群运动系统,Followers 需要服从相应的有序化集群运动控制律。在该模型中,若 Follower 接i收到 Leader 的信息,影响它运动加速度的因素有两个:(1)Leader 的运动;(2)邻居的运动。若 Follower 未接收到 Leader 的信息,则只受邻居运动的影响。i考虑一个包含 Leader-Followers 的群体,Follower 的运动控制律 可定义为iia= i iLFava
22、m(1)速度矢量 : Leader 的速度矢量Lv(2)加速度 : Leader 的加速度a其中: 为平衡 agent 之间速度的控制矢量, 为控制 agent 之间距离的控制矢量项。此模型用 matlab 编程后,仿真结果为:图十九 初始状态 图二十 5 秒后的仿真结果图二十一 20 秒后的仿真结果 图二十二 30 秒后的仿真结果上图中,圆圈表示决策者 Leader,蓝点表示追随者 Followers,绿色箭头为运动方向。可以看到,初始状态时,各个 agent 的运动随机生成,是杂乱无章的。5 秒后Followers 的速度方向基本与 Leader 的速度方向保持一致,跟随 Leader 运
23、动;20 秒后,Leader 的运动方向发生改变(实际中可以认为是发现危险或是食物) ,其他 Followers的运动方向随之进行相应的调整;30 秒后 Followers 的运动方向又基本与 Leader 的方向一致。这样,作为一个决策者的 Leader,就起到了领导其他 Followers 的作用。在实际的动物集群行为里,角色 Leader 是由先掌握有用信息的部分 agents 充当的,它们通过散布特殊信息(该群体特有的气味、动作、声音等)向其他 agents 告知掌握的信息。随之,可以接收到信息 agents 作为 Followers 跟随 Leader 的运动(这里假设凡是掌握有用信
24、息的 agents 都具有正确的决策能力) 。那些不能接收到 Leader 特殊信息的 agents 则通过邻居的运动保证不脱离整个群体而间接地达到跟随 Leader 的目的。5 模型评价模型优点:1. 利用势函数的概念,将动物个体之间的相互作用抽象为吸引力和排斥力,这样的描述合理形象,而且克服了原模型中不合理的假设,使得仿真结果更加符合动物集群行为的客观规律。2. 对每一个模型都用 matlab 软件进行了仿真,仿真程序很好地实现了理论算法,仿真结果将抽象的运算数据转变为了形象的图形,而且实际情况非常相近。模型缺点:1. 由于计算机的运算能力有限,只能得到较少数量的动物集群行为的仿真结果,没
25、能得到现实情况中大量动物集群行为的仿真结果。2.仿真得到的结果虽然很好地反映了实际情况,但动物个体的速度方向会不断震荡。6 模型改进与推广1.模型改进(1)在第一问基于势函数的模型中,当 agents 间达到平衡间距即 时,达到=ijbPd最小势能,此状态最稳定,agents 都朝着这个平衡间距移动,但由于惯性的作用,agents 的间距会在平衡间距附近震荡,导致不能尽快地达到平衡状态。这是由势函数平衡间距的单值性引起的,可在势函数中将平衡间距设为一个适当的范围,使其尽快到达平衡状态。minmaxbbd(2)在第三问的 Leader-Follower 模型中,只限定了决策者的数量为一个。实际中
26、是有多个信息丰富者的即 Leaders,可将模型改进为多个 Leaders 对 Followers 的领导。而且 leaders 的充当者会时时地改变,合理地处理 Leaders 间的决策冲突以及Leaders 角色变换中的衔接过程,可以更真实地仿真实际中的 Leader-Follower 群体决策问题。2. 模型推广我们的模型可推广到机器群的控制中,通过模拟动物集群行为,可将机器群中的每个个体看成 agent,其中有 Leaders 与 followers,agents 之间会通过一定的约束关系使其保持一种稳定的队形。只需通过控制 Leaders 的运动状态,可以使 Followers自动达
27、到与 Leaders 运动一致的状态,简化了控制程序。参考文献1 王正林,刘明.精通 matlab7.北京:电子工业出版社,2008。2 REYNOLDS 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、机器人系统的编队控制.机器人,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
29、: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 cruiseDistance %对邻居速度进行分类Xaver=X/count;Yaver=Y/count;Zaver=Z/count;else Xaver=x(i);Yaver=y(i);Zaver=z(i);endaccleration1_x(i,1)=Xaver-v(i,
30、1); %计算调整原则影响的加速度accleration1_y(i,1)=Yaver-v(i,2);accleration1_z(i,1)=Zaver-v(i,3);Fx(i,1)=sum(fx(:,i); %计算第 i 个点个方向的合力及加速度accleration_x(i,1)=Fx(i,1)/m;Fy(i,1)=sum(fy(:,i);accleration_y(i,1)=Fy(i,1)/m;Fz(i,1)=sum(fz(:,i);accleration_z(i,1)=Fz(i,1)/m; Xaccleration(i,1)=lamda1*accleration1_x(i,1)+lamd
31、a2*accleration_x(i,1); %计算各个方向综合加速度Yaccleration(i,1)=lamda1*accleration1_y(i,1)+lamda2*accleration_y(i,1);Zaccleration(i,1)=lamda1*accleration1_z(i,1)+lamda2*accleration_z(i,1);accleration=sqrt(Xaccleration(i,1)2+Yaccleration(i,1)2+Zaccleration(i,1)2)cos_a1=Xaccleration(i,1)/accleration;cos_b1=Yaccl
32、eration(i,1)/accleration;cos_c1=Zaccleration(i,1)/accleration;if acclerationmaxaccleration %对加速度进行限制使其在-maxaccleration 到 maxaccleration 之间accleration=maxacclerationXaccleration(i,1)=maxaccleration*cos_a1;Yaccleration(i,1)=maxaccleration*cos_b1;Zaccleration(i,1)=maxaccleration*cos_c1;else accleration
33、maxvelocityV(i,1)=maxvelocityv(i,1)=maxvelocity*cos_a2;v(i,2)=maxvelocity*cos_b2;v(i,3)=maxvelocity*cos_c2; endif sqrt(position(i,1)2+position(i,2)2+position(i,3)2)=R %对运动范围进行约束使其运动范围为半径 R 的圆v(i,1)=-v(i,1);v(i,2)=-v(i,2);v(i,3)=-v(i,3); end end %依据 velocity 跟新各 agent 的位置信息,x=x+v*t. for i=1:agentnump
34、osition(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;enditerate = iterate+1;pause(time)end 程序三:%此程序实现鱼群躲避鲨鱼攻击的模型clear all clc%实现三维空间下的 swarm 行为 %预定义 agentnum =40%个体数 maxneighborhoodsize =10;%最大邻居界限 iterate = 1; %迭代次数初值k=1.5; %平衡距离m=1;
35、 %质量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 到 2v(i,1)= 2 * rand(1,1);v(i,2)= 2 * rand(1,1);v(i,3)= 2 * rand(1,1);end%主循环 while iterate 0; %对邻居速度
36、进行分类Xaver=X/count;Yaver=Y/count;Zaver=Z/count;else Xaver=x(i);Yaver=y(i);Zaver=z(i);endaccleration1_x(i,1)=Xaver-v(i,1); %计算调整原则影响的加速度accleration1_y(i,1)=Yaver-v(i,2);accleration1_z(i,1)=Zaver-v(i,3);Fx(i,1)=sum(fx(:,i); %计算第 i 个点个方向的合力及加速度accleration_x(i,1)=Fx(i,1)/m;Fy(i,1)=sum(fy(:,i);accleration
37、_y(i,1)=Fy(i,1)/m;Fz(i,1)=sum(fz(:,i);accleration_z(i,1)=Fz(i,1)/m; Xaccleration(i,1)=lamda1*accleration1_x(i,1)+lamda2*accleration_x(i,1); %计算各个方向综合加速度Yaccleration(i,1)=lamda1*accleration1_y(i,1)+lamda2*accleration_y(i,1);Zaccleration(i,1)=lamda1*accleration1_z(i,1)+lamda2*accleration_z(i,1);accler
38、ation=sqrt(Xaccleration(i,1)2+Yaccleration(i,1)2+Zaccleration(i,1)2)cos_a1=Xaccleration(i,1)/accleration;cos_b1=Yaccleration(i,1)/accleration;cos_c1=Zaccleration(i,1)/accleration;if acclerationmaxaccleration %对加速度进行限制使其在-maxaccleration 到 maxaccleration 之间accleration=maxacclerationXaccleration(i,1)=m
39、axaccleration*cos_a1;Yaccleration(i,1)=maxaccleration*cos_b1;Zaccleration(i,1)=maxaccleration*cos_c1;else acclerationmaxvelocityV(i,1)=maxvelocityv(i,1)=maxvelocity*cos_a2;v(i,2)=maxvelocity*cos_b2;v(i,3)=maxvelocity*cos_c2; endif sqrt(position(i,1)2+position(i,2)2+position(i,3)2)=R %对运动范围进行约束使其运动范围
40、为半径 R 的圆v(i,1)=-v(i,1);v(i,2)=-v(i,2);v(i,3)=-v(i,3); end end %依据 velocity 跟新各 agent 的位置信息,x=x+v*t. for i=1:agentnumposition(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;enditerate = iterate+1;pause(time)end 程序四:%该程序用以实现有决策者的模型的仿真clea
41、r all clc%实现三维空间下的 swarm 行为 %预定义 agentnum =40%个体数 maxneighborhoodsize =4;%最大邻居界限 iterate = 1; %迭代次数初值k=1; %平衡距离m=10;R=8; %最大边界值%各常数值 maxvelocityl=2; %领导者最大速度maxvelocity=2.5;%最大速度maxaccleration=2 % 最大加速度%初始化 position =5* rand(agentnum,3)-2.5; %记录各 agent 的位置信息,使 x,y,z 在 0-5之间取值%positionl= (10-5) * ran
42、d(1,3)A=3; %势场函数的系数s=0.5; %最佳距离lamda1=0.5;lamda2=2;%领导者在 s 时刻的位置、速度、加速度信息xl=-2;yl=-2;zl=-2;vxl=-0.1;vyl=-0.1;vzl=-0.1;axl=-0.1;ayl=-0.1;azl=-0.1;for i=1:agentnum %随机生成各个 agent 的速度向量为 0 到 2v(i,1)= 2 * rand(1,1);v(i,2)= 2 * rand(1,1);v(i,3)= 2 * rand(1,1);end%主循环 while iterate maxacclerationaccleratio
43、n=maxacclerationXaccleration(i,1)=maxaccleration*cos_a1;Yaccleration(i,1)=maxaccleration*cos_b1;Zaccleration(i,1)=maxaccleration*cos_c1;else acclerationmaxvelocity %对速度进行约束使其在 0 到 maxvelocity之间V(i,1)=maxvelocityv(i,1)=maxvelocity*cos_a2;v(i,2)=maxvelocity*cos_b2;v(i,3)=maxvelocity*cos_c2; endend vxl=vxl+axl*time;vyl=vyl+ayl*time;vzl=vzl+azl*time;