首页 > 其他分享 >m车载自组织网络(Vehicular Ad-hoc Network,VANET)通信系统的matlab仿真

m车载自组织网络(Vehicular Ad-hoc Network,VANET)通信系统的matlab仿真

时间:2023-05-08 22:57:50浏览次数:45  
标签:VANET Ad ... Kjam plot length zeros 车辆 Network

 

1.算法仿真效果

 

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

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

 

         这里根据那个fluid dynamic model 和stochastic model模型,这里使用一种如下的车辆移动模型,能够反映出车辆移动的随机性和连续性。

 

 

 

        首先,考虑到第三步骤的实际的问题的仿真,因此,我们在这里,就必须考虑符合实际VANET的车辆移动模型。

 

 

 

        第一:要反映出真实的城市道路情况,比如车道,十字路口,速度限制。

 

 

 

        第二:正确反映车的运动规律。

 

 

 

        针对第一种情况,我们需要考虑节点运动模型,对于第二种情况,我们需要考虑车辆的随机运动情况(类似于论文的stochastic model模型)

 

 

 

      对于任意时刻t,某两个车辆的速度分别为:和,为了保证整个行驶过程是安全的,车与车之间必须保持一个安全的距离,设这个安全距离为。那么相对于前一个车辆来讲,后一个车辆的安全速度为:

 

 

 

 

 

 

 

 

 

 

 

        从宏观角度考虑,那么就是整个车道网络中,车流的移动情况,这里我们使用如下的数学原理:

 

 

 

         宏观移动模型,将道路拓扑视为任意方向的街道并任意连接而组成的网络图。两个拐角之间的街道定义为块。将一个块上的一组车辆视为一个单元,该单元的车辆共享一组参数:速度 v,车流密度 k 和车流体积 q = kv。

 

 

 

        将车流视为典型的流体后,车辆的速度和车辆密度的关系为:

 

 

 

 

 

 

 

        针对不同的road segment。

 

 

 

 

 

 

 

        对于每个road的segment,我们使用随机模型,将直线路线上的车流进行分流,即满足一定概率的车流左右转弯,而同时,由于一定概率的车流会从垂直的线路行驶入直线线路上。这个过程我们使用随机过程分析,假设每个车流得到每个路口的时候,会以0.5的概率继续向前行驶,以0.25的概率左右转弯。然后车辆对这三个方向的判断,满足泊松分布。

 

 

 

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

%分析Kjam和流量的关系;
q1   = zeros(1,length(Kjam));
q2   = zeros(1,length(Kjam));
q3   = zeros(1,length(Kjam));
for i = 1:length(Kjam)
    n     = 1;
    V0    = c*Kjam(i)^((n+1)/2)/(n+1)/(n+1);
    q1(i) = V0*k*(1-(k/Kjam(i))^((n+1)/2));
    n     =-0.5;
    V0    = c*Kjam(i)^((n+1)/2)/(n+1)/(n+1);
    q2(i) = V0*k*(1-(k/Kjam(i))^((n+1)/2));
    n     =-1;
    q3(i) = c*k*log(Kjam(i)/k);
