資源簡介
利用matlab進行元胞自動機仿真代碼,歡迎下載參考!!

代碼片段和文件信息
%?Nagel?Schreckenberg?model?simulation
%Written?by?Alexander?Farley
%Feb?6?2012
%alexander.farley?at?utoronto.ca
%This?script?implements?the?Nagel?Schreckenberg?cellular?automata?based
%traffic?model.?Flow?vs?density?curves?are?displayed.
%
%
%Update?June?5?2012:?Fixed?problem?in?vehicle?velocity?updates
%Update?Jan?13?2013:?Fixed?problem?with?vmax=1?showing?no?flow
%Update?June?12?2013:?Corrected?calculation?of?flow?rate?for?FD?plot
%
%Parameters
vmax?=?10;
p?=?0.6;%原始數據0.8
road_length?=?1000;
simulation_steps?=?1000;
render_on?=?0;
pause_on?=?0;
delay_on?=?0;
delay_length?=?0.02;?%10?FPS
road?=?zeros(1road_length);???????%Contains?occupation?state
road_next?=?road;
velocities?=?zeros(1road_length);?%Contains?velocity?state
velocities_next?=?velocities;
%Sampling
num_samples?=?2000;
samples?=?zeros(2num_samples);?%Contains?density?and?flow?rate
density_step?=?1/num_samples;
history?=?zeros(simulation_steps?road_length);
velocity_history?=?zeros(simulation_steps?road_length);
figure
for?g=1:num_samples;
????
????%Generate?traffic
????road?=?zeros(1road_length);???????%Contains?occupation?state
????road_next?=?road;
????density?=?g/num_samples;
????
????%Generate?traffic
????
????for?i=1:road_length
????????if?rand?????????????road(i)?=?1;
????????end
????end
????
????if?render_on
????????imshow(road);
????????drawnow
????end
????
????%Run?simulation
????for?i=1:simulation_steps
????????history(i?:)?=?road;
????????velocity_history(i:)?=?velocities;
????????%--------------------Velocity?update?------------------------%
????????for?j=1:road_length
????????????if?road(j)?==?1
????????????????distance?=?0;
????????????????%Seek?vmax?ahead
????????????????bf?=?0;
????????????????for?k=1:vmax
????????????????????distance?=?k;
????????????????????
????????????????????if?j+k?<=?road_length?%The?index?is?the?“cell?under?consideration“?-?is?it?safe?to?land?here?
????????????????????????index?=?j+k;
????????????????????else
????????????????????????index?=?j+k-road_length;?%Deal?with?wrapping
????????????????????end
????????????????????
????????????????????if?road(index)?==?1
????????????????????????bf?=?1;
????????????????????end
????????????????????
????????????????????if?bf?==?1?break?end
????????????????end
????????????????
????????????????if?velocities(j)?????????????????????velocities(j)?=?velocities(j)?+?1;
????????????????end
????????????????
????????????????if?(velocities(j)?>?distance?-?1)?&&?bf?==?1?%Collision?avoidance
????????????????????velocities(j)?=?distance?-?1;
????????????????end
????????????????
????????????????if?rand??0?%Random?braking
????????????????????velocities(j)?=?velocities(j)?-?1;
????????????????end
????????????????
????????????????
????????????end
????????end
????????
????????%--------------------Movement?-------------------------------%
????????for?j=1:ro
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4340??2016-06-27?17:16??NaSchr.m
?????文件????????340??2016-06-27?17:14??ts.m
-----------?---------??----------?-----??----
?????????????????4680????????????????????2
評論
共有 條評論