• 【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)


     💥💥💞💞欢迎来到本博客❤️❤️💥💥

    🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

    ⛳️座右铭:行百里者,半于九十。

    📋📋📋本文目录如下:🎁🎁🎁

    目录

    💥1 概述

    📚2 运行结果

    🎉3 参考文献

    🌈4 Matlab代码实现


    💥1 概述

    WSN】基于蚁群算法的路由协议(最短路径)对节点能量的消耗研究是一个十分重要的课题。

    在无蚁群算法(ACO)的情况下的无线传感器网络(WSN)中,当使用相同的路由协议(最短路径)时,节点能量会不断消耗,最终导致节点死亡。这是因为传感器节点在进行数据传输时,往往需要通过多个中继节点才能到达目的地,这些中继节点的数据转发会消耗大量的能量。而在没有ACO算法的情况下,网络中的节点并没有考虑到能量消耗的差异,因此无法做出针对性的路由选择。

    而在应用了ACO步骤的WSN网络中,情况就不同了。同样是通过路由协议(最短路径)进行数据传输,但ACO分析了正在使用的路径的能量消耗情况,并根据能量消耗的评估结果来进行路由调整。这意味着在ACO算法的指导下,节点能够根据路由路径上的能量变化情况做出相应的决策。比如,如果某个路径的能量消耗较大,ACO可以选择其他能量消耗相对较小的路径,以减少节点的能量消耗。

    通过引入ACO算法,WSN网络中的节点能够更加智能地选择路由路径,从而减少节点能量的消耗。这将延长整个网络的寿命,并提高网络的稳定性和性能。此外,ACO算法也可以根据网络的实际情况进行调整和优化,以更好地适应不同的应用场景和节点能量消耗的变化。

    总而言之,通过研究基于蚁群算法的路由协议(最短路径)对节点能量的消耗,我们可以深入理解WSN网络中能量问题的关键因素,并为解决节点能量消耗过高的问题提供有效的方法。引入ACO算法可以使节点能够根据能量消耗情况智能地选择路由路径,从而优化能量分配,延长网络寿命,并提高网络的可靠性和性能。

    📚2 运行结果

     持续运行中。

    部分代码:

    1. %% Main configuration values for this simulation
    2. dataset.nodeNo = 9; %Number of nodes
    3. ACOnodeNo = dataset.nodeNo;
    4. dataset.nodePosition(1,:) = [1 50 50]; %(Sender node fixed position)
    5. dataset.nodePosition(2,:) = [2 900 900]; %(Receiver node fixed position)
    6. dataset.NeighborsNo = 5;
    7. dataset.range = 500; %Tolerance distance to became neighbor of one node (Euclidean distance based)
    8. dataset.atenuationFactor = 1.8; %Atenuation factor in freespace - ranges from 1.8 to 4 due environment
    9. dataset.minEnergy = 80; % Mw - Miliwatts (70% energy)
    10. dataset.maxEnergy = 100; % Mw - Miliwatts (Full energy (100%) - 1 mAh charge capacity within 1 Volt energy)
    11. dataset.energyconsumptionperCicle = 0.85;
    12. dataset.energyrecoveryperCicle = 0.2;
    13. dataset.minenergyfactor = 0.18;
    14. dataset.maxenergyfactor = 0.2;
    15. STenergy=inf;
    16. packet=0;
    17. iterationcounter=1;
    18. plotgraphs=1; %Choose 1 for "yes" or 0 for "no" if you want to plot graphs or no (Better performance if no)
    19. reprodutibily = 0; %1 = yes (always generate same random numbers) (0) for no reprodutibility (Different random numbers every code execution);
    20. % Node position sortition
    21. if reprodutibily == 0
    22. rng('shuffle');
    23. else
    24. rng('default');
    25. end
    26. for a = 3 : dataset.nodeNo
    27. dataset.nodeId = a;
    28. garbage.x = randi([1 900]); %Xpos sortition
    29. garbage.y = randi([1 900]); %Ypos sortition
    30. dataset.nodePosition(a,:) = [dataset.nodeId garbage.x garbage.y]; %NodeID, X and Y position into nodePosition table
    31. end
    32. % Euclidean Distance calc from one node to all others
    33. for i = 1 : dataset.nodeNo
    34. for j = 1: dataset.nodeNo
    35. garbage.x1 = dataset.nodePosition(i,2);
    36. garbage.x2 = dataset.nodePosition(j,2);
    37. garbage.y1 = dataset.nodePosition(i,3);
    38. garbage.y2 = dataset.nodePosition(j,3);
    39. dataset.euclidiana(i,j) = sqrt( (garbage.x1 - garbage.x2) ^2 + (garbage.y1 - garbage.y2)^2 );
    40. end
    41. end
    42. % Edges matrix definition due "range" variable value
    43. dataset.weights = lt(dataset.euclidiana,dataset.range);
    44. % Graph construction
    45. G=graph(dataset.weights,'omitselfloops'); %Graph creation based on adjacency matrix (Edges matrix) built above
    46. % Euclidean distance extraction for all existente end-to-end formed by
    47. % "distance tolerance" (range variable value)

    %% Main configuration values for this simulation

    dataset.nodeNo = 9; %Number of nodes
    ACOnodeNo = dataset.nodeNo;
    dataset.nodePosition(1,:) = [1 50 50]; %(Sender node fixed position)
    dataset.nodePosition(2,:) = [2 900 900]; %(Receiver node fixed position)
    dataset.NeighborsNo = 5;
    dataset.range = 500; %Tolerance distance to became neighbor of one node (Euclidean distance based)
    dataset.atenuationFactor = 1.8; %Atenuation factor in freespace - ranges from 1.8 to 4 due environment
    dataset.minEnergy = 80; % Mw - Miliwatts (70% energy)
    dataset.maxEnergy = 100; % Mw - Miliwatts (Full energy (100%) - 1 mAh charge capacity within 1 Volt energy)
    dataset.energyconsumptionperCicle = 0.85;
    dataset.energyrecoveryperCicle = 0.2;
    dataset.minenergyfactor = 0.18;
    dataset.maxenergyfactor = 0.2;
    STenergy=inf; 
    packet=0;
    iterationcounter=1;
    plotgraphs=1; %Choose 1 for "yes" or 0 for "no" if you want to plot graphs or no (Better performance if no)
    reprodutibily = 0; %1 = yes (always generate same random numbers) (0) for no reprodutibility (Different random numbers every code execution);


    % Node position sortition
    if reprodutibily == 0
        rng('shuffle');
    else
        rng('default');
    end
    for a = 3 : dataset.nodeNo
        
       dataset.nodeId = a; 
       garbage.x = randi([1 900]); %Xpos sortition
       garbage.y = randi([1 900]); %Ypos sortition
       dataset.nodePosition(a,:) = [dataset.nodeId garbage.x garbage.y]; %NodeID, X and Y position into nodePosition table
       
    end

    % Euclidean Distance calc from one node to all others

    for i = 1 : dataset.nodeNo
        for j = 1: dataset.nodeNo
            garbage.x1 = dataset.nodePosition(i,2); 
            garbage.x2 = dataset.nodePosition(j,2); 
            garbage.y1 = dataset.nodePosition(i,3); 
            garbage.y2 = dataset.nodePosition(j,3);
            
            dataset.euclidiana(i,j) = sqrt(  (garbage.x1 - garbage.x2) ^2 + (garbage.y1 - garbage.y2)^2  ); 
            
        end
    end

    % Edges matrix definition due "range" variable value

    dataset.weights = lt(dataset.euclidiana,dataset.range);

    % Graph construction

    G=graph(dataset.weights,'omitselfloops'); %Graph creation based on adjacency matrix (Edges matrix) built above

    % Euclidean distance extraction for all existente end-to-end formed by
    % "distance tolerance" (range variable value)

    🎉3 参考文献

    文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

    [1]廖明华,张华,谢建全.基于蚁群算法的WSN能量预测路由协议[J].计算机工程, 2012, 38(3):88-90.DOI:10.3969/j.issn.1000-3428.2012.03.030.

    [1]米奕萍.基于改进型蚁群算法的WSN路由算法的研究[D].中北大学[2023-09-19].DOI:CNKI:CDMD:2.1012.336755.

    🌈4 Matlab代码实现

  • 相关阅读:
    MySQL——数据库基础
    基于JAVA基于Web的社区商超系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    如何在两个月内学会Python编程?——最佳学习计划指南
    C++高级功能笔记
    vr小鼠虚拟解剖实验教学平台减少了受感染风险
    【数据结构初阶-线性表】顺序表和链表,多图详解
    Java变量类型 Java进阶必看
    win安装vscode
    数字信号处理-08-FIR IP应用实例
    ubuntu设置开机自启服务脚本
  • 原文地址:https://blog.csdn.net/Ke_Yan_She/article/details/133150908