自动驾驶与手动驾驶混合流仿真 matlab连续型元胞自动机交通流源代码 随机慢化,密度流量图,时空图,密度速度图 车头时距图等

一、项目定位

本平台面向“自动驾驶-人工驾驶混合交通流”研究场景,用连续型元胞自动机(Continuous Cellular Automata, CCA)思想在单车道封闭环路上重建车辆跟驰行为。核心使命只有一句话:

在可控计算成本内,用**确定论+概率论**混合模型,复现真实交通流从自由流到拥堵流的**相变过程**,并量化自动驾驶渗透比例对**通行能力、平均速度、车头间距**等关键指标的提升率。

全文聚焦“功能级”设计,源码级细节仅做概念性描述,可作为后续二次开发或论文实验的顶层手册。


二、总体架构

层级 名称 职责
1 场景层 提供封闭单车道几何、车辆长度、最大速度、加速度等静态场景参数
2 车辆层 维护车辆数组 location[]v[],负责周期性边界位置-速度同步
3 行为层 实现Gipps安全距离模型 + 随机慢化两大核心规则,输出下一时刻速度
4 指标层 热平衡时段采样,计算宏观基本图(流量-密度-速度)微观车头间距序列
5 实验层 批量扫描密度自动驾驶比例双因子,自动生成提升率曲线

三、关键概念与符号约定

符号 语义 单位 备注
lanelength 封闭环路总长 m 默认 5000 m
carlength 车身长度 m 5 ~ 7.5 m 可调
vmax 最大允许速度 m/s 37.5 m/s ≈ 135 km/h
tb / ta 反应时间 s 人工 1.5 s;自动 0.1 s
a / b 最大加/减速度 m/s² 1.5 / 2.5
Gapsafe 安全间距 m 由 Gipps 公式计算
vsafe 安全速度 m/s 由 Gipps 公式计算
p 随机慢化概率 人工 0.15;自动 0 ~ 0.2 可调

四、核心功能模块

4.1 场景初始化(startstate)

功能

在零时刻把 numcar 辆车均匀随机地撒到环路上,并赋予既不大于vmax、也不大于前车间隙的初速度。

关键流程

  1. 等分空间 zd = lanelength/numcar
  2. 每辆车在 [zd(i-1)+carlength, zdi] 内均匀采样 location(i)
  3. 速度 v(i) = min(vmax, 前车间隙),保证初始即无碰撞

4.2 车辆演化(closedriverule)

4.2.1 输入输出契约
输入 含义
location[] 当前位置向量
v[] 当前速度向量
selfcar / autocar 人工/自动驾驶车辆数
输出 含义
newlocation[] 下一时刻位置
nv[] 下一时刻速度
4.2.2 内部决策顺序(**从尾车→头车**逆向遍历)
  1. 前车索引
    封闭环路下,尾车的前车是头车;其余直接取 i+1
  2. Gap 计算
    fd = 前车.location – 自车.location – carlength(环路 wrap-around 自动处理)
  3. 安全间距与安全速度
    调用 Gap()Gipps() 得到 Gapsafevsafe
  4. 速度更新
    min(v+a, vmax, vsafe, fd) 四者最小值,保证不撞、不超、不超速
  5. 随机慢化
    只对人工车以概率 p 减速 b;自动驾驶车可关闭或降低 p
  6. 位置更新
    newlocation(i) = location(i) + nv(i)
  7. 周期性边界
    newlocation(end)>lanelength,则整队列循环左移,保证数组索引 1 始终对应最头车
4.2.3 自动驾驶差异因子
因子 人工车 自动驾驶
反应时间 tb 1.5 s 0.1 s
慢化概率 p 0.15 0 ~ 0.2 可调
减速度 b 2.5 m/s² 同左(可再调)

4.3 随机慢化(slowrand / aslowrand)

功能

人类驾驶员的无意松油门、点刹车抽象成概率 p 的瞬时减速。

接口级描述

nv = slowrand(v, p, b)

  • 生成 rand(1)
  • ≤ pv = max(v-b, 0)
  • 返回 nv

4.4 安全距离模型(Gap & Gipps)

