Discussion de l'article "Algorithmes d'optimisation de la population : Optimisation de la Recherche Bactérienne (Bacterial Foraging Optimization, BFO)"

 

Un nouvel article Algorithmes d'optimisation de la population : Optimisation de la Recherche Bactérienne (Bacterial Foraging Optimization, BFO) a été publié :

La stratégie de recherche de nourriture de la bactérie E. coli a inspiré les scientifiques pour créer l'algorithme d'optimisation BFO. L'algorithme contient des idées originales et des approches prometteuses en matière d'optimisation et mérite d'être étudié plus avant.

L'algorithme Bacterial Foraging Optimization (BFO) est une technique d'optimisation fascinante qui peut être utilisée pour trouver des solutions approximatives à des problèmes de maximisation/minimisation de fonctions numériques extrêmement complexes ou impossibles à résoudre. L'algorithme est largement reconnu comme un algorithme d'optimisation globale pour l'optimisation et le contrôle distribués. BFO s'inspire du comportement social de recherche de nourriture d'Escherichia coli. Le BFO a déjà attiré l'attention des chercheurs en raison de son efficacité à résoudre les problèmes d'optimisation du monde réel qui se posent dans plusieurs domaines d'application. La biologie qui sous-tend la stratégie de recherche de nourriture d'E. coli est émulée de manière originale et utilisée comme un simple algorithme d'optimisation. 

Les bactéries, telles que E. coli ou les salmonelles, comptent parmi les organismes les plus performants de la planète. Ces bactéries agiles possèdent des appendices semi-rigides appelés flagelles, avec lesquels elles se propulsent par un mouvement de torsion. Lorsque tous les flagelles tournent dans le sens inverse des aiguilles d'une montre, un effet d'hélice est créé et la bactérie se déplace dans une direction plus ou moins rectiligne. Dans ce cas, la bactérie effectue un mouvement appelé nage. Tous les flagelles tournent dans le même sens.

parent_clone

Fig. 1 : Réplication : division en bactéries originales (conservation du vecteur de mouvement) et clonées (modification du vecteur de mouvement).
Tumble - un changement dans le vecteur de mouvement de la bactérie

Auteur : Andrey Dik

 

Il serait bon de tester tous ces algorithmes d'optimisation sur des données plus réelles, où les paramètres sont au nombre de cinq ou plus, et où le nombre de combinaisons est important.

 
Aliaksandr Hryshyn #:

Il serait bon de tester tous ces algorithmes d'optimisation sur des données plus réelles, où les paramètres sont au nombre de cinq ou plus, et où le nombre de combinaisons est important.

Trois types de fonctions d'essai sont utilisés dans les tests (lisse, lisse avec extrémité "aiguille" et discrète). Chacune de ces fonctions est testée avec 10, 50 et 1000 paramètres (9 tests au total). en outre, les tests sont effectués avec un pas de 0 !

Le pas 0 signifie que la précision au 16ème chiffre est double, cela signifie que le pas est de 0.0000000000000001 pour 1000 paramètres, donc, comptez combien de combinaisons vous obtenez.

ok, je vais faire le calcul. très grossièrement, c'est 10e10^1000, soit environ 10e16000. c'est plus qu'il n'y a de molécules dans l'univers visible.

 

C'est le nombre de paramètres :

input int    Test1FuncRuns_P    = 5;     //1) Nombre de fonctions dans le test
input int    Test2FuncRuns_P    = 25;    //2) Nombre de fonctions dans le test
input int    Test3FuncRuns_P    = 500;   //3) Nombre de fonctions dans le test

C'est la taille de la population :

input int    BatsNumber_P       = 50;    //Nombre de chauves-souris

Le nombre d'époques est calculé :

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Ai-je tout compris dans le code ?

 
Aliaksandr Hryshyn #:

1- Il s'agit du nombre de paramètres :

2. c'est la taille de la population :

3. Le nombre d'époques est estimé :

Ai-je bien compris le code ?

1. Non. Les fonctions de test sont bidimensionnelles, c'est-à-dire, par exemple :

input int    Test1FuncRuns_P    = 5;     //1) Nombre de fonctions dans le test
signifie en russe 5 fonctions d'essai, donc multiplier par 2 - 10 paramètres optimisés

25 - 50 paramètres optimisés

500 - 1000 paramètres optimisés

2. Oui.

3. Oui, c'est exact, l'estimation du nombre d'époques est faite de manière à ce que le nombre total d'exécutions FF soit le même et ne dépende pas du choix de la taille de la population dans les algorithmes, c'est-à-dire pour que les tests des algorithmes soient équitables pour différents paramètres de taille de la population dans différents algorithmes.

 

D'accord, merci.

Tous ces algorithmes, issus de la série d'articles, sont parallélisables, je n'ai pas regardé les autres ? Je pense que je pourrais l'utiliser, c'est utile, seulement la fonction à optimiser est plus complexe, elle a un nombre dynamique de paramètres, à la fois réels et entiers, et avec des plages différentes, vous devez résoudre le problème après coup.

 
Aliaksandr Hryshyn #:

Je vois, merci.

Tous ces algorithmes, issus de la série d'articles, sont parallélisables, je n'ai pas regardé les autres ? Je pense que je pourrais l'utiliser, c'est utile, seulement la fonction à optimiser est plus complexe, elle a un nombre dynamique de paramètres, à la fois réels et entiers, et avec des plages différentes, vous devez résoudre le problème après coup.


Oui, bien sûr.
 
excellent travail 👏
 
Lorentzos Roussos #:
excellent travail 👏
merci !)