📄 bfts.m
字号:
%Parameters
%des=input('des=');
%while des>1 | des<0
%des=input('输入错误!请重续输入! des=:');
%end
clear all;
clc;
k=1;
den=zeros(1,(0.7-0.1)/0.005);
Flow=zeros(1,(0.7-0.1)/0.005);
for des=0.1:0.005:0.7
vm=5;
% %Initialation
sl=400;%位置数目
st=1000;%模拟时间
vel=zeros(1,sl);
car=zeros(st,sl);
%Q=denisty*sl;
de0=des*sl;%车辆总数目
car_num=de0;
for i=1:de0
for j=1:de0
sit=int16(sl*rand(1)+1);
if car(1,sit)==0,break,end
end
car(1,sit)=1;
% vel(sit)=int8(vm*rand(1));
end
%Simulation
hp=0.5;%减速概率
for t=1:st-1%计算gap=em
for i=sl:-1:1
if car(t,i)==1
em=0;
for j=1:vm
ij=i+j;
if ij>sl
ij=ij-sl;
else
ij=ij;
end
if car(t,ij)==1,break,end
em=em+1;
end
% vel(i)=min(vel(i)+1,vm);%规则1:加速
if vel(i)<vm
vel(i)=vel(i)+1;
else
vel(i)=vm;
end;
%vel(i)=min(vel(i),em);%规则2
if vel(i)>em
vel(i)=em;
else
vel(i)=vel(i);
end
if (rand(1)<hp)&(vel(i)>=1)%规则3
vel(i)=vel(i)-1;
else
vel(i)=vel(i);
end
sv=i+vel(i);%规则4
if sv>sl
%car_num=car_num-1;
sv=sv-sl;
else
sv=sv;
%car_num=car_num;
end
car(t+1,sv)=1;
vel(sv)=vel(i);
if sv==i
car(t+1,i)=1;
vel(i)=0;
else
car(t+1,i)=0;
vel(i)=0;
end
elseif car(t+1,i)==1
car(t+1,i)=car(t+1,i);
vel(i)=vel(i);
else
car(t+1,i)=0;
vel(i)=0;
end
end
tot_num=0;
for tt=1:400
if vel(tt)~=0
tot_num=tot_num+1;
end
end
v_aver(t)=sum(vel)/tot_num;
carnum=zeros(1,st);
for kk=10:100
if car(t,kk)==1
carnum(t)=carnum(t)+1;
end
end
%den(ss)=carnum(t)/90;
end
car_v(k)=sum(v_aver)/t;
Flow(k)=sum(carnum)/t;
den(k)=Flow(k)/car_v(k);
k=k+1;
end
%Diagram
%clf;
%figure(gcf)
%figure(1)
% subplot(2,2,1)
%[i,j]=meshgrid([1:sl],[1:st]);
%plot3(i,j,car,'.k','markersize',des);
%axis([1 sl 500 st 0.9999 1]);
%xlabel(' space')
%ylabel(' time')
%surf(car,'linestyle','none');
%colormap vga;
%view(359.9,89.9);
%clear all
figure(1)
plot(den,Flow,'k.')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -