原创代码,请勿翻卖
@[toc]
程序介绍
面向城市信号控制交叉口的运行效率提升问题,以TD-U-CP模型(分时段调头开口与通行能力-相位联合优化模型)为理论框架,采用整数编码精英保留遗传算法,对四个进口道的调头开口设置位置与早高峰、平峰、晚高峰三个控制时段的信号配时方案实施两阶段联合优化。染色体由13个整数基因构成,涵盖各进口道调头开口距停车线距离、左转绿灯时间、直行绿灯时间及相位方案编号,以通行能力与平均延误之比为适应度指标,通过锦标赛选择、分组交叉与随机扰动变异驱动种群进化;第一阶段分时段独立寻优以获取各时段最优调头开口位置,第二阶段依据全天交通需求锁定峰值时段的开口方案后再对各时段信号配时进行精细化再优化,最终输出推荐开口位置、各时段最优相位方案及延误与通行能力的优化前后对比图表,为工程实践中的交叉口渠化设计与信号控制一体化决策提供量化支撑。
运行结果
运行代码后,程序会完成单交叉口调头开口位置与信号绿灯时间的联合优化。例程采用 13 基因整数编码和精英保留遗传算法,以通行能力最大化、车均延误最小化为目标搜索最优方案。
程序运行后会生成以下图像:
-
遗传算法收敛曲线 -
延误对比
通行能力对比
调头开口位置
染色体结果
命令行会输出推荐调头开口位置、各时段最优相位方案、通行能力和平均延误:
MATLAB源代码
部分代码:
%% TD-U-CP调头开口与信号配时遗传优化例程
% 调头开口位置与信号配时分时段联合优化演示
% 程序基于TD-U-CP模型思想实现整数编码精英保留遗传算法
% 作者:matlabfilter(V同号,可接代码定制、讲解等)
% 2026年6月24日、Ver1
clear; clc; close all;
rng(0);
scriptDir = fileparts(mfilename('fullpath'));
if ~isempty(scriptDir)
cd(scriptDir);
end
%% 场景参数
numApproach = 4; % 南、西、北、东四个进口道
numPeriod = 3; % 早高峰、平峰、晚高峰
numPlan = 16;
popSize = 70;
numGeneration = 85;
positionBound = [0 95; 0 100; 0 90; 0 105];
greenBound = [8 60];
cycleBound = [70 180];
satLeft = [0.46, 0.44, 0.45, 0.43]; % pcu/s
satThrough = [0.56, 0.58, 0.55, 0.57]; % pcu/s
lostTime = 18;
% 交通需求数组:时段 x 进口道 x 流向(左转、调头、直行),单位为辆/小时。
demand = zeros(numPeriod, numApproach, 3);
demand(1, :, :) = reshape([420 95 760; 360 80 690; 390 105 730; 350 75 660], [1, numApproach, 3]);
demand(2, :, :) = reshape([280 55 510; 250 48 480; 260 60 500; 240 45 465], [1, numApproach, 3]);
demand(3, :, :) = reshape([520 125 880; 450 115 820; 500 140 900; 430 100 780], [1, numApproach, 3]);
periodName = {'早高峰', '平峰', '晚高峰'};
bestByPeriod = zeros(numPeriod, 13);
historyByPeriod = zeros(numGeneration, numPeriod);
metricBefore = zeros(numPeriod, 2);
metricAfter = zeros(numPeriod, 2);
fprintf('TD-U-CP遗传优化仿真:控制时段%d个,候选相位方案%d种。\n', numPeriod, numPlan);
%% 第一步:分别优化各时段的调头开口和绿灯时间
完整代码:
如需帮助,或有车联网、交叉口信号控制、智能优化算法相关的代码定制需求,可联系我