1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJmblp1y
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。
4.部分源码
%避开障碍物
Idx1 = [];
for i=1:Nr1
for j = 1:(NUM1+NUM2)
%判断传感器的坐标点区域和传感器是否有交集,有交集那么说明碰到障碍物了,则去除这些错误的部署点
if abs(X1(j)-(X3(i)+L(i)/2))<=L(i)/2 & abs(Y1(j)-(Y3(i)+W(i)/2))<=W(i)/2
Idx1 = [Idx1,j];
end
end
end
........................................................................
idx2 = unique(Idx1);
X1(idx2) = [];
Y1(idx2) = [];
NUM1_new = NUM1-length(find(idx2<=NUM1));
NUM2_new = length(X1)-NUM1_new;
%上面两个步骤,去掉了和障碍物有重叠的部署位置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%第一个,覆盖率
Sar=0;
for i = 1:SCALE
for j = 1:SCALE
Nums = 0;
for k = 1:(NUM1_new+NUM2_new)
if k<=NUM1_new%圆形覆盖率计算
if ((X1(k) - i)^2 + (Y1(k) - j)^2) < Rad1^2
Nums=Nums+1;
end
end
if k>NUM1_new & k<=(NUM1_new+NUM2_new)%正方形覆盖率计算
if abs(X1(k) - i)<=Rad2 & abs(Y1(k) - j)<=Rad2
Nums=Nums+1;
end
end
end
if Nums > 0
Sar=Sar+1;
end
end
end
fobj1 = 1-Sar/SCALE/SCALE;%整体减去被覆盖到的点,就是非覆盖率,因为优化算法是往最小值找的,所以需要减去覆盖率,得到非覆盖率,越小越好
%第二个安装难度,这里做一个定义,和障碍物越近,那么难度越大因为涉及到信号的传输和障碍物的避让问题
fobj2_= [];
for i=1:(NUM1_new+NUM2_new)
if i<=NUM1_new%圆形
d1=[];
d2=[];
for j=1:Nr1
tmps = sqrt((X1(i) - X3(j))^2 + (Y1(i) - Y3(j))^2);
if tmps < Rad1%满足条件的则保持到d1数据库
d1=[d1,1/(tmps+1)];
end
end
for j=1:Nr2
tmps = sqrt((X1(i) - X4(j))^2 + (Y1(i) - Y4(j))^2);
if tmps < Rad1%满足条件的则保持到d2数据库
d2=[d2,1/(tmps+1)];
end
end
if isempty([d1,d2])==1
fobj2_(i)=0;
else
fobj2_(i)=mean([d1,d2]);
end
end
...................................................................
end
fobj3_= [];
for i=1:(NUM1_new+NUM2_new)
..............................................................
fobj3_(i)= mean(d3);
end
fobj2 = mean([fobj2_,fobj3_]);
f1=Sar/SCALE/SCALE;
f2=mean(fobj2_);
f3=(NUM1_new+NUM2_new)/(N1+N2);%最优传感器数量
fitness = 0.6*fobj1 + 0.1*fobj2+0.3*f3;%获得最终的加权值
09_057_m