您现在的位置:首页 >> 网络协议 >> 内容

m基于NSGAII优化的WSN网络覆盖率问题matlab仿真,优化激活节点数量,网络能耗以及覆盖率

时间:2023/2/28 22:55:38 点击:

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

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJWblZ5q

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

        首先将一群具有多个目标的个体(解集,或者说线代里的向量形式)作为父代初始种群,在每一次迭代中,GA操作后合并父代于自带。通过非支配排序,我们将所有个体分不到不同的pareto最优前沿层次。然后根据不同层次的顺序从pareto最优前沿选择个体作为下一个种群。出于遗传算法中的“物种多样性”保护,还计算量“拥挤距离”。拥挤距离比较将算法各阶段的选择过程引向一致的前沿。    

        与单目标(遗传算法)最大的不同就是进行选择操作之前进行快速非支配排序,这一步也是为了选择操作而来的,选择哪些、怎么选是通过非快速支配排序来的。这就不像单目标,挑好的选就行了。

4.部分源码

..................................................................

      %合并种群

      Pop_comb(1:Pop_num,1:Num_Object+N_decision_var+2)                = Pop_Gat_dist;

      [Size_x,Size_y]                                                  = size(Off_Gens);

      Pop_comb(Pop_num+1:Pop_num+Size_x,1:Num_Object+N_decision_var+2) = Off_Gens;

      %非支配排序和聚焦距离更新

      [gen_non_dominant_pop,Pop_Info] = func_non_dominant_sort(Pop_comb,Num_Object,N_decision_var);

      nsdc_pop                        = func_crowding_distance(gen_non_dominant_pop,Num_Object,N_decision_var,Pop_Info);

      %交叉变异

      [Pop_Gat_dist]   = func_gene_off(nsdc_pop,Num_Object,N_decision_var,Pop_num);

      %选择,交叉,变异产生下一个子代

      poolsize   = round(Pop_num/2);

      %选择锦标赛的元度

      toursize   = 2;

      select_pop = func_sel(Pop_Gat_dist,poolsize,toursize,Num_Object,N_decision_var);

      [Off_Gens,Object] = func_gene_oper(select_pop,Num_Object,N_decision_var,Pc,Pm,xmax,xmin,Para,X,Y,Pdet,r);

      t          = t+1;

      

      %保存每次迭代的优化结果

..............................................................

      end

      %Pc和Pm的自适应更新

      if t == 1

         Pc = 20;

         Pm = 20;

      else

         delta = abs(Opt_node2(t) - Opt_node2(t-1))+abs(Opt_same2(t) - Opt_same2(t-1))+abs(Opt_power2(t) - Opt_power2(t-1));

         Pc    = 20/(1+exp(-delta));

         pm    = 20/(1+exp(-delta));

      end

      %保存不同覆盖率下的覆盖节点值

      load node.mat

      Nodes(t,:) =  NODES;

end

figure;

plot(1:10:gen,Opt_node2(1:10:gen),'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.0,0.99,0.0]);

xlabel('迭代次数');

ylabel('覆盖率');

title('覆盖率(满足必须大于90%)');

figure;

plot(1:10:gen,Opt_power2(1:10:gen),'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.0,0.99,0.0]);

xlabel('迭代次数');

ylabel('节点平均能量');

 

 

 

figure;

plot(1:10:gen,sum(Nodes(1:10:gen,:),2),'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.0,0.99,0.0]);

xlabel('迭代次数');

ylabel('最优节点个数变换');

title('满足覆盖率最低需求条件的最优节点个数变换');

func_view(1,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(10,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(30,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(50,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(100,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(150,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

func_view(200,R,W,H,X,Y,Nodes,Opt_node2,Opt_same2,Opt_power2);

12_018_m

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