实验二 单车道车辆减速跟驰仿真

  • 实验要求

仿真出单车道上两辆车的减速跟驰行为(采用刺激-反应模型)。

主要参数包括但不限于(以下均通过随机数产生):

1)两车的初始间距;

2)两车的初始速度(匀速);

3)前车刹车的加速度和时刻;

4)后车的反应时间;

输出包括但不限于:

  1. 两车的初速度;
  2. 辆车的初始间距;
  3. 前车刹车的加速度和时刻;
  4. 后车的反应时间;
  5. 后车的加速度;
  6. 两车的停车位置;
  7. 有无追尾。

鼓励使用可视化界面展示,也可以用Console程序输出结果。

  • 实验环境

Python,Pycharm

  • 实验原理

跟驰模型实际上是关于反应—刺激的关系式,它是根据驾驶员接受某种刺激后作出的反应来分析和研究车辆列队行驶时发生的跟驰现象,其表现形式用方程 表示为:反应=灵敏度×刺激 根据下图所示的线性跟驰的车辆示意图,运用跟驰理论知识,推导出线性 跟驰模型。

1)车辆跟驰模型

定义:

同一车道中无法超车的相邻车辆相互作用

基本情境:

自由流:后随车选择紧跟前导车

拥挤:后随车被迫跟随前导车

跟驰行为影响因素:

个性差异:驾驶员年龄、性别、技能、

车辆类型、性能

状态因素:环境&个人

区域1:后随车距离

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
参数设置与说明: - 路长度为L,单位为米; - 每个时刻t,车辆以速度v前进一个元胞长度d=5m; - 每个时刻t,车辆以概率p减速一个元胞长度d=5m; - 车辆最大速度v_max=25m/s; - 车辆最大加速度a_max=2m/s^2,最大减速度a_min=-4m/s^2; - 车辆长度分别为2m(小汽车)和4m(货车); - 车辆密度为k,单位为辆/km。 基本步骤: 1. 初始化路,将车辆随机分布在路上; 2. 对每个时刻t,按照以下方式更新车辆状态: - 计算车辆与前车之间的距离s,并根据当前速度调整车距; - 考虑前车的速度、位置等信息,计算车辆当前时刻的加速度; - 根据车辆当前速度和加速度更新车辆状态(位置和速度); - 考虑随机慢化概率p,有一定概率减速; 3. 重复步骤2,直到模拟结束。 流程图如下: ``` 1. 初始化路 2. for t=1:T 3. for i=1:N 4. 计算车辆与前车之间的距离s 5. 根据当前速度调整车距 6. 计算车辆当前时刻的加速度 7. 根据车辆当前速度和加速度更新车辆状态(位置和速度) 8. 考虑随机慢化概率p,有一定概率减速 9. end for 10. end for ``` Matlab代码如下: ```matlab % 模拟参数设置 L = 500; % 路长度 d = 5; % 元胞长度 v_max = 25; % 最大速度 a_max = 2; % 最大加速度 a_min = -4; % 最大减速度 p = 0.2; % 随机慢化概率 k = 50; % 车辆密度 % 初始化路 n_cells = L / d; % 元胞数 road = zeros(1, n_cells); % 路状态,0表示空车位,1表示有车 for i = 1:k road(i) = randi([1 2]); % 随机分布小汽车和货车 end % 模拟循环 T = 100; % 模拟时长 for t = 1:T for i = 1:n_cells % 计算车辆与前车之间的距离 if road(i) ~= 0 j = i + 1; while j <= n_cells && road(j) == 0 j = j + 1; end if j <= n_cells s = j - i; else s = n_cells - i + 1; end else s = Inf; end % 根据当前速度调整车距 v = min(road(i), v_max); if s <= v v = s - 1; end % 计算车辆当前时刻的加速度 if i == n_cells a = 0; else v_ahead = min(road(i+1), v_max); s_star = 2 + v + v * (v - v_ahead) / (2 * sqrt(a_max * a_min)); if s <= s_star a = -a_max; elseif v < v_ahead a = min(a_max, (s_star - s) / (v / 2)); else a = 0; end end % 根据车辆当前速度和加速度更新车辆状态(位置和速度) road(i) = max(road(i) + round(v) * d, 0); road(i) = min(road(i) + round(v + a) * d, n_cells); % 考虑随机慢化概率p,有一定概率减速 if rand() < p road(i) = max(road(i) - d, 0); end end end % 绘制车辆分布图 x = linspace(0, L, n_cells+1); y = x(2:end) - d/2; scatter(y(road==1), zeros(1, sum(road==1)), 'b'); hold on; scatter(y(road==2), zeros(1, sum(road==2)), 'r'); xlabel('Position (m)'); ylabel('Vehicle type'); ylim([-1 1]); legend({'Small car', 'Truck'}); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值