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

网友投稿 247 2022-11-15

【无人机编队规划】基于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 ParametersNm = 15; %Number of initial agentsNo = 25; %Number of initial obstaclesNt = 100; %Number of initial targets%% Initialize Target, Obstacle, and Swarm Locationsx_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];

三、运行结果

四、matlab版本及参考文献

1 matlab版本 2014a

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Process#waitFor()阻塞问题的解决
下一篇:适配器模式、装饰器模式、代理模式的区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~