本帖最后由 whitenote0 于 2018-3-5 16:00 编辑
clear clc
Total_time=30;%总仿真时间
Total_length=1000;%车道长度是1千米
R=300;%通信范围半径是300米
T=0.1;%更新周期0.1秒
average_v=25;%暂定平均速度为90千米每时
K=0.01*randi([1,9],1,50);%车辆密度,随机生成50个0.01~0.09的数
Q=average_v*K;%平均流量,单位时间s内路口经过多少辆车
arr_mean=1./Q;%平均到达时间
for ii=1:50
events=[];%车辆到达事件初始化
events(1,:)=exprnd(arr_mean(ii),1,150);%按负指数分布产生各车辆到达的时间间隔
events(1,:)=cumsum(events(1,:));%各车辆的到达时刻等于时间间隔的累积和
len_sim=sum(events(1,:)<=Total_time);%计算车辆个数,到达时刻在仿真时间内的车辆个数
X=['平均到达时间=',num2str(arr_mean(ii)),' 车辆个数=',num2str(len_sim)];
disp(X);
events(2,:)=randi([17,33],1,150);%各车辆的速度随机分配,16.7~33.3m/s
events(3,:)=randi([0,2],1,150);%随机分配车道
for jj=1:len_sim
if events(3,jj)<=1
events(3,jj)=1;
else
events(3,jj)=2;
end
end%随机分配车道号1和2
a=randi([1,len_sim],1,1);%车辆a要发送消息
D=[];%矩阵初始化
lambda=[];
if ((a+10)1)%邻居车辆在序列中间。第1种情况 0 a-10 a a+10 len_sim
for k=(a-10):(a+10)%基于优先指数的D2D连接对选择流程,视前后20辆车为邻居车辆
if k==a%排除发送信息车辆自身
continue;
else
if events(3,a)==eve