Nicht für MT-Entwickler! Wodurch soll INIT_PARAMETERS_INCORRECT ersetzt werden? - Seite 2
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
Sie können Ihr eigenes Optimierungsset in OnTesterInit erstellen und den Optimierer denken lassen, dass nur ein sinput int NumPass optimiert wird.
Es ist schwer zu sagen, wie sich dies auf das Endergebnis auswirkt - ob das gewünschte globale (lokale) Extremum gefunden wird.
Ich bin nicht bereit, Ihnen ein Beispiel zu geben, sehen Sie sich die Dokumentation an. Es ist dort gut geschrieben.
Ein Rezept besteht darin, dass die Entwickler das Ergebnis der FALSCHEN Durchgänge als den nächsten zuvor gezählten RICHTIGEN Durchgang zählen lassen. Dadurch werden die Löcher in der Optimierungsfläche ausgeglichen.
Dagegen sind die Entwickler. In diesem Fall werden andere Individuen der Population "überleben". Und die Genetik wird beginnen, mit Fehlern zu arbeiten.
Wie wäre es, eine Funktion zu schreiben, die nur gültige Ketten nach Nummern ausgibt?
Das erste, was mir in den Sinn kommt, ist eine Tabelle mit 117649 Werten, und lassen Sie die Genetik nach Zahlen in dieser Tabelle suchen.
Das ist es, was die Entwickler ablehnen. In diesem Fall werden andere Individuen der Population "überleben". Und die Genetik wird nicht mehr richtig funktionieren.
Ich wäre auch gegen einen solchen Algorithmus. INKORREKT ist ein inakzeptabler Parametersatz, der nicht durch den "nächsten akzeptablen" ersetzt werden kann.
Das ist es, was die Entwickler ablehnen. In diesem Fall werden andere Individuen der Population "überleben". Und die Genetik wird beginnen, fehlerhaft zu arbeiten.
Die Genetik ist in der Praxis fast immer falsch, was die Norm ist. Ohne gründliche Untersuchungen in diesem Bereich würde ich nichts zu der vorgeschlagenen Option sagen.
Wie wäre es mit einer Funktion, die nur gültige Ketten nach Nummern zurückgibt?
Das erste, was mir in den Sinn kommt, ist eine Tabelle mit 117649 Werten, und lassen Sie die Genetik nach Zahlen in dieser Tabelle suchen.
Forum für Handel, automatisierte Handelssysteme und Strategietests
Nicht für MT-Entwickler! Wodurch soll INIT_PARAMETERS_INCORRECT ersetzt werden?
fxsaber, 2018.07.10 16:22
Sie können Ihr Optimierungsset in OnTesterInit erstellen und den Optimierer denken lassen, dass nur ein sinput int NumPass optimiert wird.
Es ist schwer zu sagen, wie sich dies auf das Endergebnis auswirkt - ob das gewünschte globale (lokale) Extremum gefunden wird.
Es hängt stark vom Kriterium der Zufriedenheit mit dem Endergebnis ab.
Es ist offensichtlich, dass, wenn wir der vollständigen Aufzählung von y = x^2 folgen. Mischen Sie dann die Zeilen nach dem Zufallsprinzip und erstellen Sie eine neue Menge auf der Grundlage dieser Mischung. Dann wird GA den Scheitelpunkt der Parabel nicht finden.
Offensichtlich, wenn Sie eine vollständige Aufzählung von y = x^2 verfolgen. Dann mischen Sie die Optimierungszeilen nach dem Zufallsprinzip und erstellen eine neue Menge auf der Grundlage dieser Mischung. Die GA wird den Scheitelpunkt der Parabel nicht finden.
Ja, hier stellt sich heraus, dass genau diese FALSCHRECHTE den Raum der Fitnessfunktionen zu sehr "aufreißen".
Ich fürchte, es gibt nichts zu tun, außer die Eingabeparameter neu zu gestalten. Das Überspringen von OnTick(), wie Sie vorschlagen, ist nur eine Krücke, die den Parameter INCORRECT ersetzt, in Wirklichkeit wird der genetische Algorithmus sowieso "getötet". Die Genetik erfordert einige "Gradienten" der Ergebnisfunktion, damit wir sie verwenden können, um zu den Maxima zu gelangen. Aber wie findet man dieses Maximum, wenn man mehr FALSCHRECHTE als gültige Werte hat?
Ich vermute, dass man außer mit roher Gewalt nichts machen kann, und selbst mit roher Gewalt wird man eine höchst instabile Lösung finden.Es erfordert ein wenig Geschick , die Eingabeparameter einzustellen.
Ein sehr gängiges Beispiel kann angeführt werden. Bei der Optimierung des täglichen Handelsintervalls sind die tägliche Start- und Endzeit die beiden häufigsten Eingabeparameter.
Aber das ist für GA viel schlimmer als z.B. die Angabe von Startzeit und Dauer. Scheinbar dasselbe, aber nicht für die GA. Im zweiten Fall würde die GA besser abschneiden. Obwohl "besser" eine eher subjektive Einschätzung ist.
Georgiy Merts:
wenn wir mehr FALSCHRECHTE als gültige Werte haben - wie finden Sie dieses Maximum?
Nehmen wir die gleiche Parabel wie oben. Angenommen, wir machen INCORRECT auf dem Testintervall 90% des Wertes eines einzelnen Eingabeparameters. Der aktuelle GA wird bei einer solchen Aufgabe abstürzen. Wenn Sie sich jedoch für die vorgeschlagene Option entscheiden, wird die GA gut funktionieren.
Ich denke, @Andrey Dik kann bei diesen Fragen helfen. Aber selbst die konstruktive Kritik am regulären GA hat nicht gut für ihn geendet...
Nehmen Sie die gleiche Parabel wie oben. Angenommen, wir machen INCORRECT auf dem Testintervall 90% des Wertes des einzelnen Eingabeparameters. Die derzeitige Generalversammlung würde an einer solchen Aufgabe zugrunde gehen. Wenn Sie sich jedoch für die vorgeschlagene Variante entscheiden, wird die GA gut funktionieren.
Wie? Durch das Ersetzen von Fehlern durch die nächstgelegenen Korrekturen ??? Ich fürchte, alles hängt davon ab, wie wir genau diese Fehler verteilen. Es ist durchaus möglich, dass die nächstgelegenen Korrekturen - von der Spitze entfernt sind.
Ja, und es wird sich herausstellen, dass wir statt falscher Parametersätze richtige Ergebnisse haben werden - was meiner Meinung nach auch nicht gemacht werden sollte - was finden wir dann? Wir erhalten ein Maximum und es hat einen falschen Satz von Parametern ?