end
figure;
plot(Kjam,q1,'b-s',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
hold on;
plot(Kjam,q2,'r-o',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
plot(Kjam,q3,'k-^',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.0,0.9]);
hold off;
grid on
xlabel('Kjam');
ylabel('Q');
legend('Greenshield','Drew','Greenberg');
 
 
 
%%
%步骤二
T    = [0:1:7500];%全部为绿灯的情况
V1   = zeros(1,length(T));
V2   = zeros(1,length(T));
Vsafe= zeros(1,length(T));
Videa= zeros(1,length(T));
dsafe= zeros(1,length(T));%车辆之间的安全距离
Dxd  = zeros(1,length(T));
 
V01  = 50000/3600;%前一辆车子的初始速度
V02  = 50000/3600;%前一辆车子的初始速度
a1   = 0;%前一个车子加速度
a2   = 0.01;%后一个车子加速度
Vmax = 80000/3600;%公里最大限速
d1   = 0;
d2   = 0;
............................................................................
figure;
subplot(211);
plot(T,V1,'g','linewidth',4);
hold on
plot(T,V2,'r--');
hold on
xlabel('Times(s)');
ylabel('V');
legend('real V of car1','real V of car2');
 
 
subplot(212);
plot(T,Dxd,'g','linewidth',2);
xlabel('Times(s)');
ylabel('the distance between 2 cars');
 
%出现红灯,减速
T    = [0:0.01:60];%全部为绿灯的情况
V1   = zeros(1,length(T));
V2   = zeros(1,length(T));
Vsafe= zeros(1,length(T));
Videa= zeros(1,length(T));
dsafe= zeros(1,length(T));%车辆之间的安全距离
Dxd  = zeros(1,length(T));
 
V01  = 50000/3600;%前一辆车子的初始速度
V02  = 50000/3600;%前一辆车子的初始速度
a1   = -0.5;%前一个车子加速度
a2   = -0.47;%后一个车子加速度
Vmax = 80000/3600;%公里最大限速
d1   = 0;
d2   = 0;
..............................................................................
figure;
subplot(211);
plot(T,V1,'b','linewidth',2);
hold on
plot(T,V2,'r--');
hold on
xlabel('Times(s)');
ylabel('V');
legend('real V of car1','real V of car2');
subplot(212);
plot(T,Dxd,'b','linewidth',2);
xlabel('Times(s)');
ylabel('the distance between 2 cars');

 

  

 

 

标签:VANET,Ad,...,Kjam,plot,length,zeros,车辆,Network
From: https://www.cnblogs.com/51matlab/p/17383403.html

相关文章

  • 【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP
    问题描述查看JavaStorageSDK,想找一个 uploadWithResponse 的示例代码,但是通过全网搜索,结果没有任何有帮助的代码。使用最近ChatGPT来寻求答案,得到非常有格式的内容:问:javaazurestorageaccounttouseuploadWithResponse答:TousetheuploadWithResponsemethodw......
  • 关于使用kubeadm reset命令对kubeadm init与kubeadm join操作后遇到报错的情况-进行恢
    在Kubernetes/k8s集群中,无论是在开始的master节点初始化,还是后面客户端使用kubeadmjoin命令加入到集群可能都会遇到很多报错,对于新手来说、很多还不是很好解决、也有一些情况,是在初始化之前忘记执行一些操作,而导致报错这种一般都需要执行漏掉的操作,重新执行初始化操作,但是如......
  • 【五期邹昱夫】CCF-A(NeurIPS'19)Inverting gradients-how easy is it to break privacy
    "GeipingJ,BauermeisterH,DrögeH,etal.Invertinggradients-howeasyisittobreakprivacyinfederatedlearning?[J].AdvancesinNeuralInformationProcessingSystems,2020,33:16937-16947."  本文发现梯度的方向比其范数幅值携带了更加重要的信息,以......
  • vivado和questasim联合开发环境搭建
    vivado2018.3与questasim10.6c联合开发环境搭建vivado2018.3安装略questasim10.6.c安装下载链接:https://pan.baidu.com/s/1UtPk8cM5OCzgOG32opwddA?pwd=xjy1提取码:xjy1安装以管理员权限运行安装包一路下一步注意这一步:破解复制'patch_dll.bat'和'......
  • Hadoop的运行模式
    Hadoop官方网站http://hadoop.apache.org/Hadoop运行模式本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。完全分布式模式:多......
  • tornado面试题
    tornado1、tornado中的gen.coroutine的作用?#tornado的coroutine装饰器,使得回调函数可以用同步的方式实现,极大提高了代码的可读性。它的实现涉及到了yield,ioloop和Future的模块。2、简述tornado框架特点及应用场景。#web聊天室,在线投票等操作!3、tornado框架中Futu......
  • ThreadLocal让你的多线程编程更简单【Java多线程必备】
    一、介绍ThreadLocal是Java中的一个线程局部变量,该变量在多线程并发执行时,为每个线程都提供了一个独立的副本。简单来说,ThreadLocal提供了一种在多线程环境中,使每个线程绑定自己独立的变量的方法,每个线程可以独立地改变自己的副本,而不会影响其他线程所对应的副本。二、特性1.......
  • ASEMI代理ADI亚德诺LT8609AJDDM#WTRPBF车规级芯片
    编辑-ZLT8609AJDDM#WTRPBF特点:宽输入电压范围:3.0V至42V超低静态电流突发模式®操作:将12VIN调节到3.3VOUT时IQ为2.5µA输出纹波<10mVP-P高效2MHz同步操作:1A时效率为93%,12VIN可获得5VOUT最大连续输出为3A快速最短开关接通时间:45nsLT8609A提供固定的......
  • GUI_UPLOAD-上传txt文件
    *&---------------------------------------------------------------------**&ReportZ016*&*&---------------------------------------------------------------------**&*&上传TXT文件*&----------------------------------------------......
  • “git add -A” 和 “git add .” 的区别
    gitadd-A和gitadd.gitadd-u在功能上看似很相近,但还是存在一点差别gitadd. :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。gitadd-u :他仅监控已经被add的文件(即trackedfile),他会......