Algorithmus-Optimierung Meisterschaft. - Seite 45

 
Andrey Dik:

Ihr Algorithmus verwendet einen direkten FF-Aufruf aus dem Algorithmus, d. h. einen Aufruf von *.ex5 nach *.ex5. Können wir einen speziellen Stopp-Befehl aus dem ausführenden Skript aufrufen, der die Optimierung korrekt beendet, ohne ExpertRemove() zu verwenden?

Gibt es dabei irgendwelche Fallstricke oder Probleme?

Nur zur Erinnerung, heute muss ich ein Beispiel für den Aufruf des Algorithmus in einem Testskript in zwei Varianten liefern, in denen Folgendes stattfindet: 1. Aufruf der FF aus dem Testskript; 2. Aufruf der FF aus dem Algorithmus.

Das können Sie nicht. In diesem Sinne habe ich kürzlich versucht, verschiedene Anrufvarianten zu diskutieren. Deshalb habe ich vorgeschlagen, die Zeit nicht zu messen, sondern sie nur aus dem Diagramm zu entfernen und zu verwerfen, wenn sie eine zu lange Laufzeit erreicht.
 
Yuri Evseenkov:

Ich frage mich, warum solche MQL-Promotoren wie Dmitry Fedoseyev und Andrey Dik nicht alles volkstümlich an einem einfachen Beispiel erklären wollen.

Aber sie können. Der Artikelhttps://www.mql5.com/ru/articles/351 ist ein Beispiel dafür.

Vielleicht liegt der Grund dafür nicht in der Natur der Masse. Vielleicht wollen sie solche fortgeschrittenen Benutzer wie sich selbst finden und ein Treffen organisieren. Daher die Beschränkung auf MQL5, hochspezialisierter Jargon und langatmige räumlich-zeitliche Analogien.

Über genetische Algorithmen sehr anschaulich hier https://habrahabr.ru/post/128704/

Ich habe es hier versucht, niemand scheint es zu sehen und will es auch nicht.

Aber nicht in diesem Thread, sondern in dem vorherigen, den Belkonsky erstellt und gelöscht hat. Sie hätten auch hier fragen können. Obwohl, im Allgemeinen verhält sich die Gesellschaft richtig, warum hier posten, wenn Belkonsky kommt sofort zu scheißen hier.

 
Dmitry Fedoseev:
Das können Sie nicht. In diesem Sinne habe ich vor kurzem versucht, die verschiedenen Anrufe hier zu diskutieren. Deshalb habe ich vorgeschlagen, die Zeit nicht zu messen, sondern sie nur aus dem Diagramm zu entfernen und zu verwerfen, wenn sie eine zu lange Laufzeit erreicht.
Und wenn innerhalb von *.ex5 Funktion wird einige Variable die ganze Zeit, intern oder global für Flag==false überprüfen?
 
Andrey Dik:
Und wenn innerhalb der *.ex5-Funktion eine Variable permanent, intern oder global auf flag==false überprüft wird?

Wenn eine globale Variable des Terminals. Aber dann müssen die Teilnehmer auch dazu verpflichtet werden.

Hier kann es vorkommen, dass mitten in der Abarbeitung einer Epoche ein Befehl gegeben wird und diese unterbrochen werden muss, ein Teil der während einer Epoche geleisteten Arbeit wird umsonst gemacht.

 
Dmitry Fedoseev:

Wenn eine globale Variable des Terminals. Aber dann müssen die Teilnehmer auch dazu verpflichtet werden.

Hier kann es vorkommen, dass mitten in der Verarbeitung einer Epoche ein Befehl eingereicht wird und diese unterbrochen werden muss, wodurch ein Teil der in einer Epoche geleisteten Arbeit verloren geht.

Ja, sicher.

Dann muss das Skript in der Lage sein, eine Unterbrechungsmarkierung in eine globale Variable zu schreiben, wann immer es will.

Und der Algorithmus sollte vor Beginn der Epoche prüfen, ob das Flag erlaubt ist.

