⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 routing_t.m

📁 在BA无标度网络中求平均传递时间算法的matlab原程序。用该算法可以计算出网络拥塞的临界点。
💻 M
字号:
tic;
alapha=0.4;
N=600;
% R=40;
F=1000;
aa=zeros(F,1);
for i=1:N
    Cii(i)=sum(Nodes(:,i));
end
 Ci=sum(Cii)/N;
%    aa=zeros(F);
%    aaa=zeros(10);
%当alapha=1,q=0,N=100时,R的临界值是80-100,
for  R=180:40:1060
    list=zeros(F*R,3); 
    Packet=zeros(N,1);
    D=0;
    for i=1:N
        Packet(i)=0;
    end
    for T=1:F
        list2=zeros(N,1);
 %     w=lamda*N*t
%         for i=1:N
%             list2(i,2)=0;
%         end
        for i=1:R
            b=rand(1,2)*N;
            B(i,:)=ceil(b);  
            while B(i,1)==B(i,2)   %选择R对源端和目的端,且源端和目的端不是同一点
                  b=rand(1,2)*N;
                  B(i,:)=ceil(b);   
            end
        end  
            list((T-1)*R+1:T*R,1:2)=B; %依次把选择的R对源端和目的端付给list
    
        for i=1:R;
            Packet(B(i,1))=Packet(B(i,1))+1; %选择的R个源端的数据包个数分别加1
        end
            D=D+R;  
   
        for i=1:R*T
            t2=1;
            e=100;
            ts=list(i,1);
            td=list(i,2);
            if ts==0
                 continue;
            end
                 list2(ts)=list2(ts)+1;    %list2第二列加一
            if list2(ts)> Cii(ts)   %第ts个节点对应的数据包超过了此节点的最大处理能力时,此时不进行传输
%          if list2(ts,2)>5
               list(i,3)=list(i,3)+1;
                 continue;
            end
        
            x=1;
           for k=1:N
               if Nodes(ts,k)==1
                  if k==td      %如果ts的邻居节点有目的节点,传递成功,源端赋0
%                    w=w-1;
                     D=D-1;
                     list(i,1)=0;
                     list(i,3)=list(i,3)+1;
                     t2=0;
                     
                     continue;
                  end
               end       % if  Spath(k,td)<N
           end
        
           if t2~=0
               for k=1:N
                  if Nodes(ts,k)==1
                     Short=Spath(k,td);
                     e=alapha*Short+(1-alapha)*Packet(k)/Cii(k);
%                     e=alapha*Short+(1-alapha)*Packet(k)/5;
                      if x==1
                         min=e;
                         x=x+1; 
                         t2=k;
                      end
                      if e<min
                         min=e;
                         t2=k;
                      end
                  end
              end
   %执行路由策略,确定下一节点t2(i) 
              Packet(t2)=Packet(t2)+1;   
               list(i,1)=t2;
               list(i,3)=list(i,3)+1;
            
            end
         Packet(ts)=Packet(ts)-1 ;
%        list2(ts,2)=list2(ts,2)-1;
        end          
        aa(T)=D;
   end
    TT(R)=sum(list(:,3))/(R*F);
%     aaa(R)=(aa(F)+aa(F-1)+aa(F-2)+aa(F-3)+aa(F-4)+aa(F-5)+aa(F-6)+aa(F-7)+aa(F-8)+aa(F-9))/(10*R*F);
    aaa(R)=aa(F)/(R*F);
%     aaa(R)=Ci*(aa(F)-aa(F-10)+aa(F-1)-aa(F-11)+aa(F-2)-aa(F-12)+aa(F-3)-aa(F-13)+aa(F-4)-aa(F-14)+aa(F-5)-aa(F-15)+aa(F-6)-aa(F-16)+aa(F-7)-aa(F-17)+aa(F-8)-aa(F-18)+aa(F-9)-aa(F-19))/(20*R);
%     aaa(R)=(aa(F)-aa(F-3))/(3*R);
%    semilogy(1:F,aa,'b-');
end
  %plot(180:40:1060,TT(180:40:1060),'k*');
 %plot(180:40:1060,aaa(180:40:1060),'k*');
 
 toc;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -