Andrey Dik #: Ich bezweifle, dass der Wert von GetMicrosecondCount die Werte bei wiederholten Durchläufen wiederholen kann, selbst wenn man sich Mühe gibt. Vorausgesetzt natürlich, dass die einzelnen Tests länger als eine Mikrosekunde dauern.
Auf der linken Seite befindet sich eine Spalte mit den Startzeiten der Skripte.
99,99 % ist das Maximum, das mit dem gewählten Schritt erreicht werden kann, und soweit ich weiß, wird in den BGA-Einstellungen eine Genauigkeit von zwei Dezimalstellen gewählt.
Dies ist also nicht eine Folge der gleichen Initialisierung des gcc, sondern ein Ergebnis der vollen theoretisch möglichen Konvergenz innerhalb der gestellten Aufgabe.
Sie können sich davon überzeugen, wenn Sie das allererste Chromosom, das in jedem einzelnen Test erzeugt wird, ausdrucken, es werden unterschiedliche Chromosomen sein. Dies ist die erstaunliche Eigenschaft des Optimierungsalgorithmus, bei unterschiedlichen (zufälligen) Ausgangszuständen dieselbe Lösung zu finden.
Ich habe mir einen Test ausgedacht, um die Widerstandsfähigkeit des Algorithmus gegen das Hängenbleiben in lokalen Gebieten zu testen.
Wir müssen alle Agenten bei der ersten Iteration nicht zufällig über das gesamte Feld verteilen, sondern auf das globale Minimum. Die Aufgabe besteht darin, das globale Maximum zu finden. Ich bin mir sicher, dass viele Algos auf diese Weise im Loch bleiben werden.
Dies ist ein sehr künstlicher Fall, aber er enthält interessante Schlussfolgerungen.
Ein Test der Widerstandsfähigkeit des Algorithmus gegen das Hängenbleiben an Orten kam mir in den Sinn.
Wir müssen alle Agenten bei der ersten Iteration nicht zufällig über das gesamte Feld verteilen, sondern auf das globale Minimum. Die Aufgabe besteht darin, das globale Maximum zu finden. Ich bin sicher, dass viele Algos im Loch bleiben werden.
Dies ist ein sehr künstlicher Fall, aber er enthält interessante Schlussfolgerungen.
Die gesamte Population ist an einem Punkt eine degenerierte Population. Dies ist auch ein Test für die Auswirkungen einer abnehmenden Vielfalt in der Population, der Algorithmus sollte in der Lage sein, aus einem solchen Engpass herauszukommen.
Wir müssen alle Agenten in der ersten Iteration nicht zufällig über das gesamte Feld verteilen, sondern auf das globale Minimum. Die Aufgabe besteht darin, das globale Maximum zu finden.
Der übliche Start ist die Suche nach dem globalen Maximum.
Dann starten wir von dem gefundenen Punkt(MaxTmp), um das globale Minimum zu finden.
Dann starten wir von dem gefundenen Punkt(MinTmp), um das globale Maximum zu finden.
Weiter zu Schritt 2.
In den Schritten 2-3 messen wir, wie weit wir von den globalen Minima/Maxima entfernt sind(MaxGlobal - MaxTmp + MinTmp - MinGlobal). Der Durchschnitt ist die Bewertung1 des Optimierungsalgorithmus.
Der Durchschnitt der Summe von(MaxTmp[i]-MinTmp[i]) ist die Bewertung2 des Optimierungsalgorithmus.
Nun gibt es keine Funktion, die es erlaubt, den Algorithmus von einem Punkt aus zu starten.
Normaler Start mit Suche nach dem globalen Maximum.
Dann Start vom gefundenen Punkt(MaxTmp) zur Suche nach dem globalen Minimum.
Dann starten Sie vom gefundenen Punkt(MinTmp) aus, um das globale Maximum zu suchen.
Weiter zu Schritt 2.
In den Schritten 2-3 messen wir, wie weit wir von den globalen Minima/Maxima entfernt sind(MaxGlobal - MaxTmp + MinTmp - MinGlobal). Der Durchschnitt ist die Bewertung1 des Optimierungsalgorithmus.
Wir nehmen den Durchschnitt der Summe(MaxTmp[i]-MinTmp[i]) - rating2 des Optimierungsalgorithmus.
So kann man es machen)))
Сейчас нет функции, позволяющей запускать алгоритм из точки.
Sie können die Koordinaten der Agenten "zwangsweise" mit beliebigen Werten initialisieren, bevor der FF in der ersten Epoche gemessen wird. Die Felder der Agenten sind öffentlich. Die "Eingeweide" der Algorithmen haben versucht, sie von außen so zugänglich wie möglich zu machen, das widerspricht natürlich dem üblichen Ansatz, die Sicherheit von Feldern zu gewährleisten, aber wer sich auf jeden Fall in den Fuß schießen will, wird einen Weg finden, und so bleibt die Bequemlichkeit der Nutzung der Algorithmen erhalten.
Und, ist das Problem mit der Initialisierung des HCS gelöst?
99,99 % ist das Maximum, das mit dem gewählten Abstand erreicht werden kann, und soweit ich weiß, beträgt die gewählte Genauigkeit zwei Dezimalstellen in den BGA-Einstellungen.
Dies ist also nicht eine Folge der gleichen Initialisierung des gcc, sondern ein Ergebnis der vollen theoretisch möglichen Konvergenz innerhalb der gestellten Aufgabe.
Sie können sich davon überzeugen, wenn Sie das allererste Chromosom, das in jedem einzelnen Test erzeugt wird, ausdrucken, es werden unterschiedliche Chromosomen sein. Dies ist die erstaunliche Eigenschaft des Optimierungsalgorithmus, bei verschiedenen (zufälligen) Ausgangszuständen die gleiche Lösung zu finden.
Es ist möglich, die Koordinaten der Agenten "zwangsweise" von außen mit beliebigen Werten zu initialisieren, bevor die FF in der allerersten Epoche gemessen wird.
Bitte zeigen Sie Beispiele für Ihre beiden Algorithmen.
Bitte zeigen Sie Beispiele für Ihre beiden Algorithmen.
Fügen Sie in die Hauptschleife der Epochen einen Code ein, der die Koordinaten der Agenten mit den Koordinaten des globalen Minimums der Funktion überschreibt:
Dieser Trick wird mit dem BGA-Algorithmus nicht funktionieren, weil wir auf diese Weise nur den Phänotyp überschreiben, während der binäre Genotyp unverändert bleibt. Dazu müssen wir in den Algorithmus eindringen, und wenn die Population noch in den Kinderschuhen steckt, müssen wir einen solchen chirurgischen Eingriff vornehmen.
Das ist das Ergebnis, wenn Sie ESG auf diese Weise initialisieren:
Hier habe ich ein Video des ESG aufgenommen. Sie können sehen, wie er von einem Punkt aus aufsteigt und sich auf der Suche nach einem globalen Maximum ausbreitet. Nicht alle Algorithmen verhalten sich so, ich habe darüber in meinen Artikeln geschrieben, manche Algorithmen haben überhaupt keine Mechanismen, um "aus der Falle zu entkommen".
Hallo, ich fange gerade an, mich über Alternativen zum eingebauten schnellen genetischen Algorithmus zu informieren. Ich habe mich gefragt, ob Sie mir helfen können, Ihre BGA-Optimierung zum Laufen zu bringen. Ich habe mir einige Ihrer Artikel zu diesem Thema angesehen. Ich habe jedoch das Gefühl, dass ich zu spät anfange, irgendwo Informationen übersehen habe und nicht weiß, wie ich den EA tatsächlich mit einem anderen Algorithmus optimieren kann. Ich habe test_ao_bga.mq5 heruntergeladen und kompiliert. Wenn ich das Terminal lade, sagt es: "Ungültiger Programmtyp, das Laden von Test_AO_BGA.ex5 ist fehlgeschlagen". Wenn ich versuche, es auszuführen, meldet das Terminal "Test_AO_BGA.ex5 nicht gefunden". Könnten Sie mir bitte helfen, es zum Laufen zu bringen? Und wie kann ich meinen eigenen EA so konfigurieren, dass er die BGA-Optimierung verwendet? Vielen Dank!
Ich bezweifle, dass der Wert von GetMicrosecondCount die Werte bei wiederholten Durchläufen wiederholen kann, selbst wenn man sich Mühe gibt. Vorausgesetzt natürlich, dass die einzelnen Tests länger als eine Mikrosekunde dauern.
Auf der linken Seite befindet sich die Spalte mit den Skriptlaufzeiten.
Auf der linken Seite befindet sich eine Spalte mit den Startzeiten der Skripte.
Die gesamte Population ist an einem Punkt eine degenerierte Population. Dies ist auch ein Test für die Auswirkungen einer abnehmenden Vielfalt in der Population, der Algorithmus sollte in der Lage sein, aus einem solchen Engpass herauszukommen.
Das ist nur lautes Denken.
In den Schritten 2-3 messen wir, wie weit wir von den globalen Minima/Maxima entfernt sind(MaxGlobal - MaxTmp + MinTmp - MinGlobal). Der Durchschnitt ist die Bewertung1 des Optimierungsalgorithmus.
Der Durchschnitt der Summe von(MaxTmp[i]-MinTmp[i]) ist die Bewertung2 des Optimierungsalgorithmus.
Nun gibt es keine Funktion, die es erlaubt, den Algorithmus von einem Punkt aus zu starten.
In den Schritten 2-3 messen wir, wie weit wir von den globalen Minima/Maxima entfernt sind(MaxGlobal - MaxTmp + MinTmp - MinGlobal). Der Durchschnitt ist die Bewertung1 des Optimierungsalgorithmus.
Wir nehmen den Durchschnitt der Summe(MaxTmp[i]-MinTmp[i]) - rating2 des Optimierungsalgorithmus.
So kann man es machen)))
Sie können die Koordinaten der Agenten "zwangsweise" mit beliebigen Werten initialisieren, bevor der FF in der ersten Epoche gemessen wird. Die Felder der Agenten sind öffentlich. Die "Eingeweide" der Algorithmen haben versucht, sie von außen so zugänglich wie möglich zu machen, das widerspricht natürlich dem üblichen Ansatz, die Sicherheit von Feldern zu gewährleisten, aber wer sich auf jeden Fall in den Fuß schießen will, wird einen Weg finden, und so bleibt die Bequemlichkeit der Nutzung der Algorithmen erhalten.
Und, ist das Problem mit der Initialisierung des HCS gelöst?
Sie haben Recht, vielen Dank!
Es ist möglich, die Koordinaten der Agenten "zwangsweise" von außen mit beliebigen Werten zu initialisieren, bevor die FF in der allerersten Epoche gemessen wird.
Bitte zeigen Sie Beispiele für Ihre beiden Algorithmen.
Bitte zeigen Sie Beispiele für Ihre beiden Algorithmen.
Fügen Sie in die Hauptschleife der Epochen einen Code ein, der die Koordinaten der Agenten mit den Koordinaten des globalen Minimums der Funktion überschreibt:
Dieser Trick wird mit dem BGA-Algorithmus nicht funktionieren, weil wir auf diese Weise nur den Phänotyp überschreiben, während der binäre Genotyp unverändert bleibt. Dazu müssen wir in den Algorithmus eindringen, und wenn die Population noch in den Kinderschuhen steckt, müssen wir einen solchen chirurgischen Eingriff vornehmen.
Das ist das Ergebnis, wenn Sie ESG auf diese Weise initialisieren:
Hier habe ich ein Video des ESG aufgenommen. Sie können sehen, wie er von einem Punkt aus aufsteigt und sich auf der Suche nach einem globalen Maximum ausbreitet. Nicht alle Algorithmen verhalten sich so, ich habe darüber in meinen Artikeln geschrieben, manche Algorithmen haben überhaupt keine Mechanismen, um "aus der Falle zu entkommen".