[Optimización] Análisis de optimización de funciones basado en el algoritmo de forrajeo bacteriano de Matlab [incluido el código fuente 217 de Matlab]

1. Introducción

Las necesidades de la vida real promueven el desarrollo de métodos de optimización. Durante más de medio siglo, debido a las deficiencias de los métodos de optimización tradicionales, algunos algoritmos evolutivos con un rendimiento de optimización global y una gran versatilidad han recibido una gran atención y aplicaciones en varios campos debido a su rendimiento de optimización eficiente y sin necesidad de una descripción precisa de los problemas. . El algoritmo evolutivo más antiguo y representativo es el algoritmo genético (GA) derivado de la teoría de la selección natural de Darwin y la teoría de la variación genética mendeliana en la década de 1970. En los últimos años, la gente ha producido una serie de algoritmos de optimización inteligente basados ​​en el comportamiento de organismos naturales. Por ejemplo, Dorigo et al. Propusieron la optimización de colonias de hormigas (ACO) en 1991 simulando el comportamiento de búsqueda de caminos de las hormigas; Eberhart y Kennedy adoptó En 1995, se propuso la optimización de enjambres de partículas (PSO) para simular el comportamiento de depredación de las aves. Estos algoritmos se utilizan ampliamente en el campo de la ingeniería y han logrado resultados notables. Con el vigoroso desarrollo de los algoritmos de optimización de la inteligencia de enjambre, Passino propuso un algoritmo de optimización de búsqueda de bacterias (BFOA) en 2002 que simula el comportamiento de búsqueda de la E. coli humana, agregando un nuevo miembro a la familia de algoritmos evolutivos biomiméticos. Este capítulo se centrará en presentar el algoritmo de búsqueda de bacterias más básico a la mayoría de los entusiastas de la programación.Cada investigador de programación puede mejorar el algoritmo de este capítulo y aplicarlo a casos reales.
1 Algoritmo estándar de optimización del forrajeo bacteriano
Inserte la descripción de la imagen aquí
2 Operación de quimiotaxis
Inserte la descripción de la imagen aquí
3 Operación de enjambre
Inserte la descripción de la imagen aquí
4 Operación de reproducción
Inserte la descripción de la imagen aquí
5 Eliminación y dispersión
El área local donde las bacterias viven en el entorno real pueden ocurrir Cambios graduales (como el agotamiento de los alimentos) o cambios repentinos (como un aumento repentino de la temperatura ). Esto puede hacer que las poblaciones bacterianas que viven en esta área local migren a una nueva área o sean asesinadas colectivamente por fuerzas externas. La simulación de este fenómeno en el algoritmo BFO se denomina operación migratoria.
6 flujo del algoritmo BFO
Inserte la descripción de la imagen aquí

En segundo lugar, el código fuente

%%%%%%%%%%%%-----BF0算法-----%%%%%%%%%%%%%%%
clc; clear;  close all
warning off
feature jit off  % 加速代码执行
%-----初始化参数-----
bounds = [-5.12, 5.12;-5.12, 5.12]; % 函数变量范围
p = 2;   % 搜索范围的维度
s = 26;  % 细菌的个数
Nc = 50; % 趋化的次数
Ns = 4;  % 趋化操作中单向运动的最大步数
C(:,1) = 0.001*ones(s,1);    % 翻转选定方向后,单个细菌前进的步长
Nre = 4;     % 复制操作步骤数
Ned = 2;     % 驱散(迁移)操作数
Sr = s/2;    % 每代复制(分裂)数
Ped = 0.25;  % 细菌驱散(迁移)概率
d_attract = 0.05;         % 吸引剂的数量
ommiga_attract = 0.05;    % 吸引剂的释放速度
h_repellant = 0.05;       % 排斥剂的数量
ommiga_repellant = 0.05;  % 排斥剂的释放速度
for i = 1:s               % 产生初始细菌个体的位置
    P(1,i,1,1,1) = -5.12 + rand*10.24;
    P(2,i,1,1,1) = -5.12 + rand*10.24;
