Discussão do artigo "Algoritmos de otimização populacionais: algoritmo de otimização de forrageamento bacteriano (BFO)"

 

Novo artigo Algoritmos de otimização populacionais: algoritmo de otimização de forrageamento bacteriano (BFO) foi publicado:

A base da estratégia de forrageamento de E. coli (E. coli) inspirou cientistas a desenvolverem o algoritmo de otimização BFO. Esse algoritmo apresenta ideias originais e abordagens promissoras para otimização e merece um estudo mais aprofundado.

O algoritmo de otimização forrageamento bacteriano (BFO) é uma técnica fascinante que pode ser utilizada para encontrar soluções aproximadas para problemas extremamente complexos ou impossíveis de maximização ou minimização de funções numéricas. Reconhecido amplamente como um algoritmo global de otimização de grande interesse para otimização e controle distribuído, o BFO se inspira no comportamento social de busca de alimento da Escherichia coli. O BFO tem atraído a atenção dos pesquisadores devido à sua eficácia na resolução de problemas de otimização do mundo real que surgem em diversas áreas de aplicação. A biologia por trás da estratégia de forrageamento da E. coli é emulada de forma original e utilizada como um algoritmo de otimização simples.

Bactérias como a E. coli ou a salmonela estão entre os organismos mais bem-sucedidos do planeta. Essas bactérias móveis possuem apêndices semirrígidos chamados flagelos, com os quais se impulsionam por meio de um movimento de torção. Quando todos os flagelos giram no sentido anti-horário, cria-se um efeito de hélice e a bactéria se move em uma direção mais ou menos reta. Nesse caso, a bactéria realiza um movimento chamado natação (swims), em que todos os flagelos giram na mesma direção.



parent_clone


Autor: Andrey Dik

 

Seria bom testar todos esses algoritmos de otimização em dados mais reais, em que os parâmetros são cinco ou mais e o número de combinações é grande.

 
Aliaksandr Hryshyn #:

Seria bom testar todos esses algoritmos de otimização em dados mais reais, em que os parâmetros são cinco ou mais e o número de combinações é grande.

Três tipos de funções de teste são usados nos testes (suave, suave com extremo "agulha" e discreta), cada uma dessas funções é testada com 10, 50 e 1.000 parâmetros (9 testes no total).

A etapa 0 significa que a precisão do 16º dígito é o dobro, ou seja, a etapa é 0,0000000000000001 para 1.000 parâmetros, portanto, conte quantas combinações você obtém.

ok, vou fazer as contas. de forma bem aproximada, é 10e10^1000, ou seja, cerca de 10e16000. isso é mais do que existem moléculas no universo visível.

 

É o número de parâmetros:

input int    Test1FuncRuns_P    = 5;     //1) Número de funções no teste
input int    Test2FuncRuns_P    = 25;    //2) Número de funções no teste
input int    Test3FuncRuns_P    = 500;   //3) Número de funções no teste

Esse é o tamanho da população:

input int    BatsNumber_P       = 50;    //Número de morcegos

O número de épocas é calculado:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Eu entendi tudo corretamente no código?

 
Aliaksandr Hryshyn #:

1- Esse é o número de parâmetros:

2. é o tamanho da população:

3. O número de épocas é estimado:

Consegui fazer tudo certo no código?

1. Não. As funções de teste são bidimensionais, ou seja, por exemplo:

input int    Test1FuncRuns_P    = 5;     //1) Número de funções no teste
significa em russo 5 funções de teste, então multiplique por 2 - 10 parâmetros otimizados

25 - 50 parâmetros otimizados

500 - 1000 parâmetros otimizados

2. Sim.

3. Sim, é isso mesmo, o número estimado de épocas é feito para que o número total de execuções de FF seja o mesmo e não dependa da escolha do tamanho da população nos algoritmos, ou seja, para que o teste dos algoritmos seja justo com diferentes parâmetros de tamanho da população em diferentes algoritmos.

 

Ok, obrigado.

Todos esses algoritmos, da série de artigos, são parraleláveis, não deu uma olhada nos outros? Acho que poderia usá-lo, é útil, só que a função a ser otimizada é mais complexa, tem um número dinâmico de parâmetros, tanto reais quanto inteiros, e com diferentes intervalos, você tem que resolver o problema depois

 
Aliaksandr Hryshyn #:

Entendo, obrigado.

Todos esses algoritmos, da série de artigos, são parraleláveis, não deu uma olhada nos outros? Acho que eu poderia usá-lo, é útil, só que a função que está sendo otimizada é mais complexa, tem um número dinâmico de parâmetros, tanto reais quanto inteiros, e com diferentes intervalos, e você tem que resolver o problema depois.


Sim, claro.
 
ótimo trabalho 👏
 
Lorentzos Roussos #:
ótimo trabalho 👏
obrigado!)