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

📄 traffic2.m

📁 元胞自动机的matlab程序。 元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元胞自动机是定义在网格上的
💻 M
字号:
function traffic2(n,t) 
% This is a program for "a quasi-automaton approach to 
% traffic2 modeling "      Example: traffic2(100,8,6); 
%       n是进站前的公路的格数 
%       t是tollbooth的数量参数
 if nargin==0;n=60;t=7;m=20; end 
 B=round(m*rand(9,n+2)); B=[B  ones(9,20)]; B(B~=0)=1; %初始状态的设定
 B([1,3,5,7,9],:)=1.2;B(:,end-19:end-15)=0.5;H=imshow(B,[]); 
 set(gcf,'position',[241 132 560 420],'doublebuffer','on') 
  xlabel('Please press "space" key and stop this program!',... 
 'fontsize',12,'color','r'); 
 k=1;aa=0;a=0;pause
 while k; 
  s=get(gcf,'currentkey');                             %开关语句                 
  if strcmp(s,'space'); clc;k=0; end                   %开关语句
  for dt=0:240*3;                                      %以24×30次循环作为一天时间的模拟
  if (0<=dt&dt<50*3)|(220*3<=dt&dt<=240*3); m=20;      %离散一天的时间
  elseif (50*3<=dt&dt<70*3)|(180*3<=dt&dt<220*3);m=15;
  elseif (70*3<=dt&dt<90*3);m=4;
  elseif (150*3<=dt&dt<180*3);m=5;
  elseif (90*3<=dt&dt<110*3)|(140*3<=dt&dt<150*3);m=13;
  else(110*3<=dt&dt<140*3);m=16;
  end
   if aa>0&rem(a,round(40/t)-3)==0                     %tollbooth模型,隔round(40/t)-3次处理一辆车
      g=ceil(rand(1)*4);gg=ones(4,1);gg(g)=0;
      B([2,4,6,8],end-15)=gg;        
      aa=aa-1;
   else
    B([2,4,6,8],end-15)=1;
   end                                       
  a=a+1;
  A=B([2,4,6,8],1:end-1);C=A(:,2:end);
  C(A(:,2:end)==0&A(:,1:end-1)==0)=0;                  %规则一 (p132) 
  C(A(:,2:end)==1&A(:,1:end-1)==0)=0;                  %规则二  
  C(A(:,2:end)==0&A(:,1:end-1)==1)=1;                  %规则三
  C=[round(m*rand(4,1)) C];C(C~=0)=1;                  %车辆随机发生器 
  B([2,4,6,8],1:end-1)=C;
  Cend=C(:,end-18);sl=4-sum(Cend,1);aa=sl+aa;         %滞留车辆计数器(aa>4时为拥塞)  
  h1=uicontrol('style','text', 'TooltipString','StaticText','string',aa);                      
  h2=title(['T = ',num2str(floor(dt/30))]);           %显示模拟一天中的所在时间
  B(:,end-18:end-16)=0.5;set(H,'CData',B);pause(0.1); 
 end
figure(gcf); 
end

⌨️ 快捷键说明

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