Nicht für MT-Entwickler! Wodurch soll INIT_PARAMETERS_INCORRECT ersetzt werden? - Seite 8

 
Aleksey Vyazmikin:

Sie haben 4 Parameter, also müssen Sie diese 4 Parameter so organisieren, dass sie nur mit den richtigen Werten arbeiten, dann kann die Genetik hilfreich sein.

Wie das?

Wenn jeder Parameter 3 korrekte Werte annehmen kann, dann erhält man beiuse_parameter = true 81 Durchläufe, und wenn = false, dann sind 80 Durchläufe nutzlos.

Wie kann man das also "irgendwie" regeln?

 
Сергей Таболин:

Wie funktioniert das?

Wenn jeder Parameter_ 3 korrekte Werte annehmen kann, dann erhält man beiuse_parameter = true 81 Durchläufe, und wenn = false, dann sind 80 Durchläufe nutzlos.

Wie kann man das also "irgendwie" regeln?

Ich kann diese Frage nicht beantworten, weil ich zumindest die Bedingungen für die Optimierung nicht verstehe - entweder haben Sie sich schlecht ausgedrückt oder ich bin dumm.

Sie haben 4 voneinander abhängige Parameter oder zwei Paare?

Wenn Sie 4 voneinander abhängige und, wie Sie vorher geschrieben haben, alle Varianten in einer Datei als eine Einstellung haben, dann wird die Genetik zufällig (und vielleicht durch eine andere Methode - Frage für MQ) das Feld füllen und den ausgewählten Teil optimieren. Wenn Sie neben diesen 4 Parametern noch andere optimieren wollen, kann der Genetiker die optimale Einstellung in Bezug auf die ausgewählten und die anderen Parameter suchen.

 
Сергей Таболин:

In Ihrem Fall können nur gültige Ketten erzeugt werden.

Sie haben 1953 gültige Kombinationen. Nehmen Sie die int-Einstellung von 0 bis 1952 heraus und generieren Sie die richtige Kombination anhand der Sequenznummer.

 
Alexey Navoykov:

Das ist Ihr Irrtum: Es gibt keine "überflüssigen" Passagen in der Genetik. Es sortiert alles von selbst aus und filtert Unnötiges heraus, was Zeit und Ressourcen spart, und Sie stören es nur.

Im Grunde widersprechen Sie sich selbst. Erst sagen Sie, dass Sie wollen, dass alles von selbst funktioniert, indem Sie einen magischen Knopf drücken, ohne zusätzlichen Aufwand Ihrerseits. Aber gleichzeitig schaffen Sie Schamanen im Code, die angeblich dem Optimierungsalgorithmus helfen.

Jedenfalls ist jetzt alles klar:

Sie müssen nichts durch INIT_PARAMETERS_INCORRECT eliminieren, sondern nur 121 gemäß Ihrer Programmlogik berechnen, und die Genetik wird ihre Arbeit tun und das Ergebnis wird in weniger als 1953 Durchläufen erzielt.

Wenn Sie mit der langsamen vollständigen Suche optimieren, sind zusätzliche Durchläufe natürlich nicht erforderlich. Sie können in Ihrem EA einen zusätzlichen Parameter einführen, der die Art der Optimierung festlegt. Wenn es sich um eine vollständige Suche handelt, werden die zusätzlichen Durchläufe zurückgewiesen, wenn es sich um eine genetische Suche handelt, werden sie nicht zurückgewiesen. Es ist schade, dass MQL Ihnen eine solche Option nicht bietet. Die Entwickler sollten darum bitten, diese Funktion hinzuzufügen.

Als ich mit dem Problem konfrontiert wurde, dass Dutzende von Ergebnissen in den Optimierungsergebnissen identisch sind, habe ich ein Thema erstellt, in dem ich gefragt habe, wie man dieses Problem loswerden kann. Leider sind nach dem Verbot alle meine Themen und Kommentare aus meinen Veröffentlichungen verschwunden, so dass ich Ihnen den Link nicht geben kann.

Dort wurde mir gesagt, ich solle INIT_PARAMETERS_INCORRECT verwenden.

