MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码图像分析
基于matlab交通道路交通流的仿真        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:破解软件 - 图像分析

推荐星级:

更新时间:2014-02-03 10:49:28

源码简介

clear all
clc
%==========================================================================
%                            可修改参数
%==========================================================================
% 确定车位的数量
car_number = 60;
% 初始车生成概率
r = 0.5;
% 循环次数 circle
circle = 80000;
% 最大速度 Vmax
Vmax = 5;
% 减速的概率 p 
p = 0.2;
% 观察点位置
obs_pos = 50;
% 把 cluster 秒钟平均考虑
cluster = 100;
% 最后一步减速的概率
p_last = 0.5;
 
%==========================================================================
%==========================================================================
 
% 确定画面1的大小
subplot(2,1,1)
% 确定坐标大小
axis([-1 car_number+1 -6 6])
axis off
grid off
% 标签
text(car_number/2,2.5,xlate('Cell Automata'), 'HorizontalAlignment',...
'center');
axis on;
% 绘制道路和网格
road = patch([0 0 car_number car_number], [-.35 .35 .35 -.35], 'g');
for i=1:car_number
    line([i i],[-0.35 0.35],'Color','b');
end
% 判断向量
% dec = zeros(1, car_number); % 用于判断路上是否有车
 
%==========================================================================
%                              生成初始车辆分布
%==========================================================================
% % 初始车生成概率 r
% % 车位向量
all_car=zeros(1,car_number);
% 生成车的初始分布
for i=1:car_number
    if rand(1)<r
        all_car(i) = line(i-0.5,0,'color','k','marker','s','markersize',...
        5,'MarkerFaceColor','y', 'erasemode','xor');
    else
        all_car(i) = line(i-0.5,0,'color','k','marker','s','markersize',...
        0.001,'MarkerFaceColor','y', 'erasemode','xor');
    end    
end
dec = zeros(1, car_number);
%==========================================================================
%                                 变量设置
%==========================================================================
% 循环次数 circle
% 最大速度 Vmax
% 减速的概率 p 
 
% 瞬时速度向量
v = ones(1,car_number+1); % 包括进来车的速度
% 安全速度向量
v_safe = zeros(1,car_number+1); % 包括进来车的速度
% 经过观察点 car_position 的车的数量 car_pass 分布 每秒观察一次
car_pass = zeros(1,circle);
% 对应时刻的整体密度
density = zeros(1,circle);
% 车辆到达分布向量 
% 临时变量 temp
a = zeros(1,circle);
temp = ones(1,circle/cluster);
% temp = rand(1,circle/cluster);
for i = 1:circle/cluster
        temp(i) = i/(circle/cluster);
end
 
for i=1:circle/cluster
    a(1+cluster*(i-1):cluster*i) = temp(i);
end
% =========================================================================
%                                运行过程
% =========================================================================
% 车辆到达分布向量 a 
for i = 1:circle
    % gap的计算
    gap = gap_generate(dec);
    
    % 安全速度的计算
    for k = 1:car_number+1
        v_safe(k) = min([v(k)+1, gap(k), Vmax]);
    end
 
    % 瞬时速度的计算
    v(1) = v_safe(1);  % 对将进入的车我们假设它不减速,即到达后如果前面有空位,
                       % 则一定进入系统
    for j=2:car_number
        if(rand(1)<p)
            v(j) = max([v_safe(j)-1, 0]);
        else
            v(j) = v_safe(j);
        end
    end
    % @@@@@@@@@@@特别限制最后一格的速度@@@@@@@@@@@@@@@@@
    if rand(1)<p_last
        v(car_number+1)=0;
    else
        v(car_number+1)=1;
    end
    
    
    % 查找所有有车的车位及此时路上的总车辆
    if max(dec)==0
        car_exist = 0;
        car_sum = 0;
    else
        car_exist = find(dec);   % 所有有车车位的序号
        car_sum = length(car_exist); % 所有车的位置
    end
 
    % 瞬时密度
    density(i) = sum(dec(obs_pos-3:obs_pos+3))/7;
    
    % local data
    c = zeros(1,car_number+2);
    
 
    % 判断下一次车位的情况
   if car_sum == 0       % 没有车在路上  
       if (rand(1)<a(i) && v(1)~=0)
            c(v(1)) = 1; 
            if v(1)>obs_pos  % 刚进来的那辆车经过 观察点
                car_pass(i) = 1;
            end
        end
    else  % 至少有一辆车在路上
        if (rand(1)<a(i) && v(1)~=0)  % 到达一辆车且其前面还有空间
            c(v(1)) = 1; 
            if v(1)>obs_pos
                car_pass(i) = 1;                
            end
        end
        for m=1:car_sum
            % 移动车: car_exist(m)为第m辆车处的位置,
            % v(car_exist(m)+1)为它能移动的距离
            c(car_exist(m)+v(car_exist(m)+1)) = 1;  
            if (car_exist(m)<=obs_pos && ...
                car_exist(m)+v(car_exist(m)+1)>obs_pos)
               car_pass(i) = 1; 
            end
        end
    end
 
    % 把 c 的前car_number个值重新赋给 dec
    dec = c(1:car_number);
%============================================
%                重绘画面
%============================================
   for pp = 1:car_number
       if dec(pp) == 1
           set(all_car(pp), 'MarkerSize',5);
       else
           set(all_car(pp), 'MarkerSize',0.001);
       end
   end
   drawnow; pause(0.1);
 end
 
%==========================================================================
%                          绘制第二张统计图
%==========================================================================
subplot(2,1,2)
 
axis([0 1 0 1])
axis on;
 
average_pass = zeros(1, circle/cluster);
average_density = zeros(1, circle/cluster);
for i = 1:circle/cluster
    average_pass(i) = sum(car_pass((1+(i-1)*cluster):(i*cluster)))/cluster;
    average_density(i) ...
    = sum(density((1+(i-1)*cluster):(i*cluster)))/cluster;    
end
plot(average_density,average_pass,'.');
 
xlabel('density k (vehicles/cell)')
ylabel('flow q (vehicles/second)')
title('k-q plot')


提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

基于matlab交通道路交通流的仿真 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:250.00000 毫秒