200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【优化求解】基于matalb改进的遗传算法GA求解城市交通信号优化问题【含Matlab源码 214期】

【优化求解】基于matalb改进的遗传算法GA求解城市交通信号优化问题【含Matlab源码 214期】

时间:2022-03-29 22:47:18

相关推荐

【优化求解】基于matalb改进的遗传算法GA求解城市交通信号优化问题【含Matlab源码 214期】

一、遗传算法简介

1 引言

2 遗传算法理论

2.1 遗传算法的生物学基础

2.2 遗传算法的理论基础

2.3 遗传算法的基本概念

2.4 标准的遗传算法

2.5 遗传算法的特点

2.6 遗传算法的改进方向

3 遗传算法流程

4 关键参数说明

二、源代码

%% GA%% 清空环境变量clc,clear,close allwarning off% feature jit off%% 遗传算法参数初始化maxgen = 50; % 进化代数,即迭代次数sizepop = 100; % 种群规模pcross = [0.7];% 交叉概率选择,0和1之间pmutation = [0.1]; % 变异概率选择,0和1之间%染色体设置lenchrom=ones(1,3); % t1、t2、t3bound=[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:maxgendisp(['迭代次数: ',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:sizepopx=individuals.chrom(j,:); % 解码individuals.fitness(j)=fun(x); % 染色体的适应度 end%% 改进的GA%% 清空环境变量% clc,clear % ,close all % 清除变量空间warning off% 消除警告% feature jit off % 加速代码执行%% 遗传算法参数初始化maxgen = 50; % 进化代数,即迭代次数sizepop = 100; % 种群规模pcross = [0.7];% 交叉概率选择,0和1之间pmutation = [0.01]; % 变异概率选择,0和1之间delta = 0.1;% 城市交通信号系统参数C = 140;L = 10;load('data.mat') % 包含交通流量q以及饱和流量xijq = q./3600;% 转化为秒sxij = xij./3600; % 转化为秒s%染色体设置lenchrom=ones(1,3); % t1、t2、t3bound=[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)=fun1(x); % 染色体的适应度 end%% 找最好的染色体[bestfitness bestindex] = min(individuals.fitness);bestchrom = individuals.chrom(bestindex,:); % 最好的染色体% 记录每一代进化中最好的适应度和平均适应度trace = [bestfitness]; %% 迭代求解最佳初始阀值和权值% 进化开始for i=1:maxgendisp(['迭代次数: ',num2str(i)])% 选择individuals=Select1(individuals,sizepop); % 交叉individuals.chrom=Cross1(pcross,lenchrom,individuals.chrom,sizepop,bound);% 变异individuals.chrom=Mutation1(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);% 计算适应度for j=1:sizepopx=individuals.chrom(j,:); % 解码individuals.fitness(j)=fun1(x); % 染色体的适应度 endfmax = max(individuals.fitness);% 适应度最大值fmin = min(individuals.fitness);% 适应度最小值favg = mean(individuals.fitness); % 适应度平均值individuals.fitness = (individuals.fitness + abs(fmin))./(fmax+fmin+delta); %适应度标定[newbestfitness,newbestindex]=min(individuals.fitness);[worestfitness,worestindex]=max(individuals.fitness);if bestfitness>newbestfitnessbestfitness=newbestfitness;bestchrom=individuals.chrom(newbestindex,:);end

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。