1 简介2 部分代码登录后复制 clc;1.登录后复制 clear;1.登录后复制 close all;1.登录后复制 model =CreateModel();1.登录后复制 tic;1.登录后复制 plotmap(model);1.登录后复制 global_chromosome =Muti_Uav_Ga(model);1.登录后复制 toc;1.登录后复制 function [ cost,sol,costs ] = FitnessFunction( chromosome,model )1.登录后复制 %UNTITLED2 Summary of this function goes here改进:用局部极值来进行交叉操作1.登录后复制 % Detailed explanation goes here1.登录后复制 for uav=1:model.UAV1.登录后复制 x= zeros(1,model.dim);1.登录后复制 y= zeros(1,model.dim);1.登录后复制 z = zeros(1,model.dim);1.登录后复制 %取第uav个航路的坐标1.登录后复制 for i=1:model.dim1.登录后复制 x(i) = chromosome.pos(i,1,uav);1.登录后复制 y(i) = chromosome.pos(i,2,uav);1.登录后复制 z(i) = chromosome.pos(i,3,uav);1.登录后复制 end1.登录后复制 sx = model.sx(uav);1.登录后复制 sy = model.sy(uav);1.登录后复制 sz = model.sz(uav);1.登录后复制 ex = model.endp(1);1.登录后复制 ey =model.endp(2);1.登录后复制 ez=model.endp(3);1.登录后复制 xobs = model.xobs;1.登录后复制 yobs = model.yobs;1.登录后复制 zobs = model.zobs;1.登录后复制 robs = model.robs;1.登录后复制 XS=[sx x ex];1.登录后复制 YS=[sy y ey];1.登录后复制 ZS=[sz z ez];1.登录后复制 k =numel(XS);1.登录后复制 TP =linspace(0,1,k);1.登录后复制 tt =linspace(0,1,50);1.登录后复制 xx =[];1.登录后复制 yy =[];1.登录后复制 zz=[];1.登录后复制 for i=1:k-11.登录后复制 %每一段向量分成10个点1.登录后复制 x_r = linspace(XS(i),XS(i+1),10);1.登录后复制 y_r= linspace(YS(i),YS(i+1),10);1.登录后复制 z_r =linspace(ZS(i),ZS(i+1),10);1.登录后复制 xx = [xx,x_r];1.登录后复制 yy = [yy,y_r];1.登录后复制 zz =[zz ,z_r];1.登录后复制 end1.登录后复制 %calc L1.登录后复制 dx =diff(xx);1.登录后复制 dy =diff(yy);1.登录后复制 dz = diff(zz);1.登录后复制 Length = sum(sqrt(dx.^2+dy.^2+dz.^2));1.登录后复制 nobs = numel(xobs);1.登录后复制 violation=0;1.登录后复制 for i=1:nobs1.登录后复制 d = sqrt( (xx-xobs(i)).^2+(yy-yobs(i)).^2 );1.登录后复制 v = max(1-d/robs(i),0);1.登录后复制 violation = violation + mean(v);1.登录后复制 end1.登录后复制 sol(uav).TP=TP;1.登录后复制 sol(uav).XS =XS;1.登录后复制 sol(uav).YS=YS;1.登录后复制 sol(uav).ZS=ZS;1.登录后复制 sol(uav).tt=tt;1.登录后复制 sol(uav).xx=xx;1.登录后复制 sol(uav).yy=yy;1.登录后复制 sol(uav).zz=zz;1.登录后复制 sol(uav).dx=dx;1.登录后复制 sol(uav).dy=dy;1.登录后复制 sol(uav).dz=dz;1.登录后复制 sol(uav).Length=Length;1.登录后复制 sol(uav).violation=violation;1.登录后复制 sol(uav).IsFeasible=(violation==0);1.登录后复制 %计算协调适应值1.登录后复制 % 3、飞行高度限制1.登录后复制 high=0;1.登录后复制 for k=1:numel(XS)1.登录后复制 x=XS(k);1.登录后复制 y=YS(k);1.登录后复制 h=terrain(x,y);1.登录后复制 if ZS(k)<=(h+10) %限制飞行最低高度1.登录后复制 high=high+10000;1.登录后复制 elseif ZS(k)>375 %限制飞行最高高度1.登录后复制 high=high+10000;1.登录后复制 else1.登录后复制 high=high+abs(ZS(k)-287); %计算与理想高度差距和1.登录后复制 end1.登录后复制 end1.登录后复制 %z1.登录后复制 w1 =0.03;1.登录后复制 w2=0.3;1.登录后复制 w3=0.1;1.登录后复制 w4=0.2;1.登录后复制 %markov evaluatea1.登录后复制 %获取所有维度的坐标1.登录后复制 r_xx=[];r_yy=[];r_zz=[];1.登录后复制 for i=2:numel(XS)-21.登录后复制 %每一段向量分成10个点1.登录后复制 r_x = linspace(XS(i),XS(i+1),3);1.登录后复制 r_y= linspace(YS(i),YS(i+1),3);1.登录后复制 r_z =linspace(ZS(i),ZS(i+1),3);1.登录后复制 r_xx = [r_xx,r_x];1.登录后复制 r_yy = [r_yy,r_y];1.登录后复制 r_zz =[r_zz ,r_z];1.登录后复制 end1.登录后复制 Allpos = [r_xx',r_yy',r_zz'];1.登录后复制 [stateProbabilityProcess, expectedCostProcess]=MarkovEvaluate(Allpos,model);1.登录后复制 sol(uav).MarkovState = stateProbabilityProcess;1.登录后复制 sol(uav).MarkovCost = expectedCostProcess;1.登录后复制 sol(uav).costs=[w1*Length,w3*high,w4*mean(expectedCostProcess)*1000];1.登录后复制 single_cost(uav)= w1*Length +w3*high+w4*mean(expectedCostProcess)*1000;1.登录后复制 sol(uav).cost =single_cost(uav);1.登录后复制 end1.登录后复制 cost =sum(single_cost);1.登录后复制 costs=single_cost;1.登录后复制 end1.3 仿真结果4 参考文献[1]江冰, 郭彭. 基于粒子群算法的三维无人机路径规划方法及规划系统:.