Discussion of article "Population optimization algorithms: Bacterial Foraging Optimization (BFO)"

 

New article Population optimization algorithms: Bacterial Foraging Optimization (BFO) has been published:

E. coli bacterium foraging strategy inspired scientists to create the BFO optimization algorithm. The algorithm contains original ideas and promising approaches to optimization and is worthy of further study.

The Bacterial Foraging Optimization (BFO) algorithm is a fascinating optimization technique that can be used to find approximate solutions to extremely complex or impossible numerical function maximization/minimization problems. The algorithm is widely recognized as a global optimization algorithm for distributed optimization and control. BFO is inspired by the social foraging behavior of Escherichia coli. BFO has already attracted the attention of researchers for its effectiveness in solving real-world optimization problems that arise in several application areas. The biology behind the foraging strategy of E. coli is emulated in an original way and used as a simple optimization algorithm.

Bacteria, such as E. coli or salmonella, are among the most successful organisms on the planet. These agile bacteria have semi-rigid appendages called flagella, with which they propel themselves with a twisting motion. When all the flagella rotate counterclockwise, a propeller effect is created and the bacterium will move in a more or less rectilinear direction. In this case, the bacterium performs a movement called swimming. All flagella rotate in the same direction.


parent_clone

Fig. 1. Replication: division into original (preservation of the motion vector) and cloned (change in the motion vector) bacteria.
Tumble - a change in the vector of bacterium motion

Author: Andrey Dik

 

It would be good to test these all optimisation algorithms on more real data, where the parameters are five or more, the number of combinations is large.

 
Aliaksandr Hryshyn #:

It would be good to test these all optimisation algorithms on more real data, where the parameters are five or more, the number of combinations is large.

three types of test functions are used in the tests (smooth, smooth with "needle" extremum, and discrete), each of these functions is tested with 10, 50 and 1000 parameters (9 tests in total). in addition, testing is done with 0! step.

step 0 means that the precision to the 16th digit is double, it means that the step is 0.0000000000000001 for 1000 parameters, so, count how many combinations you get.

ok, I'll do the math. very roughly, it's 10e10^1000, that's about 10e16000. that's more than there are molecules in the visible universe.

 

It's the number of parameters:

input int    Test1FuncRuns_P    = 5;     //1) Number of functions in the test
input int    Test2FuncRuns_P    = 25;    //2) Number of functions in the test
input int    Test3FuncRuns_P    = 500;   //3) Number of functions in the test

This is the population size:

input int    BatsNumber_P       = 50;    //Number of bats

The number of epochs is calculated:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Did I get everything right from the code?

 
Aliaksandr Hryshyn #:

1- This is the number of parameters:

2. It is the size of the population:

3. The number of epochs is estimated:

Did I get everything right from the code?

1. No. The test functions are two-dimensional. i.e., for example:

input int    Test1FuncRuns_P    = 5;     //1) Number of functions in the test
means in Russian 5 test functions, so multiply by 2 - 10 optimised parameters

25 - 50 optimised parameters

500 - 1000 optimised parameters

2. Yes.

3. Yes, that's right, the estimated number of epochs is done so that the total number of FF runs would be the same and would not depend on the choice of population size in the algorithms. i.e. so that testing of the algorithms would be fair at different population size parameters in different algorithms.

 

Okay, thanks.

All these algorithms, from the series of articles, are parralellable, haven't looked at the others? I think I could use it, it's useful, only the function to be optimised is more complex, it has a dynamic number of parameters, both real and integer, and with different ranges, you have to solve the problem afterwards

 
Aliaksandr Hryshyn #:

I see, thank you.

All these algorithms, from the series of articles, are parralellable, haven't looked at the others? I think I could use it, it's useful, only the function being optimised is more complex, it has a dynamic number of parameters, both real and integer, and with different ranges, you have to solve the problem afterwards.


yeah, sure.
 
great work  👏
 
Lorentzos Roussos #:
great work  👏
thank you!)