end
%----细菌趋药性算法循环开始
%---- 驱散(迁移)操作开始
for l = 1:Ned
	%-----复制操作开始
    for k = 1:Nre
        %-----趋化操作(翻转或游动)开始
        for j = 1:Nc
            %-----对每一个细菌分别进行以下操作
            for i = 1:s
                %-----计算函数J(i,j,k,l),表示第i个细菌在第l次驱散第k次
                %--------复制第j次趋化时的适应度值
                J(i,j,k,l) = fitness(P(:,i,j,k,l));
                %-----修改函数,加上其它细菌对其的影响
                Jcc = sum(-d_attract*exp(-ommiga_attract*((P(1,i,j,k,l)-...
                    P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2)))+...
                    sum(h_repellant*exp(-ommiga_repellant*((P(1,i,j,k,l)-...
                    P(1,1:26,j,k,l)).^2+(P(2,i,j,k,l)-P(2,1:26,j,k,l)).^2)));
                J(i,j,k,l) = J(i,j,k,l) + Jcc;
                %----保存细菌目前的适应度值,直到找到更好的适应度值取代之
                Jlast = J(i,j,k,l);
                %-----翻转,产生一个随机向量C(i),代表翻转后细菌的方向
                Delta(:,i) = (2*round(rand(p,1))-1).*rand(p,1);
                % PHI表示翻转后选择的一个随机方向上前进
                PHI = Delta(:,i)/sqrt(Delta(:,i)'*Delta(:,i));
                %-----移动,向着翻转后细菌的方向移动一个步长,并且改变细菌的位置
                P(:,i,j+1,k,l) = P(:,i,j,k,l) + C(i,k)*PHI;
                %-----计算细菌当前位置的适应度值
                J(i,j+1,k,l) = fitness(P(:,i,j+1,k,l));
                %-----游动-----
                m = 0;         % 给游动长度计数器赋初始值
                while(m < Ns)  % 未达到游动的最大长度,则循环
                    m = m + 1;
                    % 新位置的适应度值是否更好?如果更好,将新位置的适应度值
                    % 存储为细菌i目前最好的适应度值
                    if(J(i,j+1,k,l)<Jlast)
                        Jlast = J(i,j+1,k,l);  % 保存更好的适应度值
                        % 在该随机方向上继续游动步长单位,修改细菌位置
                        P(:,i,j+1,k,l) = P(:,i,j+1,k,l) + C(i,k)*PHI;
                        % 重新计算新位置上的适应度值
                        J(i,j+1,k,l) = fitness(P(:,i,j+1,k,l));
                    else
                        % 否则,结束此次游动
                        m = Ns;
                    end
                end

Tres, resultados en ejecución

Inserte la descripción de la imagen aquí

Cuatro, comentarios

Código completo o escritura agregue QQ1564658423 revisión anterior
>>>>>>
[Optimización] basada en el algoritmo de lobo gris de optimización de enjambre de partículas de Matlab [incluido el código fuente de Matlab 006]
[Optimización] basado en el algoritmo de optimización de lobo gris multiobjetivo de Matlab MOGWO [incluido Matlab problema de código fuente 007]
[solución optimizada] diseño óptimo de las estaciones de carga basado en el algoritmo de enjambre de partículas de Matlab [incluido el código fuente de Matlab 012]
[solución optimizada] problema de vendedor de múltiples viajes basado en el algoritmo genético de Matlab [incluido el código fuente de Matlab 016]
[optimizado solución】 Encuentre la ruta más corta basada en el algoritmo genético de Matlab [incluido el código fuente 023 de Matlab]
[Solución de optimización] Problema de empaque 3D basado en recocido simulado y genético de Matlab [incluido el código fuente de Matlab 031]
[Solución de optimización] Resuelva la optimización del intervalo de salida del vehículo basado en el algoritmo genético matlab Problema [Incluye el código fuente 132 de Matlab]
[Solución de optimización] Algoritmo de enjambre de krill [Incluye el código fuente 133 de matlab]
[Solución de optimización] Algoritmo de evolución diferencial [Incluye el código fuente 134 de Matlab]
[Solución de optimización] Método de función de penalización basado en Optimización de restricciones de matlab [Incluir código fuente de Matlab 163 período]
[Solución de optimización] Basado en el algoritmo de lobo gris mejorado de matlab para resolver el modelo de pirólisis de petróleo pesado [Incluir código fuente de Matlab período 164]
[Solución optimizada] Basado en falla de red de distribución del algoritmo de colonia de hormigas de Matlab ubicación [Incluir el punto 165 del código fuente de Matlab]
[Solución de optimización basada en el algoritmo genético de matalb para resolver el problema de optimización del reabastecimiento de material de la isla [incluido el código fuente 172 de Matlab]
[Solución de optimización] Algoritmo de optimización inmune de la población de coronavirus (CHIO) [incluido el código fuente 186 de Matlab ]
[Solución de optimización] Algoritmo de optimización Golden Eagle (GEO)) 【Incluir el código fuente de Matlab 187 período】
[Solución de optimización multiobjetivo] Solución de optimización multiobjetivo basada en el algoritmo matlab golden eagle (MOGEO) [incluido el código fuente 188 de Matlab]
[Solución de optimización] Solución de optimización de red neuronal BP basada en la interfaz GUI de matlab [Código fuente 208 de Matlab]
[Optimización solución] Solución de optimización de algoritmo genético basada en la interfaz GUI de Matlab [incluido el código fuente 209 de Matlab]
[Solución de optimización] Análisis de optimización de aproximación numérica basado en el algoritmo inmune de Matlab [incluido el código fuente 211 de Matlab]
[Solución de optimización] Análisis de optimización de funciones basado en el algoritmo heurístico de Matlab [Incluir el código fuente 212 de Matlab]
[Solución de optimización ] Optimización de la señal de tráfico urbano basada en el algoritmo genético mejorado de matalb (GA + IGA) [Incluir el código fuente de Matlab 213 período]
[Solución de optimización] Optimización de la señal de tráfico urbano basada en el algoritmo genético mejorado de matalb GA [ Incluyendo el código fuente de Matlab 214 período]

[Solución de optimización] Optimización de la señal de tráfico urbano basada en el algoritmo genético mejorado IGA de matalb [incluido el código fuente 215 de Matlab]
[Solución de optimización] Optimización de la función de optimización de enjambres de partículas basada en la función de penalización de Matlab [incluido el código fuente 216 de Matlab]

Supongo que te gusta

Origin blog.csdn.net/TIQCmatlab/article/details/113642565
Recomendado
Clasificación