Swarm Flocking 经典蜂拥模型大全
文章目录
- 1. Reynold Boid 模型
- 2. Vicsek 模型
- 2.1 参考文献
- 2.2 模型定义
- 3. Cucker-Smale 模型
- 3.1 参考文献
- 3.2 模型定义
- 3. Couzin模型
- 3.1 参考文献
- 3.2 模型定义
- 3.3 控制规律
- 4. Gábor Vásárhelyi模型
- 4.1 参考文献
- 4.2 模型定义
- 4.2.1 排斥速度 Repulsion
- 4.2.2 速度对齐项 Velocity alignment term
- 4.2.3 墙壁和障碍物的作用 Interaction with walls and obstacles
- 4.2.4 自推进项 Self-propelling term
- 4.2.5 最终速度
1. Reynold Boid 模型
Boid 模型是 Reynold 在1986 年建立的一个用来模拟群体行为的空间模型,是首次针对蜂拥运动提出的著名模型。在该模型中定义了三个基本规则:
i)分离(Separation),即每个个体受到其邻域内的其他个体的排斥力的矢量和,以避免和附近的智能体碰撞。
ii)聚合(Cohesion),即每个个体受到其邻域内的其他个体的吸引力的矢量和,以保持整个团队的紧凑。
iii)速度匹配(Alignment),即让每个个体与其邻域内的其他个体的平均速度保持一致,最终使整个团队的速度趋于一致。
在此三条规则的基础上,诸多学者对蜂拥运动展开了深入研究。
2. Vicsek 模型
2.1 参考文献
Vicsek, Tamás, et al. “Novel type of phase transition in a system of self-driven particles.” Physical review letters 75.6 (1995): 1226.
2.2 模型定义
在 Vicsek 模型对中,群体中的个体可以与其周围半径为rrr内的其他个体相互作用,在仿真开始时,个体位置和速度随机分布,并且每个个体运动速度均为vvv且一直保持不变,每一步的仿真时间为Δt\Delta_{t}Δt,则个体的位置更新可以表示为:
xi(t+1)=xi(t)+vi(t)Δtx_i(t+1)=x_i(t)+v_i(t)\Delta_{t}xi(t+1)=xi(t)+vi(t)Δt
角度的更新可以表示为:
θi(t+1)=⟨θ)⟩r+Δθ\theta_i(t+1)=\left\langle {\theta)} \right\rangle_r +\Delta{\theta}θi(t+1)=⟨θ)⟩r+Δθ
其中⟨θ(t)⟩r\left\langle {\theta(t)} \right\rangle_r⟨θ(t)⟩r表示在个体iii通信范围rrr内群体中个体的平均速度(包含个体iii)。平均方向角由arctan[⟨sin(θ(t))⟩r/⟨cos(θ(t))⟩r]arctan[\left\langle {sin(\theta(t))} \right\rangle_r/ \left\langle {cos(\theta(t))} \right\rangle_r]arctan[⟨sin(θ(t))⟩r/⟨cos(θ(t))⟩r]。其中Δθ\Delta{\theta}Δθ表示噪音,是以均匀概率随机从[−η/2,η/2][-\eta/2,\eta/2][−η/2,η/2]中取得的。同时还有三个随机参数:η\etaη、ρ\rhoρ和vvv,其中vvv是粒子在两次相邻步长之间个体运动的距离。
3. Cucker-Smale 模型
3.1 参考文献
Cucker, Felipe, and Steve Smale. “Emergent behavior in flocks.” IEEE Transactions on automatic control 52.5 (2007): 852-862.
3.2 模型定义
Cucker-Smale 模型与上面的 Vicsek 模型相似,但是该模型提供了详细的收敛性证明。在该模型中位置更新函数如下:
xi(t+1)=xi(t)+vi(t)Δtx_i(t+1)=x_i(t)+v_i(t)\Delta_{t}xi(t+1)=xi(t)+vi(t)Δt
使用速度更新函数代替 Vicsek 模型中的角度更新函数
vi(t+1)−vi(t)=∑j=1kaij(vj(t)−vi(t)){{v}_{i}}(t+1)-{{v}_{i}}(t)=\sum\limits_{j=1}^{k}{{{a}_{ij}}({{v}_{j}}(t)-{{v}_{i}}(t))}vi(t+1)−vi(t)=j=1∑kaij(vj(t)−vi(t))
其中aija_{ij}aij是与个体iii和个体iii位置相关的函数
aij=η∥xi−xj∥2{{a}_{ij}}\text{=}\eta {{\left\| {{x}_{i}}-{{x}_{j}} \right\|}^{2}}aij=η∥xi−xj∥2
η(y)\eta(y)η(y)是递减函数
η(y)=K(σ2+y)β\eta (y)=\frac{K}{{{({{\sigma }^{2}}+y)}^{\beta }}}η(y)=(σ2+y)βK
3. Couzin模型
3.1 参考文献
Couzin, Iain D. , et al. “Collective Memory and Spatial Sorting in Animal Groups.” Journal of Theoretical Biology 218.1(2002):1-11.
3.2 模型定义
个体在原点中心处,并将其周围空间划分为三个区域:zorzorzor = 排斥区,zoozoozoo = 速度匹配区,zoazoazoa = 吸引区。同时改模型还考虑个体的“盲区”,其位于个体背后,即个体只能感知α\alphaα范围内的信息。
3.3 控制规律
该模型控制分为三个阶段分别对应于zorzorzor,zoozoozoo和zoazoazoa 三个区域。其中优先级最高的为zorzorzor。
1)当个体iii视野内的zorzorzor区域内有个体时,(忽略背后360-α\alphaα范围内的个体),其受到zorzorzor区域内个体的排斥,则下一时刻的速度可以表示为:
dr(t+τ)=−∑j≠inrrij(t)∣rij(t)∣{{d}_{r}}(t+\tau )=-\sum\limits_{j\ne i}^{{{n}_{r}}}{\frac{{{r}_{ij}}(t)}{|{{r}_{ij}}(t)|}}dr(t+τ)=−j=i∑nr∣rij(t)∣rij(t)
其中rij=cj−cicj−ci∣r_{ij}=\frac{c_j-c_i}{c_j-c_i|}rij=cj−ci∣cj−ci,cic_ici和cjc_jcj分别表示个体iii和jjj的位置矢量,nrn_rnr表示位于个体iii的zorzorzor区域内的其他个体的数量。
2)当个体iii视野内的zorzorzor区域内没有其他个体时,即nr=0n_r=0nr=0,这时个体对zoozoozoo和zoazoazoa 区域中的个体做出反应。
- 对于zoozoozoo区域内个体:
do(t+τ)=−∑j≠inovj(t)∣vj(t)∣{{d}_{o}}(t+\tau )=-\sum\limits_{j\ne i}^{{{n}_{o}}}{\frac{{{v}_{j}}(t)}{|{{v}_{j}}(t)|}}do(t+τ)=−j=i∑no∣vj(t)∣vj(t)
- 对于zoazoazoa区域内个体:
da(t+τ)=−∑j≠inarij(t)∣rij(t)∣{{d}_{a}}(t+\tau )=-\sum\limits_{j\ne i}^{{{n}_{a}}}{\frac{{{r}_{ij}}(t)}{|{{r}_{ij}}(t)|}}da(t+τ)=−j=i∑na∣rij(t)∣rij(t)
其中non_ono和nan_ana分别为位于个体iii的zoozoozoo和zoazoazoa 区域中的个体的数量,vjv_jvj表示个体jjj的速度矢量。
最终下一时刻个体iii的期望速度di(t+τ)d_i(t+\tau)di(t+τ)定义为:
1)若zorzorzor区域内有其他个体,即nr≠0n_r \ne 0nr=0,则
di(t+τ)=dr(t+τ)d_i(t+\tau)=d_r(t+\tau)di(t+τ)=dr(t+τ)
2)若zorzorzor区域内没有其他个体,即nr=0n_r=0nr=0,则:
- 若zoozoozoo区域内有其他个体,zoazoazoa区域内没有,即no≠0n_o \ne0no=0且na=0n_a=0na=0,则
di(t+τ)=do(t+τ)d_i(t+\tau)=d_o(t+\tau)di(t+τ)=do(t+τ) - 若zoazoazoa区域内有其他个体,zoozoozoo区域内没有,即na≠0n_a \ne0na=0且no=0n_o=0no=0,则
di(t+τ)=da(t+τ)d_i(t+\tau)=d_a(t+\tau)di(t+τ)=da(t+τ) - 若zoozoozoo区域和内zoazoazoa曲云均有其他个体,即no≠0n_o \ne0no=0且na≠0n_a \ne0na=0,则
di(t+τ)=12[do(t+τ)+da(t+τ)]d_i(t+\tau)=\frac{1}{2}[d_o(t+\tau)+d_a(t+\tau)]di(t+τ)=21[do(t+τ)+da(t+τ)]
确定下一时刻的期望速度di(t+τ)d_i(t+\tau)di(t+τ)后,个体iii在下一时刻从当前速度vi(t)v_i(t)vi(t)向速度di(t+τ)d_i(t+\tau)di(t+τ)转动角度θ\thetaθ,得到下一时刻速度vi(t+τ)v_i(t+\tau)vi(t+τ),这里的θ\thetaθ应该小于最大转动角度θτ\theta_{\tau}θτ。至此,该模型建立完毕。
4. Gábor Vásárhelyi模型
4.1 参考文献
Vásárhelyi Gábor, et al. “Optimized flocking of autonomous drones in confined environments.” Science Robotics 3.20(2018):eaat3536-.
4.2 模型定义
一个可调的自推植绒模型
4.2.1 排斥速度 Repulsion
当个体iii与其周围的个体jjj的距离小于距离阈值r0repr^{rep}_0r0rep时,个体jjj对个体iii产生排斥速度项。个体iii周围r0repr^{rep}_0r0rep距离内没有其他个体时,该项为0。则排斥速度项定义如下:
vijrep={prep⋅(r0rep−rij)⋅ri−rjrijifrij<r0rep0otherwisev_{ij}^{rep}=\left\{ \begin{matrix} {{p}^{rep}}\cdot (r_{0}^{rep}-{{r}_{ij}})\cdot \frac{{{r}_{i}}-{{r}_{j}}}{{{r}_{ij}}} & if\text{ }{{r}_{ij}}<r_{0}^{rep} \\ 0 & otherwise \\ \end{matrix} \right.vijrep={prep⋅(r0rep−rij)⋅rijri−rj0if rij<r0repotherwise
其中vijrepv_{ij}^{rep}vijrep为个体iii收到个体jjj的影响产生的速度项,prepp^{rep}prep为排斥速度项的增益系数(线性增益)。
如下图所示,左边蓝色斜线为vijrepv_{ij}^{rep}vijrep在参数r=10r=10r=10、p=1p=1p=1、v=10v=10v=10时的的排斥速度项。
因此,个体iii最终排斥速度项定义如下:
virep=∑j≠ivijrepv_{i}^{rep}=\sum\limits_{j\ne i}{v_{ij}^{rep}}virep=j=i∑vijrep
4.2.2 速度对齐项 Velocity alignment term
以往的工作通常使用幂律函数,使个体与群体内其他个体的速度差在空间中渐近衰减为零。这些模型在较低速度范围内的某些特定条件下可以正常工作。速度对齐项也必须充当阻尼介质,以减少由于对例如斥力的延迟和噪声导致的自激振荡现象。它必须是局部的,但同时还必须具有可扩展性,以适应较大的速度(因为可能存在较大的速度差异)。最后一个条件意味着如果限制了代理的加速度,则应在速度差较大时应该放宽制动距离,以避免碰撞。
因此文中使用理想的制动曲线,即空间中平滑的速度衰减函数D(.)D(.)D(.):在高速时保持恒定加速度,在低速时保持指数速度,其定义如下:
D(r,a,p)={0ifr≤0rpif0<rp<a/p2ar−a2/p2otherwiseD(r,a,p)=\left\{ \begin{matrix} 0 & if\text{ }r\le 0 \\ rp & if\text{ }0<rp<a/p \\ \sqrt{2ar-{{a}^{2}}/{{p}^{2}}} & otherwise \\ \end{matrix} \right.D(r,a,p)=⎩⎨⎧0rp2ar−a2/p2if r≤0if 0<rp<a/potherwise
其中,rrr是代理与预期停止点之间的距离,aaa是首选加速度,ppp是线性增益,ppp还确定了减速的两个阶段之间的交叉点。
速度对齐项的基本原理是禁止给定距离上的两个代理在此距离之外的速度差大于此理想制动曲线所允许的值,因此在其他基于瞬时力的方程式中用作运动规划项,该项定义如下:
vijfrictmax=max(vfrict,D(rij−r0frict,africt,pfrict))v_{ij}^{frict\max }=\max ({{v}^{frict}},D({{r}_{ij}}-r_{0}^{frict},{{a}^{frict}},{{p}^{frict}}))vijfrictmax=max(vfrict,D(rij−r0frict,africt,pfrict))
vijfrict={cfrict(vij−vijfrictmax)⋅vi−vjvijif vij>vijfrictmax0otherwisev_{ij}^{frict}=\left\{ \begin{matrix} {{c}^{frict}}({{v}_{ij}}-v_{ij}^{frict\max })\cdot \frac{{{v}_{i}}-{{v}_{j}}}{{{v}_{ij}}} & \text{if }{{v}_{ij}}>v_{ij}^{frict\max } \\ 0 & \text{otherwise} \\ \end{matrix} \right.vijfrict={cfrict(vij−vijfrictmax)⋅vijvi−vj0if vij>vijfrictmaxotherwise
在上面的等式中,CfrictC^{frict}Cfrict是速度对准误差减小的线性系数;vfrictv^{frict}vfrict是速度松弛,以允许一定量的速度差,而与代理之间的距离无关,r0frictr^{frict}_0r0frict是代理iii与个体jjj相关且还没有到达个体jjj所在位置的停止点的距离。pfrictp^{frict}pfrict和africta^{frict}africt是线性增益和对齐的加速度参数,并且vij=∣vi−vj∣v_{ij} = | v_i − v_j |vij=∣vi−vj∣是代理iii和iii之间的速度差值。 为代理iii计算的相对于其他代理的总速度对齐项(与排斥项类类似)似,其定义为:
vifrict=∑j≠ivijfrictv_{i}^{frict}=\sum\limits_{j\ne i}{v_{ij}^{frict}}vifrict=j=i∑vijfrict
4.2.3 墙壁和障碍物的作用 Interaction with walls and obstacles
文章使用竞技台对群体进行吸引和约束,并替代了传统群体对群体的吸引力。群体中的个体朝着竞技场飞行,进入竞技场后个体受到竞技场墙壁的排斥力,以确保个体在竞技场内运动。
visshillmax=D(ris,r0shill,ashill,pshill)v^{shillmax}_{is}=D(r_{is},r^{shill}_0,a^{shill},p^{shill})visshillmax=D(ris,r0shill,ashill,pshill)
vijwall=vijfrict(C−1)={(vis−visshillmax)⋅vi−vsvisif vis>visshallmax0otherwise(9)\begin{aligned} & v_{ij}^{wall}=v_{ij}^{frict}(C-1) \\ & =\left\{ \begin{matrix} ({{v}_{is}}-v_{is}^{shill\max })\cdot \frac{{{v}_{i}}-{{v}_{s}}}{{{v}_{is}}} & \text{if }{{v}_{is}}>v_{is}^{shall\max } \\ 0 & \text{otherwise} \\ \end{matrix} \right. \end{aligned} \tag{9}vijwall=vijfrict(C−1)={(vis−visshillmax)⋅visvi−vs0if vis>visshallmaxotherwise(9)
其中不允许壁的速度松弛,因此将误差比例项(CshillC^{shill}Cshill)保持为1,以实现最强的墙壁对齐。在上面的等式中,sss是指分别为所有墙多边形边缘定义的代理; ris=∣ri−rs∣r_{is} = | r_i-r_s |ris=∣ri−rs∣,其中rsr_srs是墙壁代理的位置,位于任意形状的凸壁多边形的边缘,且相对于代理iii的最近点;vis=∣vi−vs∣v_{is} = | v_i − v_s |vis=∣vi−vs∣,其中vsv_svs是竞技场代理的速度,垂直于竞技场指向内部,幅度为vshillv^{shill}vshill。
可以使用相同的概念来避免在竞技场内出现凸形障碍物,但是与上文针对竞技场所描述的不同,这里代理需要远离障碍物而不是向其内移动。另一个区别是,所有竞技场的墙壁会在其内部生成一个分离的代理,但障碍物却是在障碍物靠近个体iii的表面生成一个代理。因此,对于每个智能体iii和障碍物sss,我们都可以定义速度分量障碍,其类似于方程式 9,使用与竞技场相同的参数。
4.2.4 自推进项 Self-propelling term
该项保证个体iii可以一直保持在运动状态,与实际速度方向viv_ivi相同,其大小为固定值vflockv^{flock}vflock。
4.2.5 最终速度
最终个体iii的期望速度综合上述各项,其定义为:
v~id=vi∣vi∣vflock+virep+vifrict+∑sviswall+∑svisobstacle\tilde{v}_{i}^{d}=\frac{{{v}_{i}}}{\left| {{v}_{i}} \right|}{{v}^{flock}}+v_{i}^{rep}+v_{i}^{frict}+\sum\limits_{s}{v_{is}^{wall}}+\sum\limits_{s}{v_{is}^{obstacle}}v~id=∣vi∣vivflock+virep+vifrict+s∑viswall+s∑visobstacle
除此之外,最终速度仍需满足约束条件,即,引入速度限制vmaxv^{max}vmax如果超出极限,则减小其大小:
vid=v~id∣v~id∣⋅min{∣v~id∣,vmax}v_{i}^{d}=\frac{\tilde{v}_{i}^{d}}{\left| \tilde{v}_{i}^{d} \right|}\cdot \min \{\left| \tilde{v}_{i}^{d} \right|,{{v}^{\max }}\}vid=∣∣v~id∣∣v~id⋅min{∣∣v~id∣∣,vmax}
Swarm Flocking 经典蜂拥模型大全相关推荐
- 中式古建筑su模型大全
中式古建筑su模型大全 sketchup草图大师古建塔亭子寺庙名楼民居古建筑中式su模型素材 sketchup模型 古代建筑 古代房屋 古镇 古代街景 古代商业街 古代园林 阁楼 寺庙 含各类古建筑模 ...
- 经典SQL语句大全、50个常用的sql语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
- 常用经典SQL语句大全完整版--详解+实例 (存)
常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012 http://blog.sina.com.cn/s/blog_84 ...
- 2020-12-09 深度学习 经典CNN模型计算量与内存需求分析
经典CNN模型计算量与内存需求分析 表1 CNN经典模型的内存,计算量和参数数量对比 AlexNet VGG16 Inception-v3 模型内存(MB) >200 >500 90-10 ...
- TF之TFSlim:利用经典VGG16模型(InceptionV3)在ImageNet数据集基础上训练自己的五个图像类别数据集的训练过程记录
TF之TFSlim:利用经典VGG16模型(InceptionV3)在ImageNet数据集基础上训练自己的五个图像类别数据集的训练过程记录 目录 训练控制台显示 输出结果文件 训练控制台显示 输出结 ...
- 【NLP】经典分类模型朴素贝叶斯解读
贝叶斯分类器在早期的自然语言处理任务中有着较多实际的应用,例如大部分的垃圾邮件处理都是用的贝叶斯分类器.贝叶斯分类器的理论对于理解后续的NLP模型有很大的进益,感兴趣的小伙伴一定要好好看看,本文会详细 ...
- 经典SQL语句大全 收藏
经典SQL语句大全 收藏 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...
- 交通建模必学——经典瓶颈模型
点击蓝字 关注我们 / 朱 婷 婷 路虽远,行则将至! 事虽难,做则必成! 单一瓶颈通勤廊道是指一条连接住宿地与中心商业区(CBD)的高速路,道路上有一条通行能力有限的瓶颈.一般是由车辆驶入匝道.交织 ...
- Python工程能力进阶、数学基础、经典机器学习模型实战、深度学习理论基础和模型调优技巧……胜任机器学习工程师岗位需要学习什么?...
咱不敢谈人工智能时代咋样咋样之类的空话,就我自己来看,只要是个营收超过 5 亿的互联网公司,基本都需要具备机器学习的能力.因为大部分公司盈利模式基本都会围绕搜索.推荐和广告而去. 就比如极客时间,他的 ...
最新文章
- linux中如何改IP
- 不恢复余数除法原理_青岛版二年级下册数学寒假预习:有余数的除法自主练习答案及讲解...
- http和https的区别与联系
- 子查询三(在FROM子句中使用子查询)
- net软件安装后不能卸载的解决方法
- 一步步编写avalon组件03:切换卡组件
- 状态机finite-state machine学习笔记2——按键消抖初步(1)
- 微信小程序的弹窗提示
- 什么是POE交换机?POE交换机的作用
- 颜色模型HSB-这么强大的工具,你居然还不知道?
- Hibernate 主键使用注解 @SequenceGenerator
- 利用python写一个简单的双色球彩票系统
- linux ftp下载文件到本地,如何使用get指令利用FTP下载文件到本地
- android assets资源使用——深入浅出
- vue中文版Dash文档
- 详解1247:河中跳房子(二分经典例题)
- 脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计二
- AI助力生命科学创新范式变革 正突破新药研发“双十”困局
- 快嘴阿里旺旺群发王 2007 官方
- 如何使用eclipse创建service(教程)
热门文章
- RT-Thread简介
- 验证座机号码(中国 如:010-XXXXXXXX)
- Hulu面试题连载重启 | 百面深度学习 发刊词
- 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...
- 关于UEM 统一终端管理
- Unkown host ‘raw.githubusercontent.com‘以及超时问题
- 南京邮电大学计算机考研专硕初试经验分享
- golang浅拷贝与深拷贝
- MySQL——MySQL高可用之PXC
- 老杨刷完了23个跨年演讲,这6场最适合网工