• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: Matlab
  • 标签: 机会路由  ExOR  

资源简介

ExOR算法 的 matlab 实现 自己写的 能运行 没问题

资源截图

代码片段和文件信息

function ExOR(sourcetargetETXprrPacketreceive)
%%%本文设计的路由算法

%N=30;
N=length(prr);

%仿真网络
%% 载入 拓扑位置

% % % % % % % X =load(‘x001.txt‘);
% % % % % % % 
% % % % % % % YY =load(‘y001.txt‘);

tic;
%% 计算所有节点到目的节点的ETX值,存入ETX_path(N)
     for exor_i=1:N   
         [ ETX_path(exor_i) arry] = Eindex(exor_itargetETX);
     end
      [oopp]=sort(  ETX_path(1:N) ); %%升序
       qq=find(oo       FF =pp(qq); %%候选节点集 下标越小 优先级越高
    
%% 初始化 

 num00=1;%第num00跳的候选转发节点列表集合为F(num00,:)总跳数一定不会超过N
 
%  thresholdvalue=1/0.16;
 %tic;
 F(NN)=0;
 F(::)=0;
 F(num001)=source;%令source为第一跳(方便表示)

 
%  F_appoint(1:)=0;%存放已经被安排的节点
%  F_appoint(11)=source;
%  appointnum=1;%已分配节点数
%% 
    
   % ttt=randperm(100);
  %$%   for exor_i=1:100  %仿真出100个包
        %% 
        pdr=1; %包投递率初值
        delay=0;%延迟初值
        transmissioncount=0;%传输次数初值
        hop=0;
        
        x=F(num001);
                    CHONGCHUAN(N)=0;CHONGCHUAN(:)=0;
        while x~=target
            num00=num00+1;
            exor_index=1;
            f0=0;

                  while  (length( find(F(num00:)~=0) )==0  ) &&(f0<=inf)  %f0为允许的重传次数
                      
                      exor_rand=0;
                        while exor_rand==0
                        exor_rand= round(rand(11)*100); %%包序号 [1100]整数
                        end
                        
                    for exor_j=1:length(FF)  %%接收到包的临近节点 存入F(num00:)很明显F(num00:)中节点ID按 ETX_path大小从小到大排列因而F(num001)即为转发节点
                        
                        
                       if (  Packetreceive(xFF(exor_j)exor_rand)==1  )&&(  x~= FF(exor_j) )   %% &&exor_index==1
                       F(num00exor_index)=FF(exor_j); exor_index=exor_index+1 ;
                       
% % % % % % %                        plot(X( FF(exor_j) )YY( FF(exor_j) )‘C:*‘)%%%
% % % % % % %                        plot([X( x );X( FF(exor_j) )][YY( x );YY( FF(exor_j) )]‘r‘)%%%
% % % % % % %                       
% % % % % % %                         %annotation(‘arrow‘[X( x ) X( FF(exor_j) )][YY( x) YY( FF(exor_j) )]) 画箭头
% % % % % % %                        hold on
                       end
                    end
                    CHONGCHUAN(num00-1)=CHONGCHUAN(num00-1)+1;
                     transmissioncount= transmissioncount+1;
                     delay=delay+1;
                  end
            
             exor_target=fi

评论

共有 条评论

相关资源