[Solution d’optimisation] Optimisation du trafic urbain basé sur l’algorithme génétique IGA amélioré de matalb [y compris le code source 215 de Matlab]

1. Introduction

1 La théorie de base de l'algorithme
génétique La génétique estime que l'hérédité est un code génétique d'instruction encapsulé dans chaque cellule et contenu dans le chromosome sous forme de gènes, chaque gène a une position particulière et contrôle une propriété particulière. L'individu produit par chaque gène a un certain degré d'adaptabilité à l'environnement. L'hybridation et la mutation génique peuvent produire une progéniture adaptable à l'environnement Grâce à la sélection naturelle de la survie du plus apte, la structure du gène ayant une valeur de fitness élevée est préservée.
L'algorithme génétique s'appuie sur la théorie génétique de la «survie du plus apte» et exprime la solution du problème d'optimisation comme le processus de «survie du plus apte» des «chromosomes». À travers l'évolution des générations de duplication, de croisement et de mutation de le groupe «chromosome», on obtient enfin C'est l'individu qui est le plus adaptable à l'environnement pour obtenir la solution optimale ou satisfaisante au problème. Il s'agit d'un algorithme d'optimisation générale hautement parallèle, aléatoire et adaptatif.
Une série d'avantages de l'algorithme génétique l'ont rendu de plus en plus important ces dernières années, et il a été largement utilisé pour résoudre des problèmes d'optimisation dans de nombreux domaines, y compris son application réussie dans le domaine des transports.
2 Caractéristiques de
l'algorithme génétique L'algorithme génétique est un algorithme de recherche probabiliste d'optimisation globale auto-adaptatif formé en simulant le processus génétique et évolutif en milieu naturel biologique. C'est une sorte d'algorithme de recherche robuste qui peut être utilisé dans le calcul d'optimisation de systèmes complexes, comparé à d'autres algorithmes d'optimisation, il présente de nombreuses caractéristiques.
Il existe trois principaux algorithmes d'optimisation traditionnels: les algorithmes d'énumération, d'heuristique et de recherche:
1. Méthode d'
énumération La méthode d'énumération énumère toutes les solutions réalisables dans l'ensemble de solutions réalisables pour trouver la solution optimale exacte. Pour les fonctions continues, cette méthode nécessite d'abord une discrétisation, de sorte que la solution optimale ne peut jamais être atteinte en raison du traitement discret. De plus, lorsque l'espace d'énumération est relativement grand, l'efficacité de la solution de cet algorithme est très faible et prend beaucoup de temps.
2. Algorithme
heuristique L'algorithme heuristique recherche une règle heuristique qui peut produire une solution réalisable pour trouver une solution optimale ou une solution optimale approchée. L'efficacité de l'algorithme heuristique est relativement élevée, mais pour chaque problème à résoudre, il faut trouver sa règle heuristique unique. Cette règle heuristique n'est généralement pas universelle et ne convient pas à d'autres problèmes.
3. Algorithme de recherche
L'algorithme de recherche effectue une opération de recherche dans un sous-ensemble de l'ensemble de solutions réalisables pour trouver la solution optimale ou la solution optimale approximative du problème. Bien que l'algorithme de recherche ne puisse garantir que la solution optimale au problème sera obtenue, si certaines connaissances heuristiques sont correctement utilisées, un bon équilibre peut être atteint entre la qualité et l'efficacité de la solution approchée.
3 Le flux de travail de l'algorithme génétique de base
Insérez la description de l'image ici
4 Fonction de remise en forme
Insérez la description de l'image ici
5 Opérateur de
sélection La sélection, également appelée réplication, est le processus de sélection d'individus à forte vitalité dans un groupe pour générer un nouveau groupe. L'algorithme génétique utilise des opérateurs de sélection pour effectuer la survie du plus apte sur les individus du groupe et sélectionne en fonction de l'aptitude de chaque individu. Les individus plus aptes sont plus susceptibles d'être hérités dans la population de la prochaine génération; vice versa. De cette façon, la valeur de la forme physique des individus du groupe peut être approchée en permanence de la solution optimale. La détermination de l'opérateur de sélection affecte directement les résultats du calcul de l'algorithme génétique.
Voici quelques opérateurs de sélection typiques et couramment utilisés:
1. Sélection de la roulette
2. Sélection aléatoire des compétitions
3. Sélection de parcours aléatoire
4. Trier la sélection
5. Sélection de la ligue
6 Opérateurs de croisement
Ce qui suit présente plusieurs opérateurs de croisement adaptés aux individus codés en binaire ou aux individus codés en décimal.
l. Crossover à point
unique Crossover à point unique (Crossover à un point), également connu sous le nom de croisement simple, et il s'agit des opérateurs croisés de base les plus courants. Cela commence par un point de sélection aléatoire dans une chaîne binaire. Pour chaque paire d'individus appariés, ils échangent des chromosomes partiels des deux individus à leurs points de croisement en fonction de la probabilité de croisement définie, générant ainsi deux nouveaux individus.
2. Crossover à
deux points et crossover multi-points Le crossover à deux points fait référence au réglage de deux points de croisement dans la chaîne de code individuelle, puis à l'échange de gènes partiel. Le processus spécifique du croisement à deux points est le suivant:
(1) Deux points de croisement sont définis immédiatement dans les deux chaînes de code individuelles qui sont appariées l'une à l'autre.
(2) Échangez une partie des chromosomes de deux individus entre les deux points d'intersection fixés.
3. Croisement uniforme Un croisement
uniforme signifie que les gènes à chaque locus de deux individus appariés sont échangés avec la même probabilité de croisement pour former deux nouveaux individus. L'opération spécifique peut être utilisée pour déterminer comment chaque gène du nouvel individu est fourni par quel individu parent en définissant un masque.
4. Crossover
arithmétique Le crossover arithmétique fait référence à la combinaison linéaire de deux individus pour produire deux nouveaux individus. Afin de pouvoir effectuer des opérations de combinaison linéaire, l'objet d'opération d'intersection arithmétique est généralement l'individu représenté par le code numérique à virgule flottante.
7 Opérateur de
mutation L'opération dite de mutation dans l'algorithme génétique se réfère au remplacement de la valeur du gène d'un locus dans la chaîne codant le chromosome individuel par d'autres allèles du locus pour former un nouvel individu. La mutation est l'une des principales méthodes d'algorithme génétique pour générer de nouveaux individus.L'opération de mutation peut maintenir la diversité de la population pendant le fonctionnement de l'algorithme, éviter efficacement la maturité prématurée et améliorer la capacité de recherche locale de l'algorithme génétique.
L'opérateur de mutation dans l'algorithme génétique doit également être sélectionné et conçu en fonction de différentes exigences. Voici plusieurs opérateurs de mutation couramment utilisés.
8 Amélioration de l'algorithme génétique
Insérez la description de l'image ici

