自动驾驶与手动驾驶混合流仿真:基于Matlab的连续型元胞自动机交通流模型源代码解析与可视化研...
自动驾驶与手动驾驶混合流仿真 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、也不大于前车间隙的初速度。

关键流程:
- 等分空间
zd = lanelength/numcar - 每辆车在
[zd(i-1)+carlength, zdi]内均匀采样location(i) - 速度
v(i) = min(vmax, 前车间隙),保证初始即无碰撞
4.2 车辆演化(closedriverule)
4.2.1 输入输出契约
| 输入 | 含义 |
|---|---|
location[] |
当前位置向量 |
v[] |
当前速度向量 |
selfcar / autocar |
人工/自动驾驶车辆数 |
| 输出 | 含义 |
newlocation[] |
下一时刻位置 |
nv[] |
下一时刻速度 |
4.2.2 内部决策顺序(**从尾车→头车**逆向遍历)
- 前车索引
封闭环路下,尾车的前车是头车;其余直接取i+1 - Gap 计算
fd = 前车.location – 自车.location – carlength(环路 wrap-around 自动处理) - 安全间距与安全速度
调用Gap()与Gipps()得到Gapsafe、vsafe - 速度更新
取min(v+a, vmax, vsafe, fd)四者最小值,保证不撞、不超、不超速 - 随机慢化
只对人工车以概率p减速b;自动驾驶车可关闭或降低p - 位置更新
newlocation(i) = location(i) + nv(i) - 周期性边界
若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) - 若
≤ p则v = 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 步记录全部车辆的
location、v - 指标:
- 平均速度
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` 等参数绑定。
六、扩展路线(非本期交付)
- 双车道+变道:已预留
lanechange()接口,支持最小间隙+概率变道 - CACC 字符串通信:把
tb降为负值,模拟车间通信下的虚拟铰接 - GPU 批量化:把
location、v放入gpuArray,单核对 1 万车·万步 → 秒级 - 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 控制算法验证,只需在行为层替换自己的跟驰模型,其余骨架可零改动复用。祝使用愉快,安全驾驶,不堵车。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)