Im Beispiel des Prüfskripts wird dieser Punkt (globale Prüfung) berücksichtigt.

 
Andrey Dik:

Ja, sicher.

Dann muss das Skript in der Lage sein, ein Stop-Flag in eine globale Variable zu schreiben, wenn es das möchte.

Und der Algorithmus muss vor dem Start der Epoche prüfen, ob das Flag erlaubt ist.

Im Beispiel des Prüfskripts wird dieser Punkt (globale Prüfung) berücksichtigt.

Die Regeln sollten also vorschreiben, dass vor der Ausführung einer Epoche das Vorhandensein einer Variablen mit einem solchen Namen geprüft werden muss (Angabe des Namens).
 
Mit diesem Ausbildungsstand und der langjährigen Erfahrung in diesem Bereich laden Sie also Leute zur Teilnahme an der Meisterschaft ein, die kaum wissen, wovon sie reden? Zeigen Sie ihnen Zeichentrickfilme und sagen Sie: "Mach mit, du schaffst das!"? Ist es für Sie und ein paar andere Konkurrenten moralisch befriedigend, sie zu schlagen? Warum laden Sie sie ein? Vielleicht liegt die Zufriedenheit nicht in der moralischen, sondern in der materiellen Dimension?
 
Реter Konow:
Mit einem solchen Ausbildungsniveau und langjähriger Erfahrung in diesem Bereich laden Sie also Leute zur Meisterschaft ein, die fast keine Ahnung haben, wovon sie reden? Zeigen Sie ihnen Cartoons und sagen Sie: "Mach mit, du kannst das"? Ist es für Sie und ein paar andere Konkurrenten moralisch befriedigend, sie zu schlagen? Warum laden Sie sie ein? Vielleicht liegt die Zufriedenheit nicht in der moralischen, sondern in der materiellen Dimension?

Nun, erstens gibt es nicht zwei erfahrene Optimierer, sondern viel mehr (die Tatsache, dass sich nur wenige trauen, ist eine andere Sache). Zweitens: Was können diejenigen, die nicht sehr gut vorbereitet sind, jetzt tun? - Auch sie können an der Veranstaltung teilnehmen, es gibt keine Vorausscheidungen.

Schauen Sie sich die Meisterschaften von MQ an, sind grüne Anfänger dort verboten? - Nein, das haben sie nicht, und sie hatten Recht.

Es gibt auch kein Verbot für "Jugendliche". Jeder darf mitmachen.

Und drittens: Muss ich sagen: "Nehmt nicht teil, ihr habt keine Chance!"? - Im Gegenteil, ich sagte: "Jeder hat eine Chance!" Und das tun sie, unabhängig vom Ausbildungsstand.

 
Dmitry Fedoseev:
Also in den Regeln schreiben eine solche Anforderung - vor der Durchführung einer Epoche überprüfen die Existenz der Änderung mit so-und-so Namen (speziell angeben).
GUT.
 
Dmitry Fedoseev:

Wenn eine globale Variable des Terminals. Aber dann müssen die Teilnehmer auch dazu verpflichtet werden.

Dies kann dazu führen, dass ein Befehl mitten in der Verarbeitung einer Epoche gegeben wird und unterbrochen werden muss, ein Teil der in einer Epoche geleisteten Arbeit wird umsonst gemacht.

Ich denke, es gibt eine Lösung, auch wenn sie mir nicht wirklich gefällt. Es wurde von jemandem vorgeschlagen, vielleicht von Ihnen.

Sie können im Voraus (durch eine spezielle Anforderung im Code) festlegen, dass die Anzahl der Läufe nicht größer als eine solche Zahl sein soll. Dann ruft der FF, der die Anzahl der Aufrufe zählt, wenn die zulässige Anzahl überschritten ist, ExpertRemove() auf.

Der Algorithmus wird gewarnt, und dann ist er, wie man so schön sagt, selbst schuld).

Ist das in Ordnung?