Könnten Sie die möglichen Gruppen von Eingabeparametern und die unerwünschten Gruppen genauer beschreiben und erläutern, warum es zu viele unerwünschte Gruppen gibt?
Ich stimme mit den Entwicklern völlig überein, dass es nicht zu viele unerwünschte Sets geben sollte. Optimal sind nicht mehr als 10 %.
Wie war das? Darf ich Ihnen ein kleines Beispiel geben?
fxsaber hat Recht.
Wenn ein falscher Parametersatz eingegeben wird, geben Sie alle OnTick()-Funktionen auf einmal zurück. Und onTester - Sie geben das Mindestergebnis zurück.
Wie war das? Darf ich Ihnen ein kleines Beispiel geben?
input int i = 0; bool Incorrect; int OnInit() { Incorrect = !i; // нулевое значение считается некорректным (пример) // return(Incorrect ? INIT_PARAMETERS_INCORRECT : INIT_SUCCEEDED); // Было return(INIT_SUCCEEDED); } void OnTick() { if (Incorrect) return; // ... }
Es handelt sich nicht um eine Reihe von Eingabeparametern! Es ist eine Reihe von Funktionen, die sich nicht wiederholen dürfen! Bei langsamer Optimierung hilft INIT_PARAMETERS_INCORRECT wirklich, gültige Ketten für den Aufruf dieser Funktionen zu erstellen, aber ich habe 6 davon. Ich habe 117649 Kettenvarianten. Aber diese Ketten sind ohne einige Eingabeparameter nutzlos. Mit ihnen haben wir bereits über 38.000.000 ! Mit langsamer roher Gewalt lässt sich das Problem nicht umgehen.
Die Genetik wird sterben, weil die Optimierungsfläche des Optimierungskriteriums mehr oder weniger kontinuierlich (glatt) sein sollte. In Ihrem Fall erhalten Sie jedoch eine große Anzahl von Ausschlägen (Fehlschlägen).
Sie können das folgende Experiment einstellen. Nehmen Sie den Standard-Expert Advisor und fügen Sie dort einige zusätzliche Parameter zur Optimierung hinzu - gefälschte Parameter. Damit sind 90 % ihrer Sätze FALSCH. GA wird sterben. Es geht aber auch ganz gut ohne falsche Parameter.
Ich hab's. Es ist nur eine Frage der Auswahl der richtigen Funktionen und ihrer Reihenfolge im Optimierer. Und schreiben Sie alle unpassenden Ketten manuell.... Und wie wird der Optimierer sie dann finden?
Die Genetik wird sterben, weil die Optimierungsfläche des Optimierungskriteriums mehr oder weniger kontinuierlich (glatt) sein sollte. In Ihrem Fall erhalten Sie jedoch eine große Anzahl von Ausschlägen (Dips).
Ich verstehe das. Ich verstehe nur nicht, wie man das umgehen kann?
Ich verstehe das. Was ich nicht verstehe, ist, wie man das umgehen kann?
Ein Rezept besteht darin, dass die Entwickler das Ergebnis von INCORRECT-Durchläufen als den nächstgelegenen zuvor berechneten CORRECT-Durchlauf behandeln. Dadurch werden die Löcher in der Optimierungsfläche ausgeglichen.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich bin auf folgendes Problem gestoßen: Nach der Logik des Programms ist es notwendig, ungültige Funktionsaufrufe auszusieben. Ich verwende INIT_PARAMETERS_INCORRECT für diese Zwecke. Aber die genetische Optimierung hört praktisch sofort auf. Die Entwickler werden durch Fragen zu dieser Situation verärgert. Sie raten zu einer genetischen Analyse und so weiter und so fort.
Aber wozu brauche ich sie? Ich als Nutzer möchte Ergebnisse erzielen, und es ist mir egal, wie es funktioniert.
Hier also ein Beispiel für die drei Funktionen 1, 2 und 3. 0 ist nicht zu verwenden.
In einer Kette dürfen sich die Funktionen nicht wiederholen und es darf keine 0 zwischen den Funktionen stehen (sonst kann es zu Wiederholungen kommen).
Ein Beispiel für zulässige Ketten:
Beispiel für inakzeptable Ketten: