您现在的位置:首页 >> 智能优化 >> 内容

m基于GA遗传优化算法的二维室内红外传感器部署策略matlab仿真

时间:2023/6/3 3:31:56 点击:

  核心提示:09_057_m,包括程序操作录像+说明文档+参考文献...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168