【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

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

相关推荐
@福者1 分钟前
C++ QT 入门
开发语言·c++·qt
长友cy8 分钟前
Qt官方示例BluetoothLowEnergyGame源码阅读
开发语言·qt
草青工作室16 分钟前
java-不携带Token也能“打“自己的接口:一个绕开网关鉴权、用 URL 直接调度 SpringMVC 方法的轻量级定时任务方案
java·开发语言
shmily麻瓜小菜鸡17 分钟前
JavaScript / TypeScript 易踩坑知识点完全指南 -假值(Falsy Values)完全指南
开发语言·javascript·typescript
Coodor22 分钟前
信创系统基于QT5操作NFC读写器
开发语言·qt·智能卡·nfc读写器·yw-607hc
励志不掉头发的内向程序员25 分钟前
【LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之Action与命令系统
linux·开发语言·c++·qt·学习·系统架构
民乐团扒谱机34 分钟前
【超详细】PyQt6 实现 AU 风格波形图编辑器:多级缩放与采样点逐级渲染,附全过程代码
开发语言·python·编辑器·pyqt·audition·时域·频谱图
s_w.h38 分钟前
【 linux 】线程互斥与同步
java·linux·服务器·开发语言
pingglala1 小时前
C++线程安全队列对比
开发语言·c++
Demon--hx1 小时前
C++访问权限问题
开发语言·c++