Diskussion zum Artikel "Genetische Algorithmen - Leicht gemacht!"

 

Neuer Artikel Genetische Algorithmen - Leicht gemacht! :

Der Verfasser behandelt in diesem Beitrag evolutionäre Berechnungen mit Hilfe eines persönlich entwickelten, genetischen Algorithmus. Er zeigt die Funktionsweise dieses Algorithmus anhand von Beispielen und gibt praktische Empfehlungen für seine Verwendung.

Autor: Joo Zepper

 

Ich grüße Sie alle!

Ich hoffe, der Artikel hat Ihnen gefallen.

Ich freue mich auf Ihre Tipps, wie Sie UGA in OOP umwandeln können.

 

Ich würde gerne sehen, ob dies

 MathSrand((int)TimeLocal());

funktionieren wird, wenn es optimiert ist?

Haben Sie Ihre Bibliothek im Testprogramm ausgeführt?

 
zigan :

1) Ich würde gerne sehen, ob es sich um

MathSrand((int)TimeLocal());

funktionieren wird, wenn es optimiert ist?

2) Haben Sie Ihre Bibliothek im Testprogramm ausgeführt?

1) Ich sehe keinen Grund, warum es nicht funktionieren sollte.

2) Diese einfache Frage lässt sich mit zwei Worten nicht erschöpfend beantworten.

Die Optimierungsprobleme eines Händlers lassen sich bedingt in 2 Typen einteilen: a) "Lokale Probleme" und b) "Globale Probleme".

a) Lokal - eine Menge aller Aktionen eines Händlers/TS (die wiederum in lokale Aufgaben unterteilt werden können), die bei jedem Tick ausgeführt werden. Ein Beispiel für diesen Typ ist die erste Aufgabe in diesem Artikel (Lösen von Gleichungen, Auswahl des optimalen Optionspreises und andere ähnliche Aufgaben). Sie erfordern keine "zukünftige" Preisentwicklung.

b) Globale Aufgaben - Optimierung einer Funktion aller lokalen Aufgaben (das kann der Gesamtgewinn für den Berichtszeitraum, der Drawdown, die MO usw. sein). Es wird die gesamte Kurshistorie für den zu optimierenden Zeitraum benötigt. Der interne Tester führt genau diese Art von Aufgaben aus.

UGA wurde so konzipiert, dass es nicht vom Standardtester abhängt und sowohl für globale als auch für lokale Aufgaben verwendet werden kann, ohne den Algorithmuscode zu ändern, auch in "selbstgebauten" Testern. Im Rahmen des Standardtesters kann UGA ohne Änderungen nur in lokalen Aufgaben verwendet werden. Für globale Aufgaben muss er im Tester modifiziert werden.

Ich habe noch keine Notwendigkeit gehabt, den Optimierungsalgorithmus in einem Tester zu verwenden, der seinen eigenen Optimierungsalgorithmus hat.

Beschreiben Sie Ihre Aufgabe ganz allgemein, und wir werden uns hier überlegen, wie man sie lösen kann.

 

Danke, joo- interessante Arbeit!

Es haben sich Fragen zur praktischen Anwendung des genetischen Algorithmus ergeben

Die Arbeit beschreibt:

- das Finden des Maximums/Minimums einer Funktion von zwei Variablen auf einem gegebenen Intervall

- das Finden des Maximums der Gewinnfunktion (Beispiel mit ZigZag).

Bitte nennen Sie Beispiele für praktische Handelsaufgaben, bei denen der Algorithmus Ihrer Meinung nach nützlich sein kann.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
joo :

Beschreiben Sie Ihr Problem in allgemeiner Form, und wir werden hier nach Möglichkeiten zur Lösung suchen.

Das Problem ist einfach: Ich möchte, dass die Funktion srand() den Generator jedes Mal, wenn ich den Tester ausführe, auf einen zufälligen Startpunkt setzt.

