无人机编队规划基于matlab遗传算法无人机编队位置规划含Matlab源码 1987期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无人机编队规划基于matlab遗传算法无人机编队位置规划含Matlab源码 1987期相关的知识,希望对你有一定的参考价值。

一、遗传操作简介

1 选择
由于遗传操作只在邻居之间进行, 对于每一个中心元胞, 只在它的邻居元胞内选择个体遗传到下一代。在此, 使用轮盘赌的方式进行个体选择, 对于每一个邻居元胞内的个体, 分别计算其适应度值Fi, 则第i个元胞内的个体被选中的概率psi为:

2 交叉
定义交叉概率pc, 在[0, 1]之间取随机值pcr, 若pcr≤pc, 则进行交叉操作。

交叉操作如图3所示, 进行交叉操作时, 对于中心元胞个体Qcen和被选中的邻居元胞个体Qngb, 除去初始点和终点, 分别选择第c个航点, 将其和前一个航点断开, 将Qcen的c-1航点和Qngb的c航点相连, 将Qngb的c-1航点和Qcen的c航点相连, 分别计算新生成的2个航迹适应度, 选取适应度大的进入下一代, 记为Qnew。

图3 交叉操作

3 变异
定义变异概率pm, 在[0, 1]之间取随机值pmr, 若pmr≤pm, 则进行变异操作。

若hm>0, 则说明Pe在威胁区外, 保留个体Qnew无需变异, 否则继续进行变异操作。

如图4所示, 假设hm对应的威胁点为W, 威胁半径为r, 变异之后产生新的航点Pe′ (xe′, ye′) , 则新航点坐标为:

ke为取值在[1, 2]之间随机增益系数, ω为随机旋转角度, 使得变异具有随机性。变异之后, Pe便跳到了距离Pe长度为ke|hm|的新航点Pe′上, 由于变异具有随机性, 因此变异之后Pe′可能依旧在威胁区内。

图4 变异操作
在变异操作之后, 更新Qnew为新的个体, 仍然命名为Qnew, 计算Qnew的适应度Fnew, 并与中心元胞个体Qcen的适应度Fcen进行比较, 若Fnew>Fcen, 则替换中心元胞个体为Qnew, 否则放弃新个体。

6 算法终止条件
由于算法计算量大, 一般很难在短时间内找到全局最优解, 因此可以设置以下终止条件以节省计算时间:

a.设置较为合适的适应度标准F0, 一旦新个体中有适应度值不小于F0的出现, 则终止寻优, 选择该个体作为最终航迹。

b.设置最大进化次数K, 一旦进化次数达到K次, 则终止寻优, 选取其中适应度值最大的个体作为最终航迹。

同时设置以上2个条件, 可以得到相对满足条件的“次优解”。

二、部分源代码

%% Objects and Interactions Parameters
Nm = 15;  %Number of initial agents
No = 25;  %Number of initial obstacles
Nt = 100; %Number of initial targets
%% Initialize Target, Obstacle, and Swarm Locations

x_range = 100;
y_range = 100;
z_range = 10;

%Targets and obstacles randomly positioned throughout the region.
targets   = [2*x_range*rand(1,Nt)-x_range;
             2*y_range*rand(1,Nt)-y_range;
             2*z_range*rand(1,Nt)-z_range];
         
obstacles = [2*x_range*rand(1,No)-x_range;
             2*y_range*rand(1,No)-y_range;
             2*z_range*rand(1,No)-z_range];

%Agents can be purposefully arranged. Right now they are randomly placed.
agents = [[linspace(-150,-110,5),linspace(-150,-110,5),linspace(-150,-110,5)];
          [zeros(1,5)-10,zeros(1,5),zeros(1,5)+10]; 
           zeros(1,15)];
% agents = [[linspace(-150,-130,5),linspace(-150,-110,5),linspace(-150,-110,5)];
%           [zeros(1,5)-2,zeros(1,5),zeros(1,5)+2]; 
%           [zeros(1,5)-2,zeros(1,5),zeros(1,5)-2]];
%agents = [linspace(-150,-110,Nm);zeros(1,Nm);zeros(1,Nm)];

%% Genetic Algorithm without reevaluating parents
% [PI, Orig, Lambda] = geneticAlgorithm3(cf, lambda_lower, lambda_upper, parents, TOL_GA, G, S, dv)
w1 = 70;
w2 = 10;
w3 = 20;

cf = @(M_star,T_star,L_star) w1*M_star+w2*T_star+w3*L_star;
lambda_lower = 0;
lambda_upper = 2;
parents = 6;
TOL_GA = 0.1;
G = 100;
S = 20;
dv = 15;

% Generate empty output arrays.
PI = zeros(G,S);
Orig = zeros(G,S);
PC = zeros(G,S,3);
% Randomly generate first generation.
Lambda = lambda_lower + rand(S,dv).*(lambda_upper-lambda_lower);

t0 = tic;
for g = 1:G
    myProgressBar(toc(t0), g, G);
    % Test fitness of members of first generation.
    if (g == 1)
        for i = 1:S
            lambda = Lambda(i,:);
            [L_star,M_star,T_star] = swarmSim2(obstacles, targets, agents, lambda, false);
            PI(g,i) = cf(M_star,T_star,L_star);
            PC(g,i,:) = [M_star,T_star,L_star];
        end
    else
        PI(g,1:parents) = PI(g-1,1:parents);
        PC(g,1:parents,:) = PC(g-1,1:parents,:);
        for i = parents+1:S
            lambda = Lambda(i,:);
            [L_star,M_star,T_star] = swarmSim2(obstacles, targets, agents, lambda, false); 
            PI(g,i) = cf(M_star,T_star,L_star);
            PC(g,i,:) = [M_star,T_star,L_star];
        end
    end
    

三、运行结果





四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 杨军,王道波,渠尊尊,孙瑜,张鲁遥.基于元胞遗传算法的多无人机编队集结路径规划[J].机械与电子. 2018,36(01)

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

以上是关于无人机编队规划基于matlab遗传算法无人机编队位置规划含Matlab源码 1987期的主要内容,如果未能解决你的问题,请参考以下文章

协同任务基于matlab二阶一致性算法多无人机协同编队动态仿真含Matlab源码 1740期

无人机路径规划基于人工势场实现无人机编队路径规划matlab源码

路径规划基于人工势场的无人机编队协同路径规划matlab源码

路径规划基于人工势场的无人机编队协同路径规划matlab源码

路径规划基于人工势场的无人机编队协同路径规划matlab源码

无人机编队飞行定位分析与讨论