无人机基于matlab粒子群算法优化干扰受限下无人机群辅助网络含matlab源码2245期(代码片段)

海神之光 海神之光     2022-12-15     377

关键词:

⛄一、无人机简介

无人机的航迹规划是指在综合考虑无人机飞行油耗、威胁、飞行区域以及自身物理条件限制等因素的前提下, 为飞行器在飞行区域内规划出从初始点到目标点最优或者满意的飞行航迹, 其本质是一个多约束的目标优化问题。航迹规划算法是航迹规划的核心。国内外相继开展了相关研究, 提出了许多航迹规划算法, 如模拟退火算法、人工势场法、遗传算法、蚁群算法等。但由于无人机面临的规划空间异常复杂、规划约束条件多且模糊性大, 航迹搜索算法存在寻优能力差、计算量过大、效率不高等问题, 在航迹规划的最优性和实时性方面有待进一步提高。

粒子群优化算法 (particle swarm optimization, PSO)是Kennedy和Eberhart于1995年提出的一种群体智能仿生算法, 在解决一些典型的函数优化问题时, 能够取得比较好的优化结果。

1 无人机航迹规划模型
1.1 航迹表示方法

一般地, 无人机航迹规划的空间可以表示为某三维坐标系下所有点的集合 (x, y, z) |xmin≤x≤xmax, ymin≤y≤ymax, zmin≤z≤zmax, 其中x, y可以表示为该节点在飞行水平面下的坐标, 也可以表示为该点的经纬度, z为高程数据或海拔高度。航迹规划的目的是获得无人机在该空间中的飞行轨迹, 生成的航迹可表示为三维空间的一系列的点PS, P1, P2, …, Pn-2, PG, 相邻航迹点之间用直线段连接。

1.2 航迹代价函数
在航迹规划中, 常采用经过适当简化的航迹代价计算公式

式中, s表示航迹段数, Li表示第i段航迹长度, 该项代表距离代价。Hi表示第i段航迹的平均海拔高度, 该项代表高度代价。Ti为第i段航迹的威胁指数, 该项代表威胁代价。k1、k2、k3分别是距离代价、高度代价和威胁代价的权重值, 权重的选取与飞行任务要求相关。

2 基本粒子群算法
粒子群算法初始化为一群数量为N的随机粒子 (随机解) , 在D维空间中通过重复迭代、更新自身的位置以搜索适应度值最优解。粒子的位置代表被优化问题在搜索空间中的潜在解。在每次迭代中, 粒子通过跟踪2个“极值”来更新自己的速度和位置:一个是粒子自身目前所找到的最优解, 即个体极值;另一个是整个粒子群目前找到的最优解, 即全局极值。粒子i (i=1, 2, …, N) 在第j (j=1, 2, …, D) 维的速度vij和位置xij按如下格式更新:

式中, ω为非负数, 称为惯性权值 (惯性因子) , 描述了粒子对之前速度的“继承”, 即体现出粒子的“惯性”;c1和c2为非负常数, 称为学习因子 (加速因子) , 体现了粒子的社会性, 即粒子向全局最优粒子学习的特性;r1和r2为 (0, 1) 之间的随机数;pi= (pi1, pi2, …, pi D) 表示粒子i的个体极值所在位置;pg= (pg1, pg2, …, pg D) 表示所有粒子的全局极值所在位置。

速度更新公式的第一项, 反映粒子当前速度的影响, 每一个粒子按照惯性权值的比重沿着自身速度的方向搜索, 起到了平衡全局的作用, 同时避免算法陷入局部最优;第二项体现了个体最优值对粒子速度的影响, 即粒子本身的记忆和认识, 使得粒子具有全局搜索能力。第三项则反映群体对个体的影响, 即群体间的信息共享起到加速收敛的作用。

⛄二、部分源代码

clc;clear all;close all;
%% 初始化种群

%f= Flow_BS(X); % 函数表达式
%figure(1);ezplot(f,[0,0.01,20]);
fym = -1;
% rec_kmeans = zeros(500,100);
% P = zeros(50,50);
%ITER=1;
for ITER = 1:1
k_center = 5;
N = 300; % 初始种群个数
d = k_center*3; % 空间维数
ger = 50; % 最大迭代次数

limit = [0, 500;0,500;10,100;
    0, 500;0,500;10,100;
    0, 500;0,500;10,100;
    0, 500;0,500;10,100;
    0, 500;0,500;10,100;];                % 设置位置参数限制


vlimit = [-15, 15];               % 设置速度限制
w = 0.8;                        % 惯性权重
c1 = 0.6;                       % 自我学习因子
c2 = 0.9;                       % 群体学习因子
% N_users = 50;
% all_users = 100*rand(N_users,2);