Deuxièmement, le code source

%% 改进的GA
%% 清空环境变量
clc,clear,close all % 清除变量空间
warning off      % 消除警告
feature jit off  % 加速代码执行
%% 遗传算法参数初始化
maxgen = 50;                      % 进化代数,即迭代次数
sizepop = 50;                     % 种群规模
pcross = [0.7];                    % 交叉概率选择,01之间
pmutation = [0.01];                 % 变异概率选择,01之间
delta = 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);
    t4 = C-L - t(1)-t(2)-t(3);
flag=1;
if (t(1)<bound(1,1))||(t(2)<bound(2,1))||(t(3)<bound(3,1))||(t(1)>bound(1,2))||(t(2)>bound(2,2))||(t(3)>bound(3,2))||t4<22||t4>33
    flag=0;
end     
function ret=Mutation(pmutation,lenchrom,chrom,sizepop,num,maxgen,bound)
% 本函数完成变异操作
% pcorss                input  : 变异概率
% lenchrom              input  : 染色体长度
% chrom     input  : 染色体群
% sizepop               input  : 种群规模
% opts                  input  : 变异方法的选择
% pop                   input  : 当前种群的进化代数和最大的进化代数信息
% bound                 input  : 每个个体的上届和下届
% maxgen                input  :最大迭代次数
% num                   input  : 当前迭代次数
% ret                   output : 变异后的染色体
k1 = 0.6;   k2 = 0.7;
k3 = 0.001; k4 = 0.01;
% 计算适应度
for j=1:sizepop
    x=chrom(j,:);    % 解码
    f(j)=fun(x);     % 染色体的适应度 
end
fmax = max(f);      % 适应度最大值
fmin = min(f);      % 适应度最小值
favg = mean(f);     % 适应度平均值

for i=1:sizepop   %每一轮for循环中,可能会进行一次变异操作,染色体是随机选择的,变异位置也是随机选择的,
    %但该轮for循环中是否进行变异操作则由变异概率决定(continue控制)
    % 随机选择一个染色体进行变异
    pick=rand;
    while pick==0
        pick=rand;
    end
    index=ceil(pick*sizepop);
    
     f1 = fun( chrom(index(1),:) );  % 个体适应度值
     f3 = max(f1);                   % 两者中大者
     if f3>=favg
         pmutation = k3*(fmax - f3)./(fmax-favg);
     else
         pmutation = k4;
     end
    
    % 变异概率决定该轮循环是否进行变异
    pick=rand;
    if pick>pmutation
        continue;
    end
    flag=0;
    num = 0;
    chrom1 = chrom(i,:);
    while flag==0&&num<=20 
        % 变异位置
        pick=rand;
        while pick==0      
            pick=rand;
        end
        pos=ceil(pick*sum(lenchrom));  %随机选择了染色体变异的位置,即选择了第pos个变量进行变异
    
        pick=rand; %变异开始     
        fg=(rand*(1-num/maxgen))^2;
        if pick>0.5
            chrom(i,pos)=chrom(i,pos)+(bound(pos,2)-chrom(i,pos))*fg;
        else
            chrom(i,pos)=chrom(i,pos)-(chrom(i,pos)-bound(pos,1))*fg;
        end   %变异结束
        

Trois, résultats en cours

Insérez la description de l'image ici

Quatre, remarques

Code complet ou écriture ajouter QQ1564658423 examen précédent
>>>>>>
[Optimisation] basé sur l'optimisation de l'essaim de particules matlab algorithme de loup gris [y compris le code source 006 de Matlab]
[Optimisation] basé sur l'algorithme d'optimisation multi-objectif du loup gris matlab MOGWO [y compris Matlab code source issue 007]
[solution optimisée] disposition optimale des bornes de recharge basée sur l'algorithme matlab de l'essaim de particules [y compris le code source Matlab 012]
[solution optimisée] problème de vendeur multi-voyageurs basé sur l'algorithme génétique matlab [y compris le code source Matlab 016]
[optimisé solution】 Trouver le chemin le plus court basé sur l'algorithme génétique matlab [y compris le code source Matlab 023]
[Solution d'optimisation] Problème de compactage 3D basé sur le recuit génétique et simulé matlab [y compris le code source Matlab 031]
[Solution d'optimisation] Résoudre l'optimisation de l'intervalle de départ des véhicules basé sur l'algorithme génétique matlab Problème [Incluant le code source de Matlab 132]
[Solution d'optimisation] Algorithme de Krill Swarm [Incluant le code source de matlab 133]
[Solution d'optimisation] Algorithme d'évolution différentielle [Incluant le code source de Matlab 134]
[Solution d'optimisation] Méthode de fonction de pénalité basée sur Optimisation des contraintes matlab [Inclure le code source Matlab 163 période]
[Solution d'optimisation] Basé sur l'algorithme de loup gris amélioré de matlab pour résoudre le modèle de pyrolyse du pétrole lourd [Inclure le code source Matlab 164 période]
[Solution optimisée] Basé sur une erreur de réseau de distribution d'algorithme de colonie de fourmis matlab location [Inclure la période 165 du code source Matlab]
[Solution d'optimisation basée sur l'algorithme génétique matalb pour résoudre le problème d'optimisation de la reconstitution du matériel de l'île [y compris le code source Matlab 172]
[Solution d'optimisation] Algorithme d'optimisation immunitaire de la population de coronavirus (CHIO) [y compris le code source Matlab 186 ]
[Solution d'optimisation] Algorithme d'optimisation Golden Eagle (GEO)) 【Inclut le code source Matlab 187 période】
[Solution d'optimisation multi-objectif] Solution d'optimisation multi-objectif basée sur l'algorithme matlab golden eagle (MOGEO) [y compris le code source Matlab 188]
[Solution d'optimisation] Solution d'optimisation du réseau neuronal BP basée sur l'interface GUI matlab [Code source Matlab 208]
[Optimisation solution] Solution d'optimisation d'algorithme génétique basée sur l'interface GUI matlab [y compris le code source Matlab 209]
[Solution d'optimisation] Analyse d'optimisation d'approximation numérique basée sur l'algorithme matlab immun [y compris le code source Matlab 211]
[Solution d'optimisation] Analyse d'optimisation des fonctions basée sur l'algorithme heuristique matlab [Inclure le code source Matlab 212]
[Solution d'optimisation ] Optimisation du signal de trafic urbain basé sur l'algorithme génétique amélioré de matalb (GA + IGA) [Inclure le code source de Matlab 213 période]
[Solution d'optimisation] Optimisation du signal de trafic urbain basé sur l'algorithme génétique amélioré de matalb GA [ Y compris le code source Matlab 214 période]

Je suppose que tu aimes

Origine blog.csdn.net/TIQCmatlab/article/details/113642093
conseillé
Classement