[Otimização] Análise de otimização de função baseada no algoritmo de forrageamento bacteriano matlab [incluindo o código-fonte do Matlab 217]

1. Introdução

As necessidades da vida real promovem o desenvolvimento de métodos de otimização. Por mais de meio século, devido às deficiências dos métodos de otimização tradicionais, alguns algoritmos evolutivos com desempenho de otimização global e forte versatilidade têm recebido grande atenção e aplicações em vários campos devido ao seu desempenho de otimização eficiente e sem necessidade de descrição precisa dos problemas. . O algoritmo evolutivo mais antigo e representativo é o algoritmo genético (GA) derivado da teoria da seleção natural de Darwin e da teoria da variação genética de Mendel na década de 1970. Nos últimos anos, as pessoas produziram uma série de algoritmos de otimização inteligentes baseados no comportamento de organismos naturais. Por exemplo, Dorigo et al. Propuseram a Otimização de Colônia de Formigas (ACO) em 1991, simulando o comportamento de descoberta de caminhos de formigas; Eberhart e Kennedy adotou em 1995, o Particle Swarm Optimization (PSO) foi proposto para simular o comportamento de predação de pássaros. Esses algoritmos são amplamente utilizados na área de engenharia e têm alcançado resultados notáveis. Com o desenvolvimento vigoroso de algoritmos de otimização de inteligência de enxame, Passino propôs um Bacteria Foraging Optimization Algorithm (BFOA) em 2002 que simula o comportamento de forrageamento de E. coli humana, adicionando um novo membro à família de algoritmos evolutivos biomiméticos. Este capítulo se concentrará na introdução do algoritmo de coleta de bactérias mais básico para a maioria dos entusiastas da programação.Cada pesquisador de programação pode melhorar o algoritmo neste capítulo e aplicá-lo a casos reais.
1 Algoritmo de otimização de forrageamento bacteriano padrão
Insira a descrição da imagem aqui
2 Operação de quimiotaxia
Insira a descrição da imagem aqui
3 Operação de enxame
Insira a descrição da imagem aqui
4 Operação de reprodução
Insira a descrição da imagem aqui
5 Eliminação e dispersão
A área local onde as bactérias vivem no ambiente real pode ocorrer mudanças graduais (como exaustão de alimentos) ou mudanças repentinas (como um aumento repentino na temperatura ) Isso pode fazer com que as populações bacterianas que vivem nesta área local migrem para uma nova área ou sejam coletivamente mortas por forças externas. A simulação desse fenômeno no algoritmo BFO é chamada de operação migratória.
6 Fluxo do algoritmo BFO
Insira a descrição da imagem aqui

Em segundo lugar, o código-fonte

%%%%%%%%%%%%-----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

Três, resultados em execução

Insira a descrição da imagem aqui

Quatro, observações

Código completo ou escrito add QQ1564658423 revisão anterior
>>>>>>
[Otimização] baseada no algoritmo de otimização de enxame de partículas matlab [incluindo o código-fonte 006 do Matlab]
[Otimização] baseado no algoritmo de otimização de lobo cinzento multi-objetivo matlab MOGWO [incluindo Matlab código-fonte problema 007]
[solução otimizada] layout ideal de estações de carregamento com base no algoritmo de enxame de partículas matlab [incluindo código-fonte Matlab 012]
[solução otimizada] problema do caixeiro viajante baseado em algoritmo genético matlab [incluindo código-fonte Matlab 016]
[otimizado solução】 Encontre o caminho mais curto com base no algoritmo genético do Matlab [incluindo o código-fonte do Matlab 023]
[Solução de otimização] Problema de empacotamento 3D baseado na genética do Matlab e recozimento simulado [incluindo o código-fonte do Matlab 031]
[Solução de otimização] Resolva a otimização do intervalo de partida do veículo baseado no algoritmo genético matlab Problema [Incluindo o código-fonte do Matlab 132]
[Solução de otimização] Algoritmo do Krill swarm [Incluindo o código-fonte do matlab 133]
[Solução de otimização] Algoritmo de evolução diferencial [Incluindo o código-fonte do Matlab 134]
[Solução de otimização] Método de função de penalidade baseado em Otimização de restrição matlab [Incluir código fonte Matlab 163 período]
[Solução de otimização] Baseado no algoritmo de lobo cinzento aprimorado matlab para resolver o modelo de pirólise de óleo pesado [Incluir código fonte Matlab período 164]
[Solução otimizada] Falha de rede de distribuição de algoritmo de colônia de formigas matlab localização [Incluir o período do código-fonte do Matlab 165]
[Solução de otimização baseada no algoritmo genético do matalb para resolver o problema de otimização da reposição do material da ilha [incluindo o código-fonte do Matlab 172]
[Solução de otimização] Algoritmo de otimização imune da população do Coronavirus (CHIO) [incluindo o código-fonte do Matlab 186 ]
[Solução de otimização] Algoritmo de otimização Golden Eagle (GEO)) 【Inclui o código-fonte do Matlab 187 período】
[Solução de otimização multiobjetivo]
Solução de otimização multiobjetivo baseada no algoritmo da águia dourada matlab (MOGEO) [incluindo o código-fonte do Matlab 188] [Solução de otimização] Solução de otimização da rede neural BP baseada na interface GUI do matlab [código fonte do Matlab 208]
[Otimização solução] Solução de otimização de algoritmo genético baseada na interface GUI matlab [incluindo o código-fonte Matlab 209]
[Solução de otimização] Análise de otimização de aproximação numérica baseada no algoritmo imunológico matlab [incluindo o código-fonte Matlab 211]
[Solução de otimização] Análise de otimização de função baseada no algoritmo heurístico matlab [Incluir código fonte Matlab 212]
[Solução de otimização] Otimização de sinais de tráfego urbano com base no algoritmo genético aprimorado de matalb (GA + IGA) [Incluir código fonte Matlab 213 período]
[Solução de otimização] Otimização de sinais de tráfego urbano baseada em algoritmo genético aprimorado de matalb GA [ Incluindo o período de código 214 do Matlab]

[Solução de otimização] Otimização de sinais de tráfego urbano com base no algoritmo genético IGA aprimorado de matalb [incluindo o código-fonte do Matlab 215]
[Solução de otimização] Otimização da função de otimização do enxame de partículas baseada na função de penalidade do Matlab [incluindo o código-fonte do Matlab 216]

Acho que você gosta

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