for users_sets = 80
    
    %load('alluser.mat', 'all_users');
    s=ITER;
    rng(s);
    all_users = 500*rand(users_sets,2);
    C(1,:) = zeros(1,k_center*2);
    for i = 1:N
        [A_label,B] = kmeans(all_users,k_center);
        C(i+1,:) = B(:);
        if C(i+1) == C(i)
            [A_label,B] = kmeans(all_users,k_center);
        end
        %     h = 10+90*rand(k_center,1);
        for j = 1:k_center
            h(j,1) = 50;
        end
        B = [B h]';
        X(i,:) = B(:); %初始种群的位置
    end
    C(1,:) = [];
    
    %     for i = 1:d
    %       X(:,i) = limit(i, 1) + (limit(i, 2) - limit(i, 1)) * rand(N, 1);%初始种群的位置
    %     end
    
    v = 15*rand(N, 3*k_center);                  % 初始种群的速度
    xm = X;                          % 每个个体的历史最佳位置
    ym = zeros(1, d);                % 种群的历史最佳位置
    fxm = zeros(N, 1);               % 每个个体的历史最佳适应度
    fym = -inf;                      % 种群历史最佳适应度
    hold on
    % plot(xm, f(xm), 'ro');title('初始状态图');
    % figure(2)
    %% 群体更新
    iter = 1;
    
    record = zeros(ger, 1);          % 记录器
    while iter <= ger
        %      fx = Flow_BS(X) ; % 个体当前适应度
        parfor i = 1:N
            [fx(i),p] = Flow_UAV(ITER,X(i,:),users_sets) ; % 个体当前适应度
        end
        for i = 1:N
            
            if fxm(i) < fx(i)
                fxm(i) = fx(i);     % 更新个体历史最佳适应度
                xm(i,:) = X(i,:);   % 更新个体历史最佳位置
            end
        end
        
        if fym < max(fxm)
            [fym, nmax] = max(fxm);   % 更新群体历史最佳适应度
            ym = xm(nmax, :);      % 更新群体历史最佳位置
        end
        w= 0.8-0.6*iter/ger;
        best(iter,:)= ym;
        v = v * w + c1 * rand * (xm - X) + c2 * rand * (repmat(ym, N, 1) - X);% 速度更新
        
        %边界速度处理
        v(v > vlimit(2)) = vlimit(2);
        v(v < vlimit(1)) = vlimit(1);
        X = X + v;% 位置更新
        % 边界位置处理
        for i = 1:N
            for j = 1:d
                if X(i,[j]) > 500
                    X(i,[j]) = 500;
                end
                if X(i,[j]) < 0
                    X(i,[j]) = 0;
                end
            end
            for j = 3:3:d
                if X(i,[j]) > 100
                    X(i,[j]) = 100;
                end
                if X(i,[j]) < 30
                    X(i,[j]) = 30;
                end
            end
            
            %         if X(i,[3]) > 100
            %            X(i,[3]) = 100;
            %         end
            %         if  X(i,[3]) < 10
            %             X(i,[3]) = 10;
            %         end
            %         if X(i,[6]) > 100
            %            X(i,[6]) = 100;
            %         end
            %         if  X(i,[6]) < 10
            %             X(i,[6]) = 10;
            %         end
            %         if X(i,[9]) > 100
            %            X(i,[9]) = 100;
            %         end
            %         if  X(i,[9]) < 10
            %             X(i,[9]) = 10;
            %         end
            
        end
        record(iter) = fym;%最大值记录 real value
        %     rec_randm(ITER,iter) = rec_kmeans(ITER,iter)+record(iter);
        %     record_random1(ITER,users_sets) = record(end);
        %     record_kmeans1(ITER,users_sets) = record(end);
        %     x0 = 0 : 0.01 : 20;
        %     plot(x0, f(x0), 'b-', x, f(x), 'ro');title('状态位置变化')
        %     pause(0.1)
        % [I,J]=find(tril(true(50),-1)) ;
        % dist_iter(iter)=sum(sqrt((X(I,1)-X(J,1)).^2+(X(I,2)-X(J,2)).^2+(X(I,3)-X(J,3)).^2))/(length(I));
        % SINR(ITER,iter) = fym;
        iter = iter+1;
        
        
        
    end
    SINR(ITER,users_sets)  = fym;
    
    % SINR(ITER,users_sets) = record(end);
    % if SINR(users_sets)<1
    %     k_center = k_center+1;
    %    users_sets=users_sets;
    % end
    [none,p]=Flow_UAV(ITER,best(end,:),users_sets);
    for i = 1:users_sets
        P(i,users_sets) = p(i);
    end
    UAV_num(ITER,users_sets) = k_center;
    % SINR_value(ITER,users_sets) = SINR(ITER,users_sets);
    % users_sets = users_sets+1;
    C=[];X = [];v=[];xm=[];B = [];%best = [];
end

⛄三、运行结果



⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]方群,徐青.基于改进粒子群算法的无人机三维航迹规划[J].西北工业大学学报. 2017,35(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

三维路径规划基于matlab粒子群算法无人机三维路径规划含matlab源码192期(代码片段)

一、无人机简介无人机的航迹规划是指在综合考虑无人机飞行油耗、威胁、飞行区域以及自身物理条件限制等因素的前提下,为飞行器在飞行区域内规划出从初始点到目标点最优或者满意的飞行航迹,其本质是一个多约束的目标优... 查看详情

目标搜索基于matlab运动编码粒子群算法优化(mpso)无人机搜索丢失目标含matlab源码2254期(代码片段)

...其相邻单元,从而保证路径中相邻节点之间的距离在无人机移动能力范围内,保持路径节点的可达性,使得每一代进化后的路径总是有效的。MPSO将每条搜索路径视为一组无人机运动段,若定义t时某运动段的大小... 查看详情

三维路径规划基于matlab粒子群算法无人机三维路径规划含matlab源码1260期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无... 查看详情

三维路径规划基于matlab粒子群算法无人机山地三维路径规划含matlab源码1405期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无... 查看详情

毕设题目:matlab无人机协同任务

1案例背景针对多无人机协同任务分配问题,设计了一种综合考虑飞行航程、任务收益以及任务完成时间窗口的混合粒子群任务分配算法。首先,将粒子位置编码为一组任务分配向量,针对同时打击场景可能存在的死... 查看详情

毕设题目:matlab无人机三维路径规划

1案例背景在无人机低空飞行时,障碍物的形状大都不规则,很难建立其准确的解析模型;针对该问题,在栅格法的基础上提出了一种利用类三维地图进行路径规划的方法;首先阐述了类三维地图的创建方法,并提出了下降方向和驻点等... 查看详情

路径规划基于蚁群算法实现无人机路径规划matlab源码(代码片段)

5.1介绍蚁群优化(ACO)是群体智能的一部分,它模仿蚂蚁的合作行为来解决复杂的组合优化问题。它的概念是由MarcoDorigo[1]和他的同事提出的,当他们观察到这些生物在寻找食物时所采用的相互交流和自我组织的合作方式时&... 查看详情

任务分配基于matlab蚁群算法无人机任务分配含matlab源码1265期

一、多无人机协同作业简介0引言多架无人机组成无人机集群可以协同完成任务,是未来无人机的发展方向。组成无人机集群的多架无人机通过机间链路互相通信实现协作,可以迅速准确地执行路径规划、协同侦察、协同感知和... 查看详情

任务分配基于matlab蚁群算法无人机任务分配含matlab源码1265期

一、多无人机协同作业简介0引言多架无人机组成无人机集群可以协同完成任务,是未来无人机的发展方向。组成无人机集群的多架无人机通过机间链路互相通信实现协作,可以迅速准确地执行路径规划、协同侦察、协同感知和... 查看详情

毕设题目:matlab无人机飞行作业

...逐渐引入高科技设备。在防治病虫害的过程中,引入植保无人机进行飞行作业。2现成案例(代码+参考文献)1【轨迹跟踪】基于matlab无人机轨迹跟踪【含Matlab源码1152期】2【路径规划】基于matlab多种算法无人机路径规划... 查看详情

优化预测基于matlab粒子群算法优化dbn预测含matlab源码1420期

一、DBN算法简介DBN是深度学习方法中的一种常用模型,是一种融合了深度学习与特征学习的神经网络。DBN网络结构是由若干层受限玻尔兹曼机(RestrictedBoltzmannMachine,RBM)和一层BP组成的一种深层神经网络。DBN结构如图2所示。图2DB... 查看详情

三维路径规划基于matlab蚁群算法无人机三维路径规划含matlab源码1278期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无... 查看详情

三维路径规划基于matlab蚁群算法无人机三维路径规划含matlab源码1278期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救援的白鲨MIX水下无... 查看详情

回归预测-lssvm基于粒子群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

...通信 无线传感器信号处理图像处理路径规划元胞自动机无人机 电力系统⛄内容介绍准确预测光伏电站输出功率,是促进光伏并网发电,提高电网运行稳定性的主要途径之一.该文提出一种基于粒子群算法最小二乘支持向量机(particl... 查看详情

无人机基于matlab蚁群算法求解含危险源的无人机路径规划含matlab源码2059期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救... 查看详情

无人机基于matlab蚁群算法求解含危险源的无人机路径规划含matlab源码2059期

一、无人机简介0引言随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化、完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下救... 查看详情

图像分割基于matlab粒子群算法优化模拟退火算法图像分割含matlab源码2020期

...退火算法图像分割简介(具体理论见参考文献)1基于模拟退火思想的粒子群算法1.1基本PSO算法首先,粒子群算法是由Eberhan博士和Kennedy博士最先提出的全局优化进化算法。该算法源于对鸟群捕食行为的灵感,其基本思想是通... 查看详情

图像分割基于matlab粒子群算法优化模拟退火算法图像分割含matlab源码2020期

...化模拟退火算法图像分割简介(具体理论见参考文献)1基于模拟退火思想的粒子群算法1.1基本PSO算法首先,粒子群算法是由Eberhan博士和Kennedy博士最先提出的全局优化进化算法。该算法源于对鸟群捕食行为的灵感,其基本思想是通... 查看详情