基于改进的遗传算法的城市交通信号优化分析

作品简介

遗传算法借鉴“适者生存”的遗传遗传学理论,将优化问题的求解表示成“染色体”的“适者生存”过程,通过“染色体”群的一代代复制、交叉、变异的进化,最终得到的是最适应环境的个体,从而得到问题的最优解或者满意解。这是一种高度并行、随机和自适应的通用的优化算法。

NO.1|原始的遗传算法

原始版本的遗传算法可以查看我之前发布的文章:一文搞清楚遗传算法(Genetic Algorithm,GA)详解,附带应用及源码

NO.2|改进遗传算法

针对适应度值标定问题本章提出以下计算公式:

(1)当适应度值低于平均适应度值时,说明该个体是性能不好的个体,对它就采用较大的交叉率和变异率;如果适应度值高于平均适应度值,说明该个体性能优良,对它就根据其适应度值取相应的交叉率和变异率。

(2)当适应度值越接近最大适应度值时,交叉率和变异率就越小;

(3)当适应度值等于最大适应度值时,交叉率和变异率的值为零。

这种调整方法对于群体处于进化后期比较合适,但对于进化初期不利,因为进化初期群体中的较优的个体几乎处于一种不发生变化的状态,而此时的优良个体不一定是优化的全局最优解,这容易使进化走向局部最优解的可能性增加。

道路交通信号优化

% 城市交通信号系统参数
C = 140;  % 信号周期
L = 10;   % 总损失时间
load('data.mat')  % 包含交通流量q以及饱和流量xij
q = q./3600;      % 转化为秒s
xij = xij./3600;  % 转化为秒s
%该函数用来计算适应度值
t1 = x(1);
t2 = x(2);
t3 = x(3);
t4 = C-L - t1-t2-t3;
lamda(1) = t1/C; % 为第1相位的绿信比
lamda(2) = t2/C; % 为第2相位的绿信比
lamda(3) = t3/C; % 为第3相位的绿信比
lamda(4) = t4/C; % 为第4相位的绿信比	  

 目标函数如下:

 pick=rand(1,2);       
     while prod(pick)==0
         pick=rand(1,2);
     end
     index=ceil(pick.*sizepop);  
     
     f1 = fun( chrom(index(1),:) );      % 个体适应度值
     f2 = fun( chrom(index(2),:) );      % 个体适应度值
     f3 = max(f1,f2);                  % 两者中大者
     if f3>=favg
         pcross = k1*(fmax - f3)./(fmax-favg);
     else
         pcross = k2;
     end

NO.4|运行结果


创作时间:2024-09-03 16:20:01