【MATLAB例程|车联网6】考虑调头车流扰动与网联车辆实时感知信息的干线多交叉口 FAC-CV 全感应协调控制仿真与性能对比分析

原创代码,附下载链接。可联系获取代码定制、讲解,请勿翻卖

参考文献:孙立.车联网环境下城市道路交叉口调头开口位置与信号控制方案优化D.大连理工大学,2025

文章目录

程序介绍

面向城市干线多交叉口信号协调控制场景,构建了一套基于网联车辆环境的全感应协调控制仿真框架。固定协调控制采用基于历史交通需求的预设绿波方案,传统全感应协调控制根据本周期排队状态和上游放行信息进行绿灯时间调整,FAC-CV 方法则进一步利用网联车辆提供的实时排队、到达时间和车队传播信息,对绿灯时间和交叉口间相位差进行动态修正。

缩写说明:FAC-CV 表示 Fully-Actuated Coordinated Control under Connected Vehicle environment,即车联网环境下全感应协调控制;其中 FA-CV 表示车联网环境下全感应控制,CV 表示 Connected Vehicle,即网联车辆。

方法对比

编号 方法 英文简称 控制逻辑 是否使用CV信息 是否动态修正相位差
1 固定协调控制 Fixed Coordination 采用固定主线绿灯、固定支路绿灯和固定绿波相位差
2 传统全感应协调 Conventional Actuated Coordination 根据本周期排队长度计算绿灯时间,但相位差仍基本固定
3 FAC-CV全感应协调控制 FAC-CV 利用网联车辆估计排队、预测到达车辆,并动态调整绿灯和相位差

运行结果

程序运行后会生成以下图像:

  • 协调延误对比
  • 排队长度对比
  • 渗透率敏感性

  • 相位差修正

  • 时距图

命令行会输出固定协调、传统全感应协调和 FAC-CV 的平均延误与平均排队长度。

MATLAB源代码

部分代码:

matlab 复制代码
%% FAC-CV干线多交叉口全感应协调控制例程(平衡对照组版本)
% 调头车流影响下的干线多交叉口全感应协调控制演示。
% 缩写说明:
% FAC-CV = Fully-Actuated Coordinated Control under Connected Vehicle environment,
% 即车联网环境下全感应协调控制;CV = Connected Vehicle,即网联车辆。
%
% 作者:matlabfilter(V同号,除前期达成一致外,付费咨询)
% 2026-06-25 / Ver3
clear; clc; close all;
rng(0);

%% 输出目录
scriptDir = fileparts(mfilename('fullpath'));
if isempty(scriptDir)
    scriptDir = pwd;
end

%% 场景参数
numCycle = 75;              % 仿真周期数
numIntersection = 3;        % 干线交叉口数量
cycleLength = 110;          % 信号周期长度,s

linkDistance = [420, 380];  % 相邻交叉口间距,m
desiredSpeed = 14.5;        % 期望绿波速度,m/s,约52.2 km/h
travelTime = linkDistance / desiredSpeed;

% 网联车辆渗透率敏感性分析
cvRates = 0.20:0.20:1.00;

methodName = {'固定协调控制', '传统全感应协调', 'FAC-CV'};

%% 80%网联车辆渗透率下的三种方法对比
result80 = cell(1, 3);
for method = 1:3
    result80{method} = simulateArterial(method, 0.80, numCycle, numIntersection, ...
        cycleLength, travelTime);
end

%% FAC-CV渗透率敏感性分析
sensitivityDelay = zeros(numel(cvRates), 1);
sensitivityQueue = zeros(numel(cvRates), 1);

for r = 1:numel(cvRates)
    tmp = simulateArterial(3, cvRates(r), numCycle, numIntersection, cycleLength, travelTime);
    sensitivityDelay(r) = tmp.avgDelay;
    sensitivityQueue(r) = tmp.avgQueue;
end

%% 打印结果
fprintf('FAC-CV干线多交叉口全感应协调控制仿真结果。\n');
fprintf('说明:本版本已增强固定协调控制和传统全感应协调,使其作为更合理的对照组。\n\n');

for method = 1:3
    fprintf('%s | 平均延误 %.2f 秒/车 | 平均剩余排队 %.2f 辆\n', ...
        methodName{method}, result80{method}.avgDelay, result80{method}.avgQueue);
end

baseDelay = result80{1}.avgDelay;
actuatedDelay = result80{2}.avgDelay;
faccvDelay = result80{3}.avgDelay;

fprintf('\nFAC-CV相对固定协调控制延误降低:%.2f%%\n', ...
    100 * (baseDelay - faccvDelay) / max(baseDelay, eps));
fprintf('FAC-CV相对传统全感应协调延误降低:%.2f%%\n', ...
    100 * (actuatedDelay - faccvDelay) / max(actuatedDelay, eps));

%% 结果可视化
figure('Color', 'w');
bar([result80{1}.avgDelay, result80{2}.avgDelay, result80{3}.avgDelay]);
set(gca, 'XTickLabel', methodName, 'FontName', 'Microsoft YaHei');
grid on; box on;
ylabel('平均延误 (秒/车)');
title('协调控制延误对比');
saveas(gcf, '协调延误对比.png');

完整代码和函数:
https://download.csdn.net/download/callmeup/93028527

更多方向

  1. 基于网联车辆实时感知的单交叉口全感应自适应信号控制仿真系统------FA-CV方法与传统控制策略的性能对比研究:https://blog.csdn.net/callmeup/article/details/162304025?spm=1011.2415.3001.5331

  2. 多MEC协同的分层联邦学习在车路协同感知中的收敛性与通信代价分析

  3. 基于车车协同参数卸载的联邦拆分混合学习时延优化系统仿真:https://blog.csdn.net/callmeup/article/details/162243648?spm=1011.2415.3001.5331

如需帮助,或有车联网、干线绿波协调、交通信号控制相关的代码定制需求,可从个人主页左侧联系我

相关推荐
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区6 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大6 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai6 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜7 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa7 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio