1. Введение
1 Основная теория генетического алгоритма
Генетика считает, что наследование - это инструкция генетического кода, инкапсулированная в каждой клетке и содержащаяся в хромосоме в виде генов.Каждый ген занимает особое положение и управляет определенным свойством. Индивид, произведенный каждым геном, имеет определенную степень приспособляемости к окружающей среде. Гибридизация и мутация генов могут дать потомство, которое может адаптироваться к окружающей среде. Благодаря естественному отбору для выживания наиболее приспособленных сохраняется структура гена с высоким значением приспособленности.
Генетический алгоритм основан на генетической теории «выживания наиболее приспособленных» и выражает решение проблемы оптимизации как «выживание наиболее приспособленных» процессов «хромосом». Через эволюцию поколений дупликации, скрещивания и мутации наконец мы получаем группу «хромосом». Именно индивид наиболее приспособлен к окружающей среде, чтобы получить оптимальное или удовлетворительное решение проблемы. Это очень параллельный, случайный и адаптивный общий алгоритм оптимизации.
Ряд преимуществ генетического алгоритма сделали его все более и более важным в последние годы, и он широко используется для решения задач оптимизации во многих областях, включая его успешное применение в области транспорта.
2 Характеристики
генетического алгоритма Генетический алгоритм - это самонастраивающийся алгоритм вероятностного поиска глобальной оптимизации, созданный путем моделирования генетических и эволюционных процессов в биологической природной среде. Это своего рода надежный алгоритм поиска, который можно использовать при расчетах оптимизации сложных систем. По сравнению с другими алгоритмами оптимизации, он имеет много характеристик.
Существует три основных традиционных алгоритма оптимизации: алгоритмы перебора, эвристики и поиска:
1. Метод
перечисления Метод перечисления перечисляет все возможные решения в наборе возможных решений, чтобы найти точное оптимальное решение. Для непрерывных функций этот метод требует сначала дискретизации, так что оптимальное решение никогда не может быть достигнуто из-за дискретной обработки. Кроме того, когда пространство перечисления относительно велико, эффективность решения этого алгоритма очень низкая и требует чрезвычайно много времени.
2. Эвристический алгоритм
Эвристический алгоритм ищет эвристическое правило, которое может дать допустимое решение для поиска оптимального решения или приближенного оптимального решения. Эффективность эвристического алгоритма относительно высока, но для каждой проблемы, которую необходимо решить, необходимо найти ее уникальное эвристическое правило.Это эвристическое правило, как правило, не универсально и не подходит для других задач.
3. Алгоритм поиска
Алгоритм поиска выполняет операцию поиска в подмножестве набора допустимых решений, чтобы найти оптимальное решение или приближенное оптимальное решение проблемы. Хотя алгоритм поиска не может гарантировать, что будет получено оптимальное решение проблемы, при правильном использовании некоторых эвристических знаний может быть достигнут хороший баланс между качеством и эффективностью приближенного решения.
3 Рабочий процесс базового генетического алгоритма
4 Функция пригодности
5 Оператор
выбора Выбор, также известный как репликация, - это процесс отбора индивидуумов с высокой жизнеспособностью в группе для создания новой группы. Генетический алгоритм использует операторы отбора для определения выживаемости наиболее приспособленных индивидуумов в группе и выбирает в соответствии с приспособленностью каждого индивидуума.Люди с более высокой приспособленностью с большей вероятностью будут унаследованы в популяции следующего поколения; наоборот. Таким образом, можно постоянно приближать значение фитнеса отдельных лиц в группе к оптимальному решению. Определение оператора выбора напрямую влияет на результаты расчета генетического алгоритма.
Вот несколько типичных и часто используемых операторов выбора:
1. Выбор рулетки
2. Случайный конкурсный отбор
3. Выбор случайного обхода
4. Сортировать выделение
5. Выбор лиги
6 Операторы кроссовера
Ниже представлены несколько операторов кроссовера, подходящих для лиц с двоичным или десятичным кодом.
л. Одноточечный кроссовер
Одноточечный кроссовер (One-point Crossover), также известный как простой кроссовер, является наиболее распространенным базовым кросс-оператором. Он начинается со случайной точки выбора в двоичной строке. Для каждой пары индивидов, которые спарены друг с другом, они обмениваются частичными хромосомами двух индивидов в их точках пересечения в соответствии с установленной вероятностью пересечения, тем самым создавая двух новых индивидов.
2.
Двухточечный кроссовер и многоточечный кроссовер Двухточечный кроссовер означает установку двух точек кроссовера в отдельной кодовой строке и затем частичный обмен генами. Конкретный процесс пересечения двух точек:
(1) Две точки пересечения устанавливаются сразу в двух отдельных строках кода, которые связаны друг с другом.
(2) Обменяйтесь частями хромосом двух людей между двумя заданными точками пересечения.
3. Равномерный кроссинговер
Равномерный кроссинговер означает, что гены в каждом локусе двух парных особей обмениваются с одинаковой вероятностью кроссинговера с образованием двух новых особей. Конкретная операция может использоваться для определения того, как каждый ген нового индивидуума обеспечивается каким родительским индивидуумом, путем установки маски.
4. Арифметический кроссовер
Арифметический кроссовер - это линейная комбинация двух индивидов для создания двух новых индивидов. Чтобы иметь возможность выполнять операции линейного комбинирования, операционный объект арифметического пересечения обычно представляет собой индивидуум, представленный числовым кодом с плавающей запятой.
7 Оператор мутации
Так называемая операция мутации в генетическом алгоритме относится к замене значения гена некоторого локуса в кодирующей строке отдельной хромосомы на другие аллели локуса с целью образования нового индивида. Мутация является одним из основных методов генетического алгоритма для создания новых особей.Операция мутации может поддерживать разнообразие популяции во время работы алгоритма, эффективно предотвращать преждевременное созревание и улучшать способность локального поиска генетического алгоритма.
Оператор мутации в генетическом алгоритме также должен быть выбран и разработан в соответствии с различными требованиями. Ниже приведены несколько часто используемых операторов мутации.
8 Улучшение генетического алгоритма
Во-вторых, исходный код
%% GA
%% 清空环境变量
clc,clear,close all
warning off
% feature jit off
%% 遗传算法参数初始化
maxgen = 50; % 进化代数,即迭代次数
sizepop = 100; % 种群规模
pcross = [0.7]; % 交叉概率选择,0和1之间
pmutation = [0.1]; % 变异概率选择,0和1之间
%染色体设置
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
%% 改进的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以及饱和流量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)=fun1(x); % 染色体的适应度
end
%% 找最好的染色体
[bestfitness bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:); % 最好的染色体
% 记录每一代进化中最好的适应度和平均适应度
trace = [bestfitness];
%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
disp(['迭代次数: ',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:sizepop
x=individuals.chrom(j,:); % 解码
individuals.fitness(j)=fun1(x); % 染色体的适应度
end
fmax = 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>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
Три, результаты бега
Четыре, примечания
Добавьте QQ1564658423 для полного кода или записи.
Обзор >>>>>>
[Оптимизация] на основе алгоритма серого волка оптимизации роя частиц Matlab [включая исходный код Matlab 006]
[Оптимизация решения] на основе многоцелевого алгоритма оптимизации серого волка MATLAB MOGWO [включая исходный код Matlab 007]
[Оптимизация Решение] Оптимальная компоновка зарядных станций на основе алгоритма роя частиц Matlab [включая исходный код Matlab 012]
[Оптимизационное решение] Задача с несколькими коммивояжерами на основе генетического алгоритма Matlab [включая исходный код Matlab 016]
[Оптимизация решения] Найти кратчайшее на основе генетический алгоритм matlab Путь [включая исходный код Matlab 023]
[Оптимизационное решение] Matlab генетическая и симулированная проблема трехмерной упаковки на основе отжига [включая исходный код Matlab 031]
[Оптимизирующее решение] На основе генетического алгоритма MATLAB для решения проблемы оптимизации транспортного средства интервал отправления [Включая исходный код Matlab 132]
[Оптимальное решение] источник алгоритма Matlab криля, содержащий [133]
[] решение оптимизации дифференциальной эволюции, содержащее оптимизационное решение на основе источника Matlab [134]
[] для метода штрафных функций Matlab с ограниченной оптимизацией, содержащего источник Matlab [ 163]
[Оптимизационное решение, основанное на улучшенном алгоритме серого волка в Matlab для решения модели пиролиза тяжелой нефти [включая исходный код Matlab 164]
[оптимизированное решение] на основе определения местоположения неисправности сети распределения алгоритма колонии Matlab [включая исходный код Matlab 165]
[оптимизированное решение ] на основе генетического алгоритма matalb. Решить проблему оптимизации предложения материалов острова [Включая исходный код Matlab 172]
[Оптимизирующее решение] Алгоритм оптимизации иммунитета стада от коронавируса (CHIO) [Включая исходный код Matlab 186]
[Оптимизирующее решение] Алгоритм оптимизационного решения Golden Eagle (GEO ) [Включая исходный код Matlab 187】
[Решение для многокритериальной оптимизации] Решение для многокритериальной оптимизации на основе алгоритма Matlab Golden Eagle (MOGEO) [включая исходный код Matlab 188]
[Оптимизационное решение] Решение для оптимизации нейронной сети BP на основе интерфейса GUI Matlab [Исходный код Matlab 208]
[Оптимизация решение] Оптимизация генетического алгоритма на основе интерфейса MATLAB GUI [включая исходный код Matlab 209]
[Оптимизационное решение] Анализ оптимизации численного приближения на основе иммунного алгоритма Matlab [включая исходный код Matlab 211]
[Оптимизационное решение] Анализ оптимизации функций на основе эвристического алгоритма Matlab [Включая исходный код Matlab, период 212]