一种高效的自主学习方式——基于簇头的方法 Vanet中的路由(Matlab代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文献


💥1 概述

在最近的几天里,由于城市地区车辆数量的增加,VANET中的聚类变得很重要。在未来的智能交通系统(ITS)中,VANET能够提供与安全相关的应用程序、互联网访问以及为驾驶员和乘客提供各种用户应用程序。基于聚类的拓扑结构可以在地理上相邻的车辆节点组中实现高效的数据交互,从而支持集群头(CHs)之间的直接交互。在现有方法中,已经开发了许多与基于聚类的VANET通信相关的算法,但由于车辆的高度移动性以及它们的位置、速度和加速度等参数的改变,增加了复杂性并降低了性能。在本文中,我们提出了一种自适应的自学习方法,基于混合聚类。在混合聚类中,该过程分为三个步骤。第一步是Type1,它用于道路边缘单元(RSU)作为静态集群头。第二步是将整个区域划分为多个区域,并应用基于区域敏感的聚类算法。它用于预测每个车辆的有效质心/权重值。最后,在第三步中,基于上述算法,我们得到了神经模糊训练样本。应用基于神经模糊预测的集群头选择。每个区域的集群头的百分比用于减少端到端延迟和减少拥塞。模拟结果表明,与现有方法相比,所提出的算法具有更高的效率。
如今,VANET对于安全和重要信息的传输都非常重要。无论是道路交通还是紧急情况,它都可能起到重要作用。近年来,针对VANET的性能改进进行了许多调查。由于自发性网络架构和基于移动性的通信,数据传输变得重要且复杂。与WSN模型不同,VANET具有这些参数。我们需要改善网络集群和路由的性能。VANET使车辆能够互相连接,还可以与路边站点进行连接,以支持多种应用,例如紧急警告、事故预防、道路状况、换道支持、紧急电子刹车灯指示、网页浏览、内容分发、地图更新、视频下载、游戏、娱乐等。VANET可以提供安全性,并通过向车辆驾驶员或车辆提供信息来减轻道路交通的副作用。
在聚类中,将VANET分成小组,限制通道争用,并有效控制网络拓扑。车辆自组织网络(VANET)旨在在车辆之间传播安全信息,以提高道路安全性和防止事故。VANET是移动自组织网络(MANET)的一种特殊形式,其中车辆配备了无线通信设备(车载单元(OBU)),以提供自组织连接。不同类型的通信包括车辆到传感器、车辆到车辆、车辆到互联网和车辆到道路基础设施。通信是VANET中的一个重要研究主题。VANET技术的主要目的是通过车辆之间的V2V和V2I来支持安全和非安全相关的应用。由于其动态性,VANET面临许多挑战。为了应对VANET的动态结构,需要一种高效且有效的路由方案来进行数据传播。在没有高效路由方案的情况下,车辆可能无法交换信息,并丧失先进VANET技术所提供的所有优势。文献中描述了许多提出的路由方案来应对VANET的动态结构。VANET在广播协议上具有高通信开销,会传播大量消息。传统的单跳聚类算法在VANET的拓扑动态变化影响下表现不佳。

📚2 运行结果

部分代码:

X = min1+(max11-min1)*rand(1,N);
Y = min1+(max1-min1)*rand(1,N);
R=100; %sensor field Radius
%co-ordinates of base station
Xb = max11+2+rand(1,1);
Yb =(max1+2)+rand(1,1);
%% Normalized vehicle velocity 
maxv=50;
minv=10;
vel=rand(1,N);

%% Node Buffersize
E=rand(1,N);%1.*ones(1,N); % intialize node Buffersize
minTh=E/2;     %% minTh for buffer
%%
figure,
for i2 = 1:N 
          plot(X(i2),Y(i2),'o','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','b',...
                    'MarkerSize',8'); 
          xlabel('X in m')
          ylabel('Y in m')
          text(X(i2), Y(i2), num2str(i2),'FontSize',10); 
          hold on;
end
hold on
         plot(Xb,Yb,'s','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','y',...
                    'MarkerSize',12'); 
          xlabel('X in m')
          ylabel('Y in m')
          text(Xb, Yb, 'Sink','FontSize',10); 
          hold on;
%% Equal-zone division
zX=0:100:max11;
zY=0:100:max1;
id=zeros(1,N);
%ipd=1;
ik1=1;
for ik=1:numel(zX)-1
    for ij=1:numel(zY)-1
    rectangle('Position',[zX(ik) zY(ij) 100 100])
    points =[zX(ik) zY(ij); zX(ik)+100 zY(ij);  zX(ik)+100 zY(ij)+100 ;zX(ik) zY(ij)+100 ;zX(ik) zY(ij)]
    
    line(1:400,100.*ones(1,400),'Color','r','LineWidth',4)
    
    if(~isempty(RSU))
        
        plot(RSU(1),100,'^','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','g',...
                    'MarkerSize',11'); 
          xlabel('X in m')
          ylabel('Y in m')
          %text(Xb, Yb, 'Base','FontSize',10); 
          hold on;
    end
    
    %figure(2)
    %plot(points(:,1),points(:,2),'-*r')
    [in,on]=inpolygon(X,Y,points(:,1),points(:,2))
    
    ind=find(in==1);
     
     if(~isempty(RSU))
         if(RSU(1)>zX(ik) && RSU(1)<zX(ik+1))
         ind=[];
         end
     else
         
    
     %% Max Buffersize CHM
    Ec=E(ind);      
    SN1=ind;
    SN(ik1).id=ind;
    L=0.*ind;%label
        
    [val1,ind2]=sort(Ec,'descend');
    MonitorID(ik1)=ind(ind2(1));
       
    ipd0=find(ind==ind(ind2(1)));
    L(ipd0)=1; %CHM
    plot(X(MonitorID(ik1)),Y(MonitorID(ik1)),'o','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','g',...
                    'MarkerSize',10'); 
          xlabel('X in m')
          ylabel('Y in m')
          %text(Xb, Yb, 'Base','FontSize',10); 
          hold on;
          
    %% Pch%
    chmtosinkdist=abs(X(MonitorID(ik1))-Xb); 
    pc=distpch(chmtosinkdist);
    s1=ceil((pc/100)*numel(ind))
    SN(ik1).s1=s1;   
    
    %% Adaptive Clustering
    pos1=[X(ind) Y(ind)];
    vel1=vel(ind);
    Bs=E(ind);
    posd=pdist2([X(ind); Y(ind)]',[zX(ik)+50 zY(ij)+50]);
   
    w1=0.6;
    w2=0.2;
    w3=0.2;
    W=w1.*posd+w2.*vel1'+w3.*Bs';
    
    
    rng('default')  % For reproducibility
    [idx3,C,sumdist3] = kmeans([X(ind)+W'; Y(ind)+W']',s1,'Distance','cityblock','Display','final');
    
    idx=unique(idx3);
    
    for ip=1:numel(idx)
       ind3= find(idx3==idx(ip));
       % select CH
       [val,ind2]= min(abs(W(ind3)-C(ip)))
       
       L((ind3(ind2(1))))=ip+1;
       
       % assign cluster member       
       ind3(ind2(1))=[];
       L((ind3))=ip+1+0.1;      
        
    end
    %L(ipd0)=1; %CHM
    %plot
    
    
    

   

    L
    disp('hello');
    
%     if(numel(ind)~= numel(L))
%        pause,
%        break;
%     end
    SN(ik1).L=L;
    SN(ik1).Z=(ik1).*ones(1,numel(L));

X = min1+(max11-min1)*rand(1,N);
Y = min1+(max1-min1)*rand(1,N);
R=100; %sensor field Radius
%co-ordinates of base station
Xb = max11+2+rand(1,1);
Yb =(max1+2)+rand(1,1);
%% Normalized vehicle velocity 
maxv=50;
minv=10;
vel=rand(1,N);

%% Node Buffersize
E=rand(1,N);%1.*ones(1,N); % intialize node Buffersize
minTh=E/2;     %% minTh for buffer
%%
figure,
for i2 = 1:N 
          plot(X(i2),Y(i2),'o','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','b',...
                    'MarkerSize',8'); 
          xlabel('X in m')
          ylabel('Y in m')
          text(X(i2), Y(i2), num2str(i2),'FontSize',10); 
          hold on;
end
hold on
         plot(Xb,Yb,'s','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','y',...
                    'MarkerSize',12'); 
          xlabel('X in m')
          ylabel('Y in m')
          text(Xb, Yb, 'Sink','FontSize',10); 
          hold on;
%% Equal-zone division
zX=0:100:max11;
zY=0:100:max1;
id=zeros(1,N);
%ipd=1;
ik1=1;
for ik=1:numel(zX)-1
    for ij=1:numel(zY)-1
    rectangle('Position',[zX(ik) zY(ij) 100 100])
    points =[zX(ik) zY(ij); zX(ik)+100 zY(ij);  zX(ik)+100 zY(ij)+100 ;zX(ik) zY(ij)+100 ;zX(ik) zY(ij)]
    
    line(1:400,100.*ones(1,400),'Color','r','LineWidth',4)
    
    if(~isempty(RSU))
        
        plot(RSU(1),100,'^','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','g',...
                    'MarkerSize',11'); 
          xlabel('X in m')
          ylabel('Y in m')
          %text(Xb, Yb, 'Base','FontSize',10); 
          hold on;
    end
    
    %figure(2)
    %plot(points(:,1),points(:,2),'-*r')
    [in,on]=inpolygon(X,Y,points(:,1),points(:,2))
    
    ind=find(in==1);
     
     if(~isempty(RSU))
         if(RSU(1)>zX(ik) && RSU(1)<zX(ik+1))
         ind=[];
         end
     else
         
    
     %% Max Buffersize CHM
    Ec=E(ind);      
    SN1=ind;
    SN(ik1).id=ind;
    L=0.*ind;%label
        
    [val1,ind2]=sort(Ec,'descend');
    MonitorID(ik1)=ind(ind2(1));
       
    ipd0=find(ind==ind(ind2(1)));
    L(ipd0)=1; %CHM
    plot(X(MonitorID(ik1)),Y(MonitorID(ik1)),'o','LineWidth',1,...
                    'MarkerEdgeColor','k',...
                    'MarkerFaceColor','g',...
                    'MarkerSize',10'); 
          xlabel('X in m')
          ylabel('Y in m')
          %text(Xb, Yb, 'Base','FontSize',10); 
          hold on;
          
    %% Pch%
    chmtosinkdist=abs(X(MonitorID(ik1))-Xb); 
    pc=distpch(chmtosinkdist);
    s1=ceil((pc/100)*numel(ind))
    SN(ik1).s1=s1;   
    
    %% Adaptive Clustering
    pos1=[X(ind) Y(ind)];
    vel1=vel(ind);
    Bs=E(ind);
    posd=pdist2([X(ind); Y(ind)]',[zX(ik)+50 zY(ij)+50]);
   
    w1=0.6;
    w2=0.2;
    w3=0.2;
    W=w1.*posd+w2.*vel1'+w3.*Bs';
    
    
    rng('default')  % For reproducibility
    [idx3,C,sumdist3] = kmeans([X(ind)+W'; Y(ind)+W']',s1,'Distance','cityblock','Display','final');
    
    idx=unique(idx3);
    
    for ip=1:numel(idx)
       ind3= find(idx3==idx(ip));
       % select CH
       [val,ind2]= min(abs(W(ind3)-C(ip)))
       
       L((ind3(ind2(1))))=ip+1;
       
       % assign cluster member       
       ind3(ind2(1))=[];
       L((ind3))=ip+1+0.1;      
        
    end
    %L(ipd0)=1; %CHM
    %plot
    
    
    

   

    L
    disp('hello');
    
%     if(numel(ind)~= numel(L))
%        pause,
%        break;
%     end
    SN(ik1).L=L;
    SN(ik1).Z=(ik1).*ones(1,numel(L));

🎉3 参考文献

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

🌈4 Matlab代码、数据、文献

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值