Gap 函数

自动驾驶与手动驾驶混合流仿真 matlab连续型元胞自动机交通流源代码 随机慢化,密度流量图,时空图,密度速度图 车头时距图等

Gapsafe = v*tb + v²/(2b) – fv²/(2b)

物理意义:自车在最坏情况下(前车急刹到停)所需**净间距**

Gipps 函数

vsafe = –btb + √[ b²tb² + b(2Δx – tbv + fv²/b) ]

物理意义:在**Δx**距离内,自车以减速度 `b` 恰好停在前车尾部时的**最大安全初速度**

平台价值

经典跟驰模型浓缩成两个无副作用的纯函数,方便单元测试与硬件在环移植。


4.5 批量实验(closerun)

4.5.1 双因子扫描
因子 范围 步长
密度 10 ~ 1000 veh/h/lane 10 veh
自动驾驶比例 0% ~ 100% 10%
4.5.2 热平衡与采样
  • 预热:前 9000 步丢弃,消除初态影响
  • 采样:后 1000 步记录全部车辆的 locationv
  • 指标
  • 平均速度 avgv = mean(v)*3.6 (km/h)
  • 密度 avgk = numcar/(lanelength/1000) (veh/km)
  • 流量 avgq = avgv*avgk (veh/h)
4.5.3 提升率计算

全人工场景为基准,逐点计算

Δq = (qauto – qbase)/q_base*100%

Δv = (vauto – vbase)/v_base*100%

输出两条曲线:

  • 通行能力提高率 vs 自动驾驶比例
  • 平均速度提高率 vs 自动驾驶比例

4.6 微观可视化(可选)

  • 车头间距时序图:提取编号 149-150 两车,绘制最后 500 步间距变化
  • 时空轨迹散点图plot(t, location(i,t), '.') 直接生成时空斑图,可观察拥堵波传播与消散

五、典型输出示例

自动驾驶比例 密度 (veh/km) 速度 (km/h) 流量 (veh/h) 通行能力提升
0% 40 45 1800 0% (基准)
30% 40 58 2320 +29%
60% 40 68 2720 +51%
100% 40 78 3120 +73%

注:上述数值为示例,实际与 `vmax`、`p`、`b` 等参数绑定。


六、扩展路线(非本期交付)

  1. 双车道+变道:已预留 lanechange() 接口,支持最小间隙+概率变道
  2. CACC 字符串通信:把 tb 降为负值,模拟车间通信下的虚拟铰接
  3. GPU 批量化:把 locationv 放入 gpuArray,单核对 1 万车·万步 → 秒级
  4. SUMO 联合仿真:用本模型生成初始加载矩阵,导入 SUMO 做城市道路级验证

七、使用禁忌与边界条件

  • 密度>120 veh/km 时,Gipps 模型可能出现零速阻塞,需手动降低 p 或提高 b
  • vmax>40 m/s 时,建议把 a 下调,否则加速度过大会导致数值振荡
  • 随机慢化概率>0.25 时,基本图会出现亚稳态,重复实验需加长预热步数

八、一分钟快速上手

% 1. 改参数
lanelength = 5000;   % 环路长度
carlength  = 5;      % 车长
vmax       = 37.5;   % 最大速度
numcar     = 200;    % 车辆总数
k_auto     = 0.4;    % 自动驾驶比例

% 2. 运行
[location,v] = startstate(numcar,lanelength,carlength,vmax);
for i = 1:10000
    [location,v] = closedriverule(location,v,lanelength,carlength,vmax);
end

% 3. 看结果
meanv = mean(v)*3.6;  % km/h
density = numcar/(lanelength/1000);  % veh/km
flow = meanv*density;  % veh/h

九、结语

本平台用不到 200 行核心代码即完成宏观基本图微观车头间距的双轨输出,既能在笔记本秒级跑完批量化实验,也能在服务器端扩展为百万车·公里级的并行场景。

后续无论是做自动驾驶渗透率政策评估,还是新型 CACC 控制算法验证,只需在行为层替换自己的跟驰模型,其余骨架可零改动复用。祝使用愉快,安全驾驶,不堵车。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