m基于节点位置偏好的自组织网络节点度分布的matlab仿真

简介: m基于节点位置偏好的自组织网络节点度分布的matlab仿真

1.算法仿真效果
matlab2022a仿真结果如下:

45691e3282d5376ae1a2a45ed4d9b6fd_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
b7a645b4b73ed7a7e39b485f6f8f0b71_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
2699c83a3f0392dcfc6eb76f34f99a8d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
eeefc98eeffcac962745c77264e45a4c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

移动自组织(Ad Hoc)网络是一种多跳的临时性自治系统,它的原型是美国早在1968年建立的ALOHA网络和之后于1973提出的PR(Packet Radio)网络。ALOHA网络需要固定的基站,网络中的每一个节点都必须和其它所有节点直接连接才能互相通信,是一种单跳网络。直到PR网络,才出现了真正意义上的多跳网络,网络中的各个节点不需要直接连接,而是能够通过中继的方式,在两个距离很远而无法直接通信的节点之间传送信息。PR网络被广泛应用于军事领域。IEEE在开发802.11标准时,提出将PR网络改名为Ad Hoc网络,也即今天我们常说的移动自组织网络。

   移动自组织网络。一方面,网络信息交换采用了计算机网络中的分组交换机制,而不是电话交换网中的电路交换机制;另一方面,用户终端是可以移动的便携式终端,如笔记本、PDA等,用户可以随时处于移动或者静止状态。无线自组网中的每个用户终端都兼有路由器和主机两种功能。作为主机,终端可以运行各种面向用户的应用程序;作为路由器,终端需要运行相应的路由协议,这种分布式控制和无中心的网络结构能够在部分通信网络遭到破坏后维持剩余的通信能力,具有很强的鲁棒性和抗毁性。

   作为一种分布式网络,移动自组织网络是一种自治、多跳网络,整个网络没有固定的基础设施,能够在不能利用或者不便利用现有网络基础设施(如基站、AP)的情况下,提供终端之间的相互通信。由于终端的发射功率和无线覆盖范围有限,因此距离较远的两个终端如果要进行通信就必须借助于其它节点进行分组转发,这样节点之间构成了一种无线多跳网络。

   网络中的移动终端具有路由和分组转发功能,可以通过无线连接构成任意的网络拓扑。移动自组织网络既可以作为单独的网络独立工作,也可以以末端子网的形式接入现有网络,如Internet网络和蜂窝网。

    度分布是图论和网络理论中的概念。一个图(或网络)由一些顶点(节点)和连接它们的边(连结)构成。每个顶点(节点)连出的所有边(连结)的数量就是这个顶点(节点)的度。度分布是对一个图(网络)中顶点(节点)度数的总体描述。对于随机图,度分布指的是图中顶点度数的概率分布。
   一个节点的度通常定义为该节点连接的所有连接(边) 的总和。 网络的度分布即为网络中节点的度的概率分布或频率分布(统称分布)。 一个节点的度k 通常定义为该节点连接的所有连接(边) 的总和,写成数学表达式为:

d ( i) = Σj ∈Gδij .

    度分布是图论和(复杂)网络理论中都存在的概念。首先介绍图的概念。一个图是一个由两个集合和构成的二元组。集合一般由有限个元素构成,其中的元素被称为图的顶点,集合是由各元素构成的集合。集合中的每个元素都是一个非负整数。在无向图中,图中的每个元素,由图中的两个顶点和连接有条边构成。在有向图中,图中的每个元素,由图中的顶点以及有条连向顶点的边构成。并且,如果一个图中所有的都不超过1,那么称图是简单图.

3.MATLAB核心程序

%局域网偏好的网络拓扑
L  = 50;
X  = rand(1,m0)*SCALE;  
Y  = rand(1,m0)*SCALE; 
fed= [];
for i = 1:m0
    for j = 1:m0
        dist(i,j)=sqrt((X(i)-X(j))^2+(Y(i)-Y(j))^2);
    end
end

indx = 0;
NN   = 0;  
while NN < N  
      indx = indx + 1;rng(indx);
      %计算度
      if indx == 1
         X2 = X; 
         Y2 = Y;   
      end


      degree1 = [];
      for i = 1:length(X2)
          xx= 0;
          for j = 1:length(Y2)
              dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
              if dist <= Radius & dist > 0
                 xx= xx + 1; 
              end
          end
          degree1(i) = xx;
      end    

      degree2 = [];
      di      = [];
      for i = 1:length(X2)
          xx= 0;
          for j = 1:length(Y2)
              dist=sqrt((X2(i)-X2(j))^2+(Y2(i)-Y2(j))^2);
              if dist <= Radius & dist > 0 & dist<= L
                 xx= xx + 1; 
              end
              di(i,j) = dist;
          end
          degree2(i) = xx;
      end    

      %计算节点剩余能源
      if indx == 1
         E(1:m0) = E0 - Ec;
         tmps    = E;
      else
         E       = tmps - Ec;
         E       = [E,E0 - Ec];
         tmps    = E;
      end

      for i = 1:length(X2)
          d      = di(i,:);
          fed(i) = E(i)^alpha*(1-d(i)/sum(d))^(1-alpha);
      end
      for i = 1:length(X2)
          Para2(i) = fed(i)*degree1(i)/(sum(fed.*degree1));%公式3.3连接8个概率
      end
      %选择概率最大的m个进行连接
      [Vp,Ip] = sort(Para2);
      Mindx   = Ip(end-m+1:end);

      %新节点加入网络时遵循的概率表达式
      Parea = (degree2)/sum(degree1);
      [V,I] = max(Parea);
      indx2 = find(Parea>=0.5*V);
      %Nr    = randperm(length(indx2));
      Nr    = floor(length(indx2)*rand)+1;
      if rand > max([0.5,sum(Parea(1:m))])%加入网络时遵循的概率表达式
         if rand > Vp(end-m+1)
            Xnew = X2(indx2(Nr))+L*cos(2*pi*rand);
            Ynew = Y2(indx2(Nr))+L*sin(2*pi*rand);
         else
            Xnew  = rand(1,1)*SCALE; 
            Ynew  = rand(1,1)*SCALE;
         end
      else
         Xnew  = rand(1,1)*SCALE;  
         Ynew  = rand(1,1)*SCALE;  
      end

      X2    = [X2,Xnew];
      Y2    = [Y2,Ynew];
      NN    = length(X2);
end

subplot(133);
plot(X2,Y2,'b.');
title('局域网偏好的网络拓扑,L=50');
axis([0,500,0,500]);
相关文章
|
12月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
281 0
|
12月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
723 0
|
12月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
681 2
|
12月前
|
算法 调度
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
975 10
|
12月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
288 8
|
12月前
|
机器学习/深度学习 算法 机器人
基于自适应RBF神经网络滑模控制的机械臂轨迹跟踪仿真(Simulink仿真实现)
基于自适应RBF神经网络滑模控制的机械臂轨迹跟踪仿真(Simulink仿真实现)
692 4
|
12月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
336 2
|
12月前
|
算法
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
990 3
|
12月前
|
机器学习/深度学习 运维 算法
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
1026 0
|
11月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
1226 0

热门文章

最新文章