Diskussion zum Artikel "Genetische Algorithmen - Leicht gemacht!" - Seite 3

 
Ich habe Ihnen gesagt, dass mein Kopf durcheinander ist, also bin ich in die falsche Richtung gegangen.
Hash kann auf die Suche nach Duplikaten innerhalb der Kolonie angewandt werden, und die Funktion, einen Hash zu finden, kann einfach und schnell gemacht werden, weil sogar 1-2 Duplikate nicht das Wetter machen und das Ergebnis nicht verderben.
 

Die Ausführungszeit des GA-Algorithmus ist im Vergleich zur Ausführung von FF unverhältnismäßig gering. Daher ist es sinnlos zu versuchen, den Algorithmus noch weiter zu beschleunigen, genauso wie es sinnlos ist, den GA-Algorithmus z. B. auf eine DLL zu verlagern.

Wir sollten versuchen, die Anzahl der FF-Durchläufe mit der erforderlichen Genauigkeit des Ergebnisses zu reduzieren. Der Algorithmus verfügt über flexible Einstellungen für diesen Zweck. Außerdem kann die Suchzeit weiter reduziert werden, indem die Suchqualitäten von GAs im Allgemeinen und von Operatoren im Besonderen verbessert werden. Ich empfehle, das Forschungspotenzial in diese Richtungen zu lenken.

 
joo:

Die Ausführungszeit des GA-Algorithmus ist im Vergleich zur Ausführung von FF unverhältnismäßig gering. Daher ist es sinnlos zu versuchen, den Algorithmus noch weiter zu beschleunigen, genauso wie es sinnlos ist, den GA-Algorithmus z. B. auf eine DLL zu verlagern.

Wir sollten versuchen, die Anzahl der FF-Durchläufe mit der erforderlichen Genauigkeit des Ergebnisses zu reduzieren. Der Algorithmus verfügt über flexible Einstellungen für diesen Zweck. Außerdem kann die Suchzeit weiter reduziert werden, indem die Suchqualitäten von GAs im Allgemeinen und von Operatoren im Besonderen verbessert werden. Ich empfehle, das Forschungspotenzial in diese Richtungen zu lenken.


Es scheint, dass dll jetzt nicht schneller sein wird als mql 5.
Okay, sobald ich eine Bibliothek schreibe, werde ich sie testen, dann werde ich schreiben, was dabei herauskam))).

 

Wichtiger Hinweis zu diesem Artikel.

Verwenden Sie nicht die Algorithmusparameter

FFNormaliseDigits und GeneNormaliseDigits

Sie brauchen den Wert der Fitnessfunktion und die Gene nicht zu normalisieren. Die Normalisierung führt zu einer Verschlechterung der Durchsuchbarkeit des Algorithmus und zu einer Erhöhung der Anzahl der FF-Läufe. Außerdem sind die negativen Auswirkungen auf den Algorithmus umso größer, je mehr Nachkommastellen verworfen werden.

Mit anderen Worten: Es war ein Fehler, die Normalisierungsoperation in den Algorithmus aufzunehmen.

Nicht zu verwechseln mit der Sampling-Operation, die durch den Parameter Precision gesteuert wird!

 
Eine wichtige Bemerkung zum Artikel.

Verwenden Sie keine Algorithmusparameter

FFNormalizeDigits und GeneNormalizeDigits

Es ist nicht notwendig, die Werte der Fitnessfunktion und der Gene zu normalisieren. Die Normalisierung führt zu einer Verringerung der Suchfähigkeit des Algorithmus und zu einer Erhöhung der Anzahl der FF-Starts. Und, je mehr Zeichen nach einem Komma abgelehnt werden, desto stärker zeigt sich der negative Einfluss auf den Algorithmus.

Mit anderen Worten, die Einführung der Operation der Normalisierung in den Algorithmus war ein Fehler.

Nicht zu verwechseln mit der Operation der Digitalisierung, die im Parameter Precision durchgeführt wird!

 
joo:

Wichtiger Hinweis zu diesem Artikel.

Verwenden Sie nicht die Algorithmusparameter

FFNormaliseDigits und GeneNormaliseDigits

Sie brauchen den Wert der Fitnessfunktion und die Gene nicht zu normalisieren. Die Normalisierung führt zu einer Verschlechterung der Durchsuchbarkeit des Algorithmus und zu einer Erhöhung der Anzahl der FF-Läufe. Außerdem sind die negativen Auswirkungen auf den Algorithmus umso größer, je mehr Nachkommastellen verworfen werden.

Mit anderen Worten: Es war ein Fehler, die Normalisierungsoperation in den Algorithmus aufzunehmen.

Nicht zu verwechseln mit der Sampling-Operation, die durch den Parameter Precision gesteuert wird!

In der UGAlib-Bibliothek selbst ist es daher besser, die Normalisierung zu entfernen oder nur in FF.
 
Serj_Che:
Ist es besser, die Normalisierung in der UGAlib-Bibliothek selbst oder nur in FF zu entfernen.
FFNormalizeDigits wird in FF verwendet, um den Fitnesswert zu normalisieren, und GeneNormalizeDigits wird im Algorithmus selbst verwendet, um Gene zu normalisieren. Es besteht keine Notwendigkeit, beide zu normalisieren.
 
joo:
FFNormalizeDigits wird in FF verwendet, um den Fitnesswert zu normalisieren, und GeneNormalizeDigits wird im Algorithmus selbst verwendet, um die Gene zu normalisieren. Es besteht keine Notwendigkeit, beide zu normalisieren.

Ich verstehe. Natürlich werde ich es selbst korrigieren, aber wenn es nicht schwierig ist, poste bitte die korrigierte Version der UGAlib.

Ich fürchte, ich werde Fehler machen.

 
Aktualisierte UGA-Bibliothek und Beispiele zum Artikel. Die aktuelle kostenlose Autorenversion 1.1.0 ist über die Links im Text am Ende des Artikels verfügbar.
 

Vielen Dank an den Autor für die Bibliothek!

Fügen Sie die Zeile "cnt++;" in die Schleife der übergeordneten Suchfunktion ein, sonst kann sie in eine Endlosschleife geraten!

 //Отбор двух родителей.

void SelectTwoParents

(

int &address_mama,

int &address_papa

)

{

  //-----------------------Переменные-------------------------------------

  int cnt=1;

  address_mama=0;//адрес материнской особи в популяции

  address_papa=0;//адрес отцовской особи в популяции

  //----------------------------------------------------------------------

  //----------------------------Отбор родителей--------------------------

  //Десять попыток выбрать разных родителей.

  while (cnt<=10)

  {

    //Для материнской особи

    address_mama=NaturalSelection();

    //Для отцовской особи

    address_papa=NaturalSelection();

    if (address_mama!=address_papa)

      break;

    cnt++; 

  }

  //---------------------------------------------------------------------

}