资源描述:
《2014美国数学建模竞赛 MCM A题 元胞自动机完整代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、2014美赛相关MATLAB程序(基于NS模型)主程序:NaSch_3.m程序代码%单车道最大速度3个元胞开口边界条件加速减速随机慢化clfclearall%buildtheGUI%definetheplotbuttonplotbutton=uicontrol('style','pushbutton',...'string','Run',...'fontsize',12,...'position',[100,400,50,20],...'callback','run=1;');%definethestopbuttonerasebutton=uicontrol('style','pushb
2、utton',...'string','Stop',...'fontsize',12,...'position',[200,400,50,20],...'callback','freeze=1;');%definetheQuitbuttonquitbutton=uicontrol('style','pushbutton',...'string','Quit',...'fontsize',12,...'position',[300,400,50,20],...'callback','stop=1;close;');number=uicontrol('style','text',...'st
3、ring','1',...'fontsize',12,...'position',[20,400,50,20]);%CAsetupn=100;%数据初始化z=zeros(1,n);%元胞个数z=roadstart(z,5);%道路状态初始化,路段上随机分布5辆cells=z;vmax=3;%最大速度v=speedstart(cells,vmax);%速度初始化x=1;%记录速度和车辆位置memor_cells=zeros(3600,n);memor_v=zeros(3600,n);imh=imshow(cells);%初始化图像白色有车,黑色空元胞set(imh,'erasemode',
4、'none')axisequalaxistightstop=0;%waitforaquitbuttonpushrun=0;%waitforadrawfreeze=0;%waitforafreeze(冻结)while(stop==0)if(run==1)%边界条件处理,搜素首末车,控制进出,使用开口条件a=searchleadcar(cells);b=searchlastcar(cells);[cells,v]=border_control(cells,a,b,v,vmax);i=searchleadcar(cells);%搜索首车位置forj=1:iifi-j+1==n[z,v]=lea
5、dcarupdate(z,v);5continue;else%======================================加速、减速、随机慢化ifcells(i-j+1)==0;%判断当前位置是否非空continue;elsev(i-j+1)=min(v(i-j+1)+1,vmax);%加速%=================================减速k=searchfrontcar((i-j+1),cells);%搜素前方首个非空元胞位置ifk==0;%确定于前车之间的元胞数d=n-(i-j+1);elsed=k-(i-j+1)-1;endv(i-j+1)=m
6、in(v(i-j+1),d);%==============================%减速%随机慢化v(i-j+1)=randslow(v(i-j+1));new_v=v(i-j+1);%======================================加速、减速、随机慢化%更新车辆位置z(i-j+1)=0;z(i-j+1+new_v)=1;%更新速度v(i-j+1)=0;v(i-j+1+new_v)=new_v;endendendcells=z;memor_cells(x,:)=cells;%记录速度和车辆位置memor_v(x,:)=v;x=x+1;set(imh,
7、'cdata',cells)%更新图像%updatethestepnumberdiaplaypause(0.2);stepnumber=1+str2num(get(number,'string'));set(number,'string',num2str(stepnumber))endif(freeze==1)run=0;freeze=0;enddrawnowend//////////////////////////////////