Flocking for Multi-Agent Dynamic Systems: Algorithms and Theory的理论简述和python仿真实现(附源码)

本文简述了Flocking for Multi-Agent Dynamic Systems的理论,并提供了Python代码实现,涵盖自由空间无目标、有目标无障碍及有目标有障碍三种情况的算法,包括2D和3D仿真结果。
摘要由CSDN通过智能技术生成

目录

一、 理论简述

算法简介

运动方程

核心公式

其他公式

二、python核心代码

三个控制量的获取

状态更新

三、python仿真结果

算法1

2D仿真结果

3D仿真结果

算法2

2D仿真结果

3D仿真结果

算法3

2D仿真结果


一、 理论简述

算法简介

        这学期选修了群体智能这门课,需要对Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory这篇论文进行编程仿真,特此记录一下自己的心得体会和编程过程,以供参考,码字不易,不正之处,还望海涵。

该论文主要解决的场景和对应的算法有三个:

1. 自由空间,无目标,无障碍:即只有\alpha-agent

2. 自由空间,有目标,无障碍:即增加\gamma-agent

3. 自由空间,有目标,有障碍:即增加\beta-agent

        三种情形分别对应三种算法,\alpha-agent对应的就是群体,\beta-agent对应障碍物,障碍物可以视为特殊的\alpha-agent,\gamma-agent则对应目标,可静止,也可运动。三种算法的难度依次递增,在论文中,作者总结出以下结论:

算法1:将会使群体形成多个片段,而不是一个整体(如论文中的figure4所示)

算法2:将会形成一个整体

算法3:在遇到障碍物时可能会被打散,但是通过障碍物后最终状态和算法2一样

运动方程

\left\{\begin{matrix} \dot{q}=p&\\ \dot{p}=u & \end{matrix}\right.

        q可视为位置,可以是二维的,即(x, y),也可以是三维的,即(x, y, z);p可视为速度,维度和q一样,u则视为加速度,维度也与q一样。u是控制量,q和p将通过u进行更新,设采样周期为dt,对于第i个个体,其位置和速度最简单的更新方式为

\left\{\begin{matrix} p_{i +1} = p_{i} + u_{i} * dt& \\ q_{i+1} = q_{i} + p_{i+1} * dt & \end{matrix}\right.

        即先通过u更新速度p,再通过速度p更新位置q,这便是状态更新的过程,当然也可以使用其他更新公式。状态的更新并不麻烦,关键在于如何让求解控制量u,让控制量u来保证每个个体的正确运动。

核心公式

        公式细节和证明建议阅读论文原文,因为这篇文章主要讲解如何进行仿真,所以这里仅给出三种算法的控制量u的更新方法,而不会过深地讲解理论(主要是更深的我也讲不出来)。三种算法,存在三种形式的控制量,即u_{i}^{\alpha}u_{i}^{\beta}u_{i}^{\gamma},根据算法的特点,决定最终的u_{i}是多少。

算法1:

u_{i} = u_{i}^{\alpha}

u_{i}^{\alpha} = 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱哭的熊孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值