
完整代码,附下载链接。包运行成功
文章目录
程序简介
利用信号灯相位与剩余时间信息构建滚动时域最优控制问题,通过在线求解速度与加速度指令实现通行效率、能量消耗与停车次数的多目标协同权衡,并系统对比常规启发式驾驶策略与MPC生态驾驶策略下的车辆通过停止线时间、停车次数、累计能耗指标、速度与加速度变化曲线、位置跟踪轨迹以及信号约束窗口符合性等关键性能指标
场景建模
程序围绕网联车辆控制与车路协同通行优化建立简化但完整的仿真场景,包含车辆运动状态、控制策略、扰动因素和评价指标。
对比方法
例程设置基准策略和协同/优化策略,便于观察V2X、CAV、CACC或MPC等方法对速度、间距、延误、能耗或稳定性的改善效果。
运行结果
-
速度规划对比图:对比常规驾驶和MPC生态驾驶的速度轨迹。

-
位置轨迹对比图:展示车辆接近并通过停止线的过程。

-
加速度控制量图:比较两种策略的加速度控制动作和平顺性。

-
能耗指标对比:

-
信号约束窗口图:给出红绿灯状态,说明MPC速度规划所依据的信号约束。

命令行输出内容的截图:

MATLAB源代码
部分代码:
matlab
%% MPC网联车辆交叉口生态驾驶控制例程
% 作者:matlabfilter,接定位与导航、滤波相关的matlab代码定制
% 2026-08-12 / Ver1
% MPC = Model Predictive Control,即模型预测控制。
% 本例程利用信号灯剩余时间信息进行交叉口生态驾驶控制,兼顾通过效率、能耗和停车次数。
clear; clc; close all;
rng(0);
% 设置仿真参数和典型工况,保证每次运行结果可复现。
dt = 0.2; T = 80; t = (0:dt:T)';
stopLine = 500; cycle = 70; greenStart = 18; greenEnd = 48;
base = simulateEco(false, t, dt, stopLine, cycle, greenStart, greenEnd);
mpc = simulateEco(true, t, dt, stopLine, cycle, greenStart, greenEnd);
% 输出关键评价指标,便于从命令行直接比较不同策略。
fprintf('MPC网联车辆交叉口生态驾驶控制仿真结果\n');
fprintf('常规驾驶 | 通过时间 %.3f 秒 | 停车次数 %d | 能耗指标 %.3f | 平均速度 %.3f 米/秒\n', ...
base.passTime, base.stopCount, base.energy(end), mean(base.v));
fprintf('MPC生态驾驶 | 通过时间 %.3f 秒 | 停车次数 %d | 能耗指标 %.3f | 平均速度 %.3f 米/秒\n', ...
mpc.passTime, mpc.stopCount, mpc.energy(end), mean(mpc.v));
fprintf('MPC生态驾驶能耗指标降低 %.2f%%。\n', ...
100*(base.energy(end)-mpc.energy(end))/max(base.energy(end),eps));
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
figure('Color','w','Units','pixels','Position',[80 80 400 400]);
plot(t, base.v, '--', 'LineWidth', 1.4, 'Color', [0.82 0.25 0.18]); hold on;
plot(t, mpc.v, '-', 'LineWidth', 1.5, 'Color', [0.08 0.42 0.68]);
grid on; box on; xlabel('时间(秒)'); ylabel('速度(米/秒)');
title('速度规划对比'); legend('常规驾驶','MPC生态驾驶','Location','best'); styleAxes();
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
figure('Color','w','Units','pixels','Position',[90 90 400 400]);
plot(t, base.x, '--', 'LineWidth', 1.4, 'Color', [0.82 0.25 0.18]); hold on;
plot(t, mpc.x, '-', 'LineWidth', 1.5, 'Color', [0.08 0.42 0.68]);
yline(stopLine, ':', '停止线'); grid on; box on; xlabel('时间(秒)'); ylabel('位置(米)');
title('位置轨迹对比'); legend('常规驾驶','MPC生态驾驶','Location','best'); styleAxes();
% 绘制结果图窗;图窗保持纯净,不在 MATLAB 窗口内添加水印。
figure('Color','w','Units','pixels','Position',[100 100 400 400]);
plot(t, base.a, '--', 'LineWidth', 1.3, 'Color', [0.82 0.25 0.18]); hold on;
plot(t, mpc.a, '-', 'LineWidth', 1.4, 'Color', [0.08 0.42 0.68]);
grid on; box on; xlabel('时间(秒)'); ylabel('加速度(米/秒^2)');
title('加速度控制量'); legend('常规驾驶','MPC生态驾驶','Location','best'); styleAxes();
完整代码(含必须的函数)下载链接:
https://download.csdn.net/download/callmeup/93283104
如需帮助,或有车联网、网联车辆控制、交通仿真、滤波与导航相关的代码定制需求,可从个人主页左侧联系我