Diskussion zum Artikel "Algorithmen zur Optimierung mit Populationen Optimierung gemäß einer bakteriellen Nahrungssuche (BFO)"

 

Neuer Artikel Algorithmen zur Optimierung mit Populationen Optimierung gemäß einer bakteriellen Nahrungssuche (BFO) :

Die Strategie der Nahrungssuche des Bakteriums E. coli inspirierte die Wissenschaftler zur Entwicklung des BFO-Optimierungsalgorithmus. Der Algorithmus enthält originelle Ideen und vielversprechende Optimierungsansätze und ist es wert, weiter untersucht zu werden.

In dem oben genannten Algorithmus wird das Verhalten von Bakterien durch einen Mechanismus bestimmt, der als bakterielle Chemotaxis bezeichnet wird und eine motorische Reaktion dieser Mikroorganismen auf einen chemischen Reiz in der Umgebung darstellt. Dieser Mechanismus ermöglicht es dem Bakterium, sich in Richtung der anlockende Stoffe (meist Nahrung) und weg von den abstoßende Stoffe (für das Bakterium potenziell schädliche) zu bewegen. An den Polen des Bakteriums befinden sich Rezeptoren, die Lockstoffe und abstoßende Stoffe erkennen.

Aufgrund der geringen Größe des Bakteriums ist es nicht in der Lage, die unterschiedlichen Konzentrationen von nützlichen und schädlichen Stoffen zwischen den Polen zu erfassen. Die Bakterien bestimmen die Gradienten dieser Stoffe, indem sie die Veränderungen ihrer Konzentrationen während der Bewegung messen. Die Geschwindigkeit dieser Bewegung kann mehrere Dutzend Bakterienlängen pro Sekunde erreichen. Escherichia coli zum Beispiel bewegt sich normalerweise mit einer Geschwindigkeit vom 10-20-fachem seiner Länge pro Sekunde.


Eltern-Klon

Abb. 1. Replikation: Teilung in originales (mit beibehaltenen Bewegungsvektoren) und geklontes (mit veränderten Bewegungsvektoren) Bakterium.
Taumeln - eine Veränderung des Bewegungsvektors der Bakterie

Autor: Andrey Dik

 

Es wäre gut, alle diese Optimierungsalgorithmen an mehr realen Daten zu testen, bei denen die Parameter fünf oder mehr sind und die Anzahl der Kombinationen groß ist.

 
Aliaksandr Hryshyn #:

Es wäre gut, alle diese Optimierungsalgorithmen an mehr realen Daten zu testen, bei denen die Parameter fünf oder mehr sind und die Anzahl der Kombinationen groß ist.

In den Tests werden drei Arten von Testfunktionen verwendet (glatt, glatt mit "Nadel"-Extremum und diskret), jede dieser Funktionen wird mit 10, 50 und 1000 Parametern getestet (insgesamt 9 Tests). Außerdem werden die Tests mit Schritt 0!

Schritt 0 bedeutet, dass die Genauigkeit bis zur 16. Stelle doppelt so hoch ist, d.h. der Schritt ist 0,0000000000000001 für 1000 Parameter, zählen Sie also, wie viele Kombinationen Sie erhalten.

Ok, ich rechne mal nach. ganz grob gesagt sind es 10e10^1000, das sind etwa 10e16000. das ist mehr als es Moleküle im sichtbaren Universum gibt.

 

Das ist die Anzahl der Parameter:

input int    Test1FuncRuns_P    = 5;     //1) Anzahl der Funktionen im Test
input int    Test2FuncRuns_P    = 25;    //2) Anzahl der Funktionen im Test
input int    Test3FuncRuns_P    = 500;   //3) Anzahl der Funktionen im Test

Dies ist die Größe der Population:

input int    BatsNumber_P       = 50;    //Anzahl der Fledermäuse

Die Anzahl der Epochen wird berechnet:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

Habe ich im Code alles richtig verstanden?

 
Aliaksandr Hryshyn #:

1- Dies ist die Anzahl der Parameter:

(2) Dies ist die Größe der Grundgesamtheit:

3. Die Anzahl der Epochen wird geschätzt:

Habe ich mit dem Code alles richtig gemacht?

1. Nein. Die Testfunktionen sind zweidimensional, d.h., zum Beispiel:

input int    Test1FuncRuns_P    = 5;     //1) Anzahl der Funktionen im Test
bedeutet auf Russisch 5 Testfunktionen, also multipliziert mit 2 - 10 optimierte Parameter

25 - 50 optimierte Parameter

500 - 1000 optimierte Parameter

2. Ja.

3. Ja, das ist richtig, die geschätzte Anzahl der Epochen wird so gewählt, dass die Gesamtzahl der FF-Durchläufe gleich ist und nicht von der Wahl der Populationsgröße in den Algorithmen abhängt, d.h. dass das Testen der Algorithmen bei unterschiedlichen Populationsgrößenparametern in verschiedenen Algorithmen fair ist.

 

Okay, danke.

Alle diese Algorithmen aus der Artikelserie sind parralellierbar, die anderen habe ich mir nicht angeschaut? Ich denke, ich könnte es verwenden, es ist nützlich, nur die zu optimierende Funktion ist komplexer, sie hat eine dynamische Anzahl von Parametern, sowohl reelle als auch ganzzahlige, und mit verschiedenen Bereichen, man muss das Problem danach lösen

 
Aliaksandr Hryshyn #:

Ich verstehe, danke.

Alle diese Algorithmen aus der Artikelserie sind parralellierbar, die anderen habe ich mir nicht angeschaut? Ich denke, ich könnte es verwenden, es ist nützlich, nur die zu optimierende Funktion ist komplexer, sie hat eine dynamische Anzahl von Parametern, sowohl reelle als auch ganzzahlige, und mit verschiedenen Bereichen, man muss das Problem anschließend lösen.


Ja, sicher.
 
tolle Arbeit 👏
 
Lorentzos Roussos #:
tolle Arbeit 👏
danke :-)