Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Vielen Dank für die Klarstellung, die Frage zur Entfernung von Duplikaten ist zu meiner Zufriedenheit beantwortet. Ich füge den Skriptcode bei, der die ursprüngliche und die optimierte Funktion zeigt, was die Verringerung der Anzahl der Durchläufe in Schleifen verdeutlicht. In meinem aktuellen Kommentar weise ich NICHT auf einen Fehler in der Funktion hin, sondern schlage ihre Optimierung vor, und mein Hauptziel war es, das Prinzip der Duplikatentfernung herauszufinden, worauf ich eine umfassende Antwort erhalten habe. Nochmals vielen Dank für die Bibliothek und für die Erläuterung der Funktion.
110 und 160 sind zu viel für 20 Chromosomen.... Sie haben den Zähler an die falsche Stelle gesetzt.
Das ist die richtige Stelle:
OK. Versuchen Sie es nun mit derselben Population, mit denselben Chromosomen, aber in dieser Reihenfolge:
Was stellen wir fest?
zu Shurick:
In der Tat. Die Anzahl der Einzigartigkeitsprüfungen, mit allen verschiedenen Chromosomen, kann durch die Formel
(PopulChromosCount^2-PopulChromosCount)/2In unserem Beispiel mit 20 Chromosomen (unter der Annahme, dass alle Chromosomen unterschiedlich sind), wäre die Anzahl der Prüfungen
(20*20-20)/2=190Dies wird durch diese Prüfung bestätigt:
Wenn Duplikate abgefangen werden, gibt es noch weniger Kontrollen.
Vielen Dank für Ihre aktive Teilnahme an dem Projekt!
An der Bibliothek werden entsprechende Änderungen vorgenommen. Die Änderungen werden zwar die Suchmöglichkeiten des Algorithmus nicht beeinträchtigen, aber seine Arbeit rationeller machen.
Was sehen wir uns an?
Obwohl die Änderungen die Suchmöglichkeiten des Algorithmus in keiner Weise beeinflussen werden
Absolut richtig, die Qualität des Algorithmus wird sich nicht ändern, obwohl ich zunächst daran gezweifelt habe, aber jetzt haben Sie es mir bewiesen, aber auf diese Zweifel eine Methode der Optimierung gefunden :)
Ich habe den Artikel studiert und im Code eine solche Ungereimtheit gefunden: In zwei Funktionen zur Ermittlung von Bereichswerten wird die gleiche Formel verwendet:
D.h. es werden Daten außerhalb der Werte von zwei Genen erhalten, was charakteristisch für "künstliche Mutation" ist. Ist dies ein Fehler oder gibt es eine andere Erklärung?
Es scheint mir, dass es für die Replikationsmethode notwendig ist, die Vorzeichen zu ändern:
Minimum = C1+((C2-C1)*ReplicationOffset);
Maximum = C2-((C2-C1)*ReplicationOffset);
Ich habe den Artikel studiert und diese Unstimmigkeit im Code gefunden, zwei Funktionen verwenden dieselbe Formel, um Bereichswerte zu erhalten:
D.h. es werden Daten außerhalb der Werte von zwei Genen erhalten, was charakteristisch für "künstliche Mutation" ist. Ist dies ein Fehler oder gibt es eine andere Erklärung?
Es scheint mir, dass es für die Replikationsmethode notwendig ist, die Vorzeichen zu ändern:
Minimum = C1+((C2-C1)*ReplicationOffset);
Maximum = C2-((C2-C1)*ReplicationOffset);
Es liegt kein Fehler und keine Inkonsistenz vor. Sowohl bei der Replikation als auch bei der künstlichen Mutation sind die Grenzen des wahrscheinlichen Auftretens eines neuen Gens (die von Ihnen zitierten Codeabschnitte) auf dieselbe Weise definiert.
Aber bei der Replikation liegt der Bereich der Wahrscheinlichkeit innerhalb dieser Grenzen, bei der künstlichen Mutation - außerhalb dieser Grenzen.
Die Replikation dient der Übertragung von Merkmalen der Gene beider Elternteile (innerhalb der Grenzen).
Die künstliche Mutation dient dazu, neue Gene zu erzeugen, die sich von denen der Eltern unterscheiden (außerhalb der Grenzen).
Es gibt keinen Fehler und keine Inkonsistenz. Sowohl bei der Replikation als auch bei der künstlichen Mutation sind die Grenzen des wahrscheinlichen Auftretens eines neuen Gens (die von Ihnen zitierten Codeabschnitte) auf dieselbe Weise definiert.
Aber bei der Replikation liegt der Bereich der Wahrscheinlichkeit innerhalb dieser Grenzen, bei der künstlichen Mutation - außerhalb dieser Grenzen.
Die Replikation dient der Übertragung von Merkmalen der Gene beider Elternteile (innerhalb der Grenzen).
Die künstliche Mutation dient dazu, neue Gene zu erzeugen, die sich von denen der Eltern unterscheiden (außerhalb der Grenzen).
Übrigens, es ist sehr schön, der Zerstörer eines der berühmtesten Händlermythen im Zusammenhang mit ZZ zu sein (die zweite Aufgabe im Artikel). :)
Offenbar habe ich den Wortlaut der Aufgabe nicht verstanden. Meine Aussage:
Einstiegspunkte für maximalen Gewinn mit der Bedingung, dass der Mindestumsatz N Pips beträgt, befinden sich auf den Spitzen des ZigZag mit der Bedingung des Mindestknies N + Spread Pips.
Ich habe einige interessante Testfunktionen im MQL4-Forum-Thread "Test Multivariable Multiextremal Function" veröffentlicht, eine davon wird im Artikel vorgestellt.
Wenn Sie möchten, können Sie versuchen, Extrema der vorgeschlagenen Funktionen mit anderen Optimierungsalgorithmen als GA zu finden und die Ergebnisse hier posten. Sie sind herzlich eingeladen, dies zu tun. Es wird für alle interessant sein und in erster Linie für mich.
Mir ist klar, dass es sehr wichtig ist, die Gültigkeit der Anpassung zu bewerten. Eine der Methoden ist das Hinzufügen von Rauschen zu den Originaldaten.
Die Quellcodes für alternative Optimierungsmethoden finden Sie hier(http://alglib.sources.ru/optimization/) und hier(http://ool.sourceforge.net/).
Es ist offensichtlich, dass jeder Optimierungsalgorithmus bei seinen eigenen Klassen von Zielfunktionen besser abschneidet.
Welche Zielfunktionen verwenden Sie in der Praxis?