Und ja, ich verstehe nicht, warum Sie sich auf wissentlich nutzlose Läufe einlassen müssen:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • usw.

wenn es im Wesentlichen dasselbe ist?

Und nach dem, was ich über Genetik weiß, stellt sich heraus, dass diese sich wiederholenden Ketten rotieren, und die besten sind vielleicht gar nicht in Sichtweite dieses Algorithmus... Ist das nicht richtig?

 
TheXpert:

Es wurde schon oft mit anderen Worten gesagt: Sie können nur gültige Ketten erzeugen, indem Sie den Eingaberaum transformieren.

Sie haben 1953 gültige Kombinationen. Nehmen Sie die int-Einstellung von 0 bis 1952 heraus und generieren Sie die richtige Kombination durch die Sequenznummer. das ist eine Option.

Das habe ich dann auch getan...

 
Сергей Таболин:

Und ja, ich verstehe nicht, warum man sich auf einen wissentlich nutzlosen Lauf einlassen sollte:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • usw.

wenn es im Wesentlichen dasselbe ist?

Und nach dem, was ich über Genetik weiß, stellt sich heraus, dass diese sich wiederholenden Ketten rotieren, und die besten sind vielleicht gar nicht in Sichtweite dieses Algorithmus... Ist das nicht richtig?

Was sind also die besten Stränge? Es ist auch eine Anzahl von wiederholten Kopien. Und diese Wiederholung erhöht die Wahrscheinlichkeit, dass eine dieser Kopien bei der Suche erfasst wird.

Die Chancen (Wahrscheinlichkeiten) sind also mit und ohne Wiederholungen gleich, so dass die Zeit für die genetische Suche in beiden Fällen gleich lang sein wird.

Generell empfehle ich Ihnen trotzdem, die Funktionsweise des genetischen Algorithmus zu verstehen, sonst ist es sinnlos, Ihnen etwas zu erklären.

 
Alexey Navoykov:

Was sind also die besten Ketten? ...

Wenn ich das wüsste, bräuchte ich auch nicht zu optimieren.

Vielleicht ist die beste Variante 326000, 514300 oder 346215?

 
Сергей Таболин:

Wenn ich das wüsste, bräuchte ich auch nicht zu optimieren.

Vielleicht ist die beste Variante 326000, 514300 oder 346215?

Das war nur eine einleitende Frage, auf die ich eine Erklärung gegeben habe.

Es ist also nicht "am besten", sondern "am besten, da es alle möglichen Kopien dieser Kette gibt.

Sie verstehen nicht, dass Sie beim Aussieben der Kette nachINIT_PARAMETERS_INCORRECT eine dieser erfolgreichen Ketten oder eine, die ihr nahe kommt, übersehen könnten. Die Suche wird also nicht kürzer.

 
Alexey Navoykov:

Das war nur eine einleitende Frage, auf die ich eine Erklärung gegeben habe.

Es handelt sich also nicht um die "beste", sondern um die "beste, wenn man alle verschiedenen Kopien dieser Kette betrachtet.

Sie verstehen nicht, dass Sie durch das Aussortieren der Kette gemäßINIT_PARAMETERS_INCORRECT genau eine dieser erfolgreichen Ketten oder eine Kette in der Nähe davon übersehen könnten. Die Suche wird also nicht kürzer.

Ich sortiere AUSSCHLIESSLICH die sich wiederholenden aus! Im Beispiel sind sie mit einem roten Hintergrund gekennzeichnet.

Wie kann eine 120000-Kette besser sein als eine 010020-Kette? Es ist die gleiche Kette! Und 100002, und 000012! Warum also all diese Wiederholungen desselben Themas?

 
Сергей Таболин:

Ich sortiere AUSSCHLIESSLICH die sich wiederholenden aus! Im Beispiel sind sie mit einem roten Hintergrund gekennzeichnet.

Wie kann die Kette 120000 besser sein als die Kette 010020? Es ist die gleiche Kette! Und 100002, und 000012! Warum also all diese Wiederholungen desselben Themas?

OK, Sie verstehen es nicht, aber das ist zu erwarten. Für Hörende habe ich alles gesagt, was ich zu sagen habe. Ich sehe keinen Sinn darin, weiterzumachen