基于多领导者智能体的Olfati算法matlab仿真

简介: 基于多领导者智能体的Olfati算法matlab仿真

1.算法描述

   人们通过群体行为的研究可以揭示群体智能的产生,群体智能是自组织的过程,将简单的个体通过交互作用或协作表现出来整体智能行为的特性称为“群体智能”。

“群体智能”应用到的算法有哪些?

群体智能可以应用到优化算法中,如遗传优化算法、蚁群优化算法、粒子群优化算法等。另一方面,受群体智能行为的启发,人们可以借鉴生物的智慧,将群体智能应用到多机器人系统协同控制的研究,通过设计一定的控制算法或应用群体智能优化算法,可以使系统整体呈现出所期望的行为。

群体无人机和群体智能的联系:

    群体无人机的英文名称为Swarm UAVs,是指由一组无人机构成的群体。目前对于群体无人机的定义目前还没有一个明确的定论,但从有关群体机器人的文献来看,比较一致的观点是:群体无人机是由一组具有自主能力的同构无人机构成的群体系统,群中无人机是具备局部通信和感知能力的相对简单自治个体,群体中没有集中的控制单元,但众多无人机的群体行为却能体现群体智能的特性。

   群体无人机作为一种受群体智能启发的特殊多无人机系统,除了具有一般多无人机系统的特点外,还具有自身的优点:

1)群体系统结构是基于局部感知或通信的分布式体系结构,采用分布式控制策略,因此,系统具有很强的可扩展性;

2)群体中的个体相对简单,使得无人机的物理实现更加容易,生产成本低;

3)采用分布式控制策略,群体具有自组织的协调控制能力,群体系统对局部个体失效和故障不敏感,系统具有强鲁棒性。

  正因为上述的可扩展性、鲁棒性强、适应性强和个体简单的优点,使得群体无人机具有良好的应用前景,特别是以下几种类型的任务很适合于群体无人机:

 1)区域监测/遍历类任务。群体无人机是分布式系统,很适合于用来协同感知和监测空间状态。例如,在某一区域受灾时,通过构建一群微型自主无人飞行器组成的群体系统,可以对地面受灾状况协同监测,同时可以为地面用户提供应急的通信网络;

 2)外界环境过于危险的任务。由于群体系统中个体无人机的造价成本低,而且个体的故障或坠毁不影响群体的整体行动规划,所以群体无人机适合用来执行蕴藏危险的任务,以牺牲部分个体成员的方式换整体的胜利,如无人战斗机的集群作战等。

  3)有冗余性要求的任务。群体无人机系统具有强鲁棒性,这里的鲁棒性是指在群体中部分个体的失效和故障情况下,系统能正常运作。该鲁棒性决定了群体无人机适合执行有冗余性要求的任务。例如,在战场环境中,群体无人机能临时构建动态的通信网络。

  4)群体规模可及时伸缩的任务。例如,在敌方火力越来越凶猛的情况下,可扩大群体规模集中火力攻击敌方阵地。

    无人机集群以其高度的灵活性、广泛的适应性、可控的经济性,拥有越来越广泛的应用潜力,受到国内外的高度关注。任务规划是无人机集群应用的顶层规划,是根据任务环境态势、任务需求、自身特性等要求进行的综合调度,从而建立无人机与任务的合理映射关系,维持机间合理协同合作关系。本文从基于逻辑与规则的自上而下式任务规划和基于集群智能涌现的自下而上式任务规划两个方面,对无人机集群任务规划技术现状进行了全面的总结,分析了当前无人机集群任务规划技术研究应当关注的若干发展方向。针对多智能体蜂拥控制过程中个体间的差异性,在包含多个虚拟领导者的情况下,研究了针对多智能体个体差异性的优化蜂拥控制算法.首先,在Olfati-Saber算法避碰,聚合和速度匹配的基础上引入多智能体之间的质量差异策略,实现多智能体的聚合和速度匹配;其次,在多领导者的影响下,对引领反馈进行优化,研究了智能体个体跟踪多领导者的控制算法.最后,通过实验仿真,验证了基于改进Olfati-Saber算法的多智能体蜂拥控制算法可以实现多智能体蜂拥运动状态。

1.png

   虚拟领导者可以看作是提前给定的预定路线,蜂拥控制的目的是多智能体不仅要达到蜂拥状态而且还要按照预定路线移动,如来自地面指挥员的命令。本文考虑了切换拓扑结构,因此把每个智能体的邻域可以看作是时间t的函数。两个智能体之间的距离超过感应半径时,它们之间的连边会断开,有可能整个多智能体网络会不连通。本文采用动态牵制策略达到多智能体网络蜂拥控制目标。 

2.仿真效果预览
matlab2022a仿真结果如下:

2.png
3.png
4.png
5.png
6.png
7.png
8.png

3.MATLAB核心程序

    %求u11=fya*N(i,j)
    u11=zeros(n,n,2);
    for i=1:n
        for j=1:n
            u11(i,j,1)=fya(i,j)*N(i,j,1);
            u11(i,j,2)=fya(i,j)*N(i,j,2);
        end
    end
    u1=zeros(2,n);
    for i=1:n
        for j=1:n
            u1(1,i)=u1(1,i)+u11(i,j,1);
            u1(2,i)=u1(2,i)+u11(i,j,2);
        end
    end
    %----------------求智能体的速度影响----------------------
    %求u22=aij*(pj-pi-prj+pri)
    u22=[n,n,2];
    for i=1:n
        for j=1:n
            u22(i,j,1)=A(i,j)*(p(1,j)-p(1,i)-pr(1,i)+pr(1,i));
            u22(i,j,2)=A(i,j)*(p(2,j)-p(2,i)-pr(2,i)+pr(2,i));
        end
    end
    %u2为反馈2
    u2=zeros(2,n);
    for i=1:n
        for j=1:n
            u2(1,i)= u22(i,j,1)+ u2(1,i);
            u2(2,i)= u22(i,j,2)+ u2(2,i);
        end
    end
    %-----------------求领导者的影响------------------
    u3=zeros(2,n);
    for i=1:5
        u3(1,i)=-c1*(q(1,i)-qr1(1,1))-c2*(p(1,i)-pr1(1,1));
        u3(2,i)=-c1*(q(2,i)-qr1(2,1))-c2*(p(2,i)-pr1(2,1));
    end
    for i=6:10
        u3(1,i)=-c1*(q(1,i)-qr2(1,1))-c2*(p(1,i)-pr2(1,1));
        u3(2,i)=-c1*(q(2,i)-qr2(2,1))-c2*(p(2,i)-pr2(2,1));
    end
    %-----------------求加速度u---------------------------
    %----各智能体在计算时加入其领导智能体的加速度反馈ur------
    u=zeros(2,n);
    for i=1:2
        for j=1:5
          u(i,j)=u1(i,j)+u2(i,j)+u3(i,j)+ur1(i,1);
        end
    end
    for i=1:2
        for j=6:10
          u(i,j)=u1(i,j)+u2(i,j)+u3(i,j)+ur2(i,1);
        end
    end
    %----------------进行下一步运算--------------
    %-------------智能体离散计算------------
    for i=1:2
        for j=1:n
            q(i,j)=q(i,j)+step*p(i,j);
            p(i,j)=p(i,j)+step*u(i,j);
        end
    end
    %------------虚拟领导者离散计算------------
    for i=1:2
        qr1(i,1)=qr1(i,1)+step*pr1(i,1);
        pr1(i,1)=pr1(i,1)+step*ur1(i,1);
    end
    for i=1:2
        qr2(i,1)=qr2(i,1)+step*pr2(i,1);
        pr2(i,1)=pr2(i,1)+step*ur2(i,1);
    end
 
end
%---------------------循环结束,绘图------------------------
%---------------------智能体初始时刻状态--------------------
figure(1);
plot(qq(1,:,1),qq(2,:,1),'o');
hold on;
quiver(qq(1,:,1),qq(2,:,1),pp(1,:,1),pp(2,:,1),'Color','red');
for i=1:n
    for j=1:n
        if sqrt((qq(1,i,1)-qq(1,j,1))^2+(qq(2,i,1)-qq(2,j,1))^2)<=r
            line([qq(1,i,1),qq(1,j,1)],[qq(2,i,1),qq(2,j,1)]); 
        end
    end
end
%-------------------智能体最终时刻状态---------------
figure(2);
plot(qq(1,:,loop),qq(2,:,loop),'o');
hold on;
quiver(qq(1,:,loop),qq(2,:,loop),pp(1,:,loop),pp(2,:,loop),'Color','red');
for i=1:n
    for j=1:n
        if sqrt((qq(1,i,loop)-qq(1,j,loop))^2+(qq(2,i,loop)-qq(2,j,loop))^2)<=r
            line([qq(1,i,loop),qq(1,j,loop)],[qq(2,i,loop),qq(2,j,loop)]); 
        end
    end
end
%--------------------智能体t时刻--------------------------------
a77
相关文章
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
2天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
2天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
12 1
|
3天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
3天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
4天前
|
算法
基于改进粒子群算法的混合储能系统容量优化matlab
基于改进粒子群算法的混合储能系统容量优化matlab
|
4天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
4天前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真
这是一个关于数字图像水印嵌入的算法介绍。使用MATLAB2022a,该算法基于DOTC,结合抖动和量化误差隐藏,确保水印的鲁棒性和隐蔽性。图像被分为N*N块,根据水印信号进行二值化处理,通过调整重建电平的奇偶性嵌入水印。水印提取是嵌入过程的逆操作,通过重建电平恢复隐藏的水印比特。提供的代码片段展示了从块处理、水印嵌入到噪声攻击模拟及水印提取的过程,还包括PSNR和NC的计算,用于评估水印在不同噪声水平下的性能。
|
4天前
|
算法
基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)
基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)

热门文章

最新文章