1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52Vkpxu
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分源码
for tt=1:1%为了仿真速度快点,这里只显示某一个时刻的部署结果
%输出每一时刻的无人机位置
if mod(tt,1000) == 1%每1000s更新一次部署,这个1000可以自己修改
target_pos= [1e3, 10e3, 0]';
end
N = 3;%机动站个数,自己可以调整,调整后重新运行即可。
MAXGEN = 100;
NIND = 50;
Nums = 3*N; %
Chrom = crtbp(NIND,Nums*10);
%sh
Areas = [];
%设置地图的最大范围
for i = 1:2*N
Areas = [Areas,[-SCALE;SCALE]];%雷达最大部署范围距离
end
for i = 1:N
Areas = [Areas,[0;100]];%雷达最大部署范围距离
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen = 0;
%计算对应的目标值
tmps = repmat([400],[1,Nums]);
X = tmps;%初始值
[fobj,Vgdop] = func_obj(X,target_pos);
E = fobj;
Js = E*ones(NIND,1);
Objv = (Js+eps);
gen = 0;
while gen < MAXGEN;
gen
rng(gen);
Pe0 = 0.995;
pe1 = 0.005;
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,Pe0);
Selch=mut( Selch,pe1);
phen1=bs2rv(Selch,FieldD);
for a=1:1:NIND
X1 = phen1(a,:);
%计算对应的目标值
[fobj,Vgdop]= func_obj(X1,target_pos);
JJ(a,1) = fobj;
XYp{a} = X1;
Vp{a} = Vgdop;
end
Objvsel=(JJ);
[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
Error(gen) = mean(JJ);
end
figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
%根据优化结果输出部署结果
figure;
[V,I] = min(JJ);
XY = XYp{I};
Gdop = Vp{a};
X = XY(1:length(XY)/3);
Y = XY(1+length(XY)/3:2*length(XY)/3);
Z = XY(1+2*length(XY)/3:end);
JZ_pos= [X',Y',Z'];
x =-2*SCALE:STEPS:2*SCALE;
y =-2*SCALE:STEPS:2*SCALE;
xx = [0:0.5:20];
[c,handle]=contour(x/1e3,y/1e3,Gdop,xx);
clabel(c,handle);
hold on;
plot(JZ_pos(:,1)/1e3,JZ_pos(:,2)/1e3,'r.');
xlabel('x(km)')
ylabel('y(km)')
title('GDOP图')
end
02_063m
3.部分仿真图预览
4.算法概述
遗传算法的起源可追溯到20世纪60年代初期。1967年,美国密歇根大学J. Holland教授的学生 Bagley在他的博士论文中首次提出了遗传算法这一术语,并讨论了遗传算法在博弈中的应用,但早期研究缺乏带有指导性的理论和计算工具的开拓。1975年, J. Holland等提出了对遗传算法理论研究极为重要的模式理论,出版了专著《自然系统和人工系统的适配》,在书中系统阐述了遗传算法的基本理论和方法,推动了遗传算法的发展。20世纪80年代后,遗传算法进入兴盛发展时期,被广泛应用于自动控制、生产计划、图像处理、机器人等研究领域。 GDOP(Geometric dilution of precision)几何精度因子:包括经度,纬度,高程和时间等因子,称为几何精度因子。本算法的主要目的是通过优化布局策略,使得GDOP达到最小值。