目录
一、 理论简述
算法简介
这学期选修了群体智能这门课,需要对Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory这篇论文进行编程仿真,特此记录一下自己的心得体会和编程过程,以供参考,码字不易,不正之处,还望海涵。
该论文主要解决的场景和对应的算法有三个:
1. 自由空间,无目标,无障碍:即只有-agent
2. 自由空间,有目标,无障碍:即增加-agent
3. 自由空间,有目标,有障碍:即增加-agent
三种情形分别对应三种算法,-agent对应的就是群体,-agent对应障碍物,障碍物可以视为特殊的-agent,-agent则对应目标,可静止,也可运动。三种算法的难度依次递增,在论文中,作者总结出以下结论:
算法1:将会使群体形成多个片段,而不是一个整体(如论文中的figure4所示)
算法2:将会形成一个整体
算法3:在遇到障碍物时可能会被打散,但是通过障碍物后最终状态和算法2一样
运动方程
q可视为位置,可以是二维的,即(x, y),也可以是三维的,即(x, y, z);p可视为速度,维度和q一样,u则视为加速度,维度也与q一样。u是控制量,q和p将通过u进行更新,设采样周期为dt,对于第i个个体,其位置和速度最简单的更新方式为:
即先通过u更新速度p,再通过速度p更新位置q,这便是状态更新的过程,当然也可以使用其他更新公式。状态的更新并不麻烦,关键在于如何让求解控制量u,让控制量u来保证每个个体的正确运动。
核心公式
公式细节和证明建议阅读论文原文,因为这篇文章主要讲解如何进行仿真,所以这里仅给出三种算法的控制量u的更新方法,而不会过深地讲解理论(主要是更深的我也讲不出来)。三种算法,存在三种形式的控制量,即,,,根据算法的特点,决定最终的是多少。
算法1:
=
=