matlab基于改进的遗传算法的城市交通信号优化分析matlab优化算法十
Posted 张叔zhangshu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab基于改进的遗传算法的城市交通信号优化分析matlab优化算法十相关的知识,希望对你有一定的参考价值。
基于改进的遗传算法的城市交通信号优化分析
遗传算法基本理论
遗传学认为,遗传是作为一种指令遗传码封装在每个细胞中,并以基因的形式包含在染色体中,每个基因有特殊的位置并控制某个特殊的性质。每个基因产生的个体对环境有一定的适应性。基因杂交和突变可能产生对环境适应性强的后代,通过优胜劣汰的自然选择,适应度值高的基因结构就保存下来遗传算法借鉴“适者生存”的遗传遗传学理论,将优化问题的求解表示成“染色体”的“适者生存”过程,通过“染色体”群的一代代复制、交叉、变异的进化最终得到的是最适应环境的个体,从而得到问题的最优解或者满意解。这是一种髙度并行、随机和自适应的通用的优化算法遗传算法的一系列优点使它近年来越来越受到重视,在解决众多领域的优化问题中得到了广泛的应用,其中也包括在交通领域的成功应用
281.3遗传算法的特点
遗传算法是模拟生物自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。是一类可用于复杂系统优化计算的鲁棒搜索算法,与其他一些优化算法相比,它具有很多特点。
传统的优化算法主要有三种:枚举法、启发式算法和搜索算法
1.枚举法
枚举法在可行解集合内枚举所有可行解,以求岀精确最优解。对于连续函数,该方法要求先对其进行离散化处理,这样就可能因离散处理而永远达不到最优解。此外,当枚举空间比较大时,该算法的求解效率非常低,极其耗时
2.启发式算法
启发式算法寻求一种能产生可行解的启发式规则,以找到一个最优解或近似最优解。启发式算法的求解效率比较高,但对每一个需求解的问题必须找出其特有的启发式规则,这个启发式规则一般无通用性,不适合于其他问题。
3.搜索算法
搜索算法在可行解集合的一个子集内进行搜索操作,以找到问题的最优解或者近似最优解。搜索算法虽然保证不了一定能够得到问题的最优解,但若适当的利用一些启发知识,就可在近似解的质量和效率上达到一种较好的平衡。
基本遗传算法的工作流程
适应度函数
若目标函数为最小化问题
若目标函数为最大化问题,则
若目标函数为最小问题,则
若目标函数为最大化问题,则
选择算子
选择又称为复制,是在群体中选择生命力强的个体产生新的群体的过程。遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作,根据每个个体的适应度大小选择,适应度较高的个体被遗传到下一代群体中的概率较大;反之亦然这样就可以使得群体中个体的适应度值不断接近最优解。选择算子的确定的好坏,直接影响到遗传算法的计算结果下面介绍几种典型常用的选择算子
1.轮盘赌选择
2.随机竞争选择
3.随机遍历选择
4.排序选择
5.联赛选择
交叉算子
下面介绍几种适合于二进制编码个体或十进制编码个体的交叉算子l.单点交叉单点交叉(One- point Crossover)又称为简单交叉,是最常用和最基本的交叉操作算子。它以二值串中的随机选择点开始,对每一对相互配对的个体,依设定的交叉概率在其交叉点处相互交换两个个体的部分染色体,从而产生出两个新的个体。
2.两点交叉与多点交叉两点交叉(Two- point( crossover)是指在个体编码串中随即设置两个交叉点,然后再进行部分基因交换。两点交叉的具体过程是
(1)在相互配对的两个个体编码串中随即设置两个交叉点。
(2)交换两个个体在所设定的两个交叉点之间的部分染色体
3.均匀交叉均匀交叉是指两个配对个体的每个基因座上基因都以相同的交叉概率进行交换从而形成两个新的个体。其具体运算可通过设置一屏蔽字来确定新个体的各个基因如何由哪一个父代个体来提供
4.算术交叉算术交叉是指由两个个体的线性组合而产生出两个新的个体。为了能够进行线性组合运算,算术交叉的操作对象一般是浮点数编码所表示的个体。
变异算子
遗传算法中所谓的变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其他等位基因来替换,从而形成一个新的个体。变异是遗传算法生成新个体的主要方法之一,变异运算可以使算法在运行过程中维持种群的多样性,有效避免早熟,起到改善遗传算法局部搜索能力的作用遗传算法中变异算子也应根据不同的要求进行选择和设计,下面是几种常用的变异算子1.基本位变异
2.均匀变异
3.边界变异边界变异操作是上述均匀变异操作的一个变形。在进行边界变异操作时,随机地取基因座的两个对应边界基因值之一去替代原有的基因值。当变量的取值范围特别宽,并且无其他约束条件时,边界变异会带来不好的作用。但它特别适用于最优点位于或者接近于可行解的边界时的一类问题
遗传算法的改进
针对适应度值标定问题本章提出以下计算公式:
自适应遗传算法在保持群体多样性的同时,保证遗传算法的收敛性。可用下面两公式动态调整个体的交叉变异概率。
1),当适应度值低于平均适应度值时,说明该个体是性能不好的个体,对它就均适应度值,说明该个体性能度健又革和变异近最大适应时,交叉和变异率就越小
(3)当适应度值等大适应度值时,交文率和变弃率的值为零体处于进化后期进化初期不利华初定是优化的全烏最优解,这容易使进化走向局部最优解的可能性增加。
基于改进遗传算法的道路交通信号优化
%% GA
%% 清空环境变量
clc,clear,close all
warning off
% feature jit off
%% 遗传算法参数初始化
maxgen = 50; % 进化代数,即迭代次数
sizepop = 100; % 种群规模
pcross = [0.7]; % 交叉概率选择,0和1之间
pmutation = [0.1]; % 变异概率选择,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最佳适应度');
优化结果
代码下载地址https://download.csdn.net/download/weixin_46567845/19814292
以上是关于matlab基于改进的遗传算法的城市交通信号优化分析matlab优化算法十的主要内容,如果未能解决你的问题,请参考以下文章
数字信号去噪基于matlab遗传算法优化变分模态分解VMD数字信号去噪(目标函数为样本熵)含Matlab源码 1982期
优化调度基于matlab改进的遗传算法求解风电场优化调度问题含Matlab源码 1245期
优化调度 基于matlab改进的遗传算法求解风电场优化调度问题含Matlab源码 1245期
优化求解基于matlab改进的遗传算法求解考虑环境效益DG优化问题含Matlab源码 1483期