1 简介
本文设计实时优化的配置方案对道路畅通的应急决策管理具有重要意义.本文在分析交通控制基本理论的基础上,根据交叉口的实际情况并考虑信号灯的转换与车辆的启动损失时间,采用四相位对称式放行方案,以车辆在道口的总等待时间最短为目标建立起基于遗传算法的多个交叉口的面控制数学模型.本文利用MATLAB编程实时产生了基于泊松分布的交通流序列,并且为提高模型效率,使建立的模型更具有实用性,我们用VB可视化编程软件制作了一个简易的道路交通信号实时遗传算法演示平台.本文通过对模型的实时优化,算法计算和仿真,获得了在交通信号实时遗传算法的优化控制下的优化参数.
2 部分代码
%% GA
%% 清空环境变量
clc,clear,close all
warning off
feature jit off
%% 遗传算法参数初始化
maxgen = 50; % 进化代数,即迭代次数
sizepop = 50; % 种群规模
pcross = [0.7]; % 交叉概率选择,0和1之间
pmutation = [0.01]; % 变异概率选择,0和1之间
% 城市交通信号系统参数
C = 140;
L = 10;
load('data.mat') % 包含交通流量q以及饱和流量xij
q = q./3600; % 转化为秒s
xij = xij./3600; % 转化为秒s
%染色体设置
lenchrom=ones(1,3); % t1、t2、t3
bound=[38,59;26,37;33,44;]; % 数据范围
%---------------------------种群初始化------------------------------------
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness = []; %每一代种群的平均适应度
bestfitness = []; %每一代种群的最佳适应度
bestchrom = []; %适应度最好的染色体
%% 初始化种群
for i=1:sizepop
% 随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound); % 编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
x=individuals.chrom(i,:);
% 计算适应度
individuals.fitness(i)=fun(x); % 染色体的适应度
end
%% 找最好的染色体
[bestfitness bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:); % 最好的染色体
% 记录每一代进化中最好的适应度和平均适应度
trace = [bestfitness];
%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
disp(['迭代次数: ',num2str(i)])
% 选择
individuals=Select(individuals,sizepop);
% 交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); % 解码
individuals.fitness(j)=fun(x); % 染色体的适应度
end
% 找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom; % 剔除最差个体
trace=[trace;bestfitness]; %记录每一代进化中最好的适应度
end
x = [bestchrom, C-L-sum(sum(bestchrom))] % 最佳个体值
D = trace(end) % 延误误差D
E = D./sum(sum(q)); % 平均延误E
%% 遗传算法结果分析
figure('color',[1,1,1]),
plot(1:length(trace),trace(:,1),'b--');
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数'); ylabel('适应度');
legend('fz最佳适应度');
3 仿真结果
4 参考文献
[1]陆志猛, 张伟强, 阮日升. 城市道路交通信号实时遗传算法的优化控制[J]. 2008.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。