Es stellte sich heraus, dass MathSrand((int)TimeLocal()) den Generator bei verschiedenen Durchläufen des Testers auf den vorherigen (gleichen) Anfangszustand setzt.

 
zigan :

Die Aufgabe ist einfach: Ich möchte, dass die Funktion srand() den Generator jedes Mal, wenn ich das Prüfprogramm ausführe, auf einen zufälligen Startpunkt setzt.

Es stellt sich heraus, dass MathSrand((int)TimeLocal()) den Generator bei verschiedenen Durchläufen des Testers auf den vorherigen (gleichen) Anfangszustand setzt.

TimeLocal gibt die Zeit in Sekunden an. Beim Testen wird es die gleiche generierte Testzeit sein.

Versuchen Sie GetTickCount zu verwenden. Es gibt wirklich Millisekunden an und emuliert nichts.

 
stringo :

Bei der Prüfung wird die gleiche Prüfzeit erzeugt.

О! Ich danke Ihnen.

 
yu-sha :

Danke, joo- interessante Arbeit!

Es haben sich Fragen zur praktischen Anwendung des genetischen Algorithmus ergeben

Die Arbeit beschreibt:

- das Finden des Maximums/Minimums einer Funktion von zwei Variablen auf einem gegebenen Intervall

- das Finden des Maximums der Gewinnfunktion (Beispiel mit ZigZag).

Bitte geben Sie Beispiele für praktische Handelsaufgaben, bei denen der Algorithmus Ihrer Meinung nach nützlich sein kann.

Wirtschaftliche Aufgaben im Allgemeinen und die Aufgaben von Tradern im Besonderen sind meist optimaler Natur.

Händler sind ständig auf der Suche nach optimalen Parametern für ihre TS. Hier ist eine bei weitem nicht vollständige Liste der Aufgaben, bei deren Lösung UGA helfen kann:

-Findung optimaler Parameter von Indikatoren

-Suche nach optimalen Parametern für MM

-Suche nach optimalen Einstellungen von Filtern (alle, einschließlich der Suche nach Koeffizienten in digitalen Filtern) in Indikatoren

-Training von neuronalen Netzen beliebiger Topologie und beliebiger Größe

-Training von Komitees von Netzen beliebiger Topologie und beliebiger Größe. (ein Komitee ist eine Gruppe von voneinander unabhängigen Netzen).

UGA kann sowohl für die Lösung der einzelnen oben genannten Aufgaben als auch für alle zusammen verwendet werden. Um Ihnen zu helfen, die Leistungsfähigkeit von UGA zu verstehen, möchte ich sagen, dass die Möglichkeit, die letzte Art von Aufgaben in der Liste zu lösen, Ihnen erlaubt, Modelle des Gehirns zu erstellen (wie Sie wissen, besteht das Gehirn aus Abteilungen).

Die Liste der Aufgaben kann noch lange fortgesetzt werden, schauen Sie sich einfach die Forenbeiträge an.

Du kannst auch Wurzeln von Gleichungen finden. :)
 

Coole Sache und gut geschrieben. Ich selbst habe auch mit genetischer Optimierung gespielt, aber leider habe ich nur wenige Vorteile gefunden. GA wird in der Regel als eine Methode der globalen Optimierung betrachtet. Das stimmt, wenn man viel Zeit hat, um sich mit sehr großen Kolonien zu befassen, aber wenn die Zeit (Koloniegröße) begrenzt ist, konvergiert GA, wie die Gradientenabstiegsmethoden, zu einem lokalen Minimum, und zwar recht langsam. Natürlich bietet GA im Vergleich zu Methoden der stumpfen Suche nach allen möglichen Kombinationen von Eingabeparametern einen unbestreitbaren Geschwindigkeitsvorteil. Eine der zahlreichen Anwendungen von GA ist das Training von mehrschichtigen neuronalen Netzen mit einer großen Anzahl von Koeffizienten. Solche Netze haben eine große Anzahl von lokalen Minima. Aus irgendeinem Grund werden GAs als das Heilmittel für dieses Übel angesehen. Aber in Wirklichkeit ist das Heilmittel das angewandte Werkzeug, d.h. in diesem Fall das mehrschichtige Netz. Es ist viel einfacher, ein anderes Werkzeug zu wählen, das eine hohe Klassifizierungsgenauigkeit bietet (z. B. Kaufen/Verkaufen/Halten) oder eine Regressionsextrapolation mit einfacher und eindeutiger Optimierung ;-).

 
gpwr :

1) Cooles Zeug und gut geschrieben.

2) Ich habe auch schon mit genetischer Optimierung herumgespielt, aber leider habe ich keinen großen Nutzen gefunden. GA wird in der Regel als eine Methode der globalen Optimierung betrachtet. Das stimmt, wenn man viel Zeit hat, um sich mit sehr großen Kolonien zu beschäftigen, aber wenn die Zeit (Koloniegröße) begrenzt ist, konvergiert GA, wie die Gradientenabstiegsmethoden, zu einem lokalen Minimum, und zwar recht langsam. Natürlich bietet GA im Vergleich zu Methoden der stumpfen Suche nach allen möglichen Kombinationen von Eingabeparametern einen unbestreitbaren Geschwindigkeitsvorteil. Eine der zahlreichen Anwendungen von GA ist das Training von mehrschichtigen neuronalen Netzen mit einer großen Anzahl von Koeffizienten. Solche Netze haben eine große Anzahl von lokalen Minima. Aus irgendeinem Grund werden GAs als das Heilmittel für dieses Übel angesehen. Aber in Wirklichkeit ist das Heilmittel das angewandte Werkzeug, d.h. in diesem Fall das mehrschichtige Netz. Es ist viel einfacher, ein anderes Tool zu wählen, das in der Lage ist, eine hochgenaue Klassifizierung (wie Kaufen/Verkaufen/Halten) oder Regressionsextrapolation mit einfacher und eindeutiger Optimierung durchzuführen ;-).

1) Ich danke Ihnen für Ihre freundlichen Worte.

2) Ich bezweifle nicht, dass Sie sich in der Materie auskennen, aber Sie brauchen dennoch etwas Geschick im Umgang mit genetischen Algorithmen (4. Tipp im Abschnitt des Artikels "Empfehlungen für die Arbeit mit UGA" )

UGA wurde als universelles Werkzeug entwickelt, das für jedes Optimierungsproblem verwendet werden kann (Abschnitt des Artikels "Ein bisschen Geschichte"), ohne dass der Algorithmus verändert werden muss. Es ist maximal für weitere Modifikationen und das Hinzufügen spezifischer Operatoren verfügbar. Kennen Sie viele Optimierungsalgorithmen mit solchen Eigenschaften?

Ich weiß nicht, warum GA als Allheilmittel für verschiedene Optimierungsprobleme angesehen wird, ich persönlich glaube das nicht und habe das auch nie behauptet. Natürlich kann man für jede spezifische Aufgabe das beste Optimierungswerkzeug wählen, sowohl im Hinblick auf die Ausführungsgeschwindigkeit als auch auf das Endergebnis. UGA hat ein anderes Ziel - es soll universell sein.

Ich habe einige interessante Testfunktionen im MQL4-Forenthread "Test Multivariable Multiextreme Function" gepostet, eine davon wird in diesem 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.

PS: Ich empfehle Ihnen, sich mit dem im Artikel vorgeschlagenen Algorithmus vertraut zu machen, um sich vom Gegenteil (fett gedruckt) zu überzeugen, obwohl ich nicht das Ziel habe, irgendjemanden von irgendetwas zu überzeugen.

Viel Glück bei Ihren Forschungen!

Тестовая многопеременная многоэкстремальная функция. - MQL4 форум
  • www.mql5.com
Тестовая многопеременная многоэкстремальная функция. - MQL4 форум