Diskussion zum Artikel "Algorithmen zur Optimierung mit Populationen: der Algorithmus Simulated Annealing (SA). Teil I"
Der Inhalt ist phänomenal. Ich finde es toll, wie Sie den Algorithmus auf so kompakte und gleichzeitig leicht lesbare Weise darstellen.
Wenn es Ihnen nichts ausmacht, sich in die etwas kryptischen Quellcodes von fxsaber zu vertiefen, dann schauen Sie sich diese Implementierung an, die im Blog von fxsaber veröffentlicht wurde (möglicherweise ist eine Übersetzung erforderlich).
- 2024.03.26
- www.mql5.com
Phänomenaler Inhalt, ich liebe es, wie Sie den Algorithmus so kompakt und gleichzeitig leicht lesbar darstellen.
Vielen Dank für Ihre freundlichen Worte, schön, dass Ihnen der Artikel gefällt. Ich hoffe, dass Ihnen der Kommentar von @Stanislav Korotky geholfen hat.
TesterStatistics () kann nützlich sein, um benutzerdefinierte Fitnessfunktionen für die Verwendung in OnTester () zu kompilieren.
Gibt es ein Beispiel dafür, wie man diese Algorithmen in einem EA implementieren kann?
Dankeschön
Gibt es ein Beispiel dafür, wie man diese Algorithmen in einem EA implementiert?
Danke
- www.mql5.com
Wie richtig festgestellt wurde, liegt der Hauptvorteil von Annealing in der Einfachheit der Implementierung. Daher ist die Änderung der Population dieses Algorithmus geradezu prädestiniert für eine Parallelisierung.
Ich erinnerte mich an die Aussage des Autors über die Einfachheit des Schreibens von parallelen Algorithmen in MQL5, aber ich habe dies in seinen Artikeln noch nicht bestätigt gesehen. Korrigieren Sie mich, wenn ich falsch liege.
PS. Ich meine die normale Parallelisierung, wie sie im Standard-Optimierer implementiert ist, nicht die Tricks mit dem Starten mehrerer Programminstanzen. Und natürlich die Implementierung mit Hilfe von MQL5 ohne Verwendung externer DLLs.
Wenn Sie Parallelisierung auf Code-Ebene benötigen, ist OpenCL weit verbreitet - sehen Sie sich Gizlyks Artikel über neuronale Netze und sein Lehrbuch an.
Wenn Sie eine Optimierung und Parallelisierung auf der gesamten Programmebene benötigen, wie es im Standard-Optimierer geschieht, können Sie sich das Beispiel von Booster ansehen, das die Parallelisierung von EA-Instanzen in Agenten verwendet (es wird reines MQL5 ohne externe DLLs verwendet).
Das Erstellen von Trites für separate Funktionen wie in C# und andere Formen der Code-Parallelisierung werden in MQL5 nicht unterstützt.
- www.mql5.com
Das Erstellen von Trites für separate Funktionen wie in C# und andere Formen der Codeparallelisierung werden in MQL5 nicht unterstützt.
Anwendung von OpenCL
Äußerst umständliche Technologie sowohl für die Codierung als auch für die spätere Anwendung in der Praxis. Dies wird beispielsweise durch die Tatsache bestätigt, dass der Standard-Optimierer sie nicht verwendet.
Dieser Ansatz ist kaum anwendbar, wenn man mehrere Optimierungen durchführen muss (eine unbestimmte Anzahl von Malen und möglicherweise mit einem unbestimmten Satz von Parametern bei jedem Mal). Zum Beispiel kann es sich um Ensemble-MO-Modelle handeln.
- 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.
Neuer Artikel Algorithmen zur Optimierung mit Populationen: der Algorithmus Simulated Annealing (SA). Teil I :
Der Algorithmus des Simulated Annealing ist eine Metaheuristik, die vom Metallglühprozess inspiriert ist. In diesem Artikel führen wir eine gründliche Analyse des Algorithmus durch und räumen mit einer Reihe von weit verbreiteten Überzeugungen und Mythen rund um diese weithin bekannte Optimierungsmethode auf. Der zweite Teil des Artikels befasst sich mit dem nutzerdefinierten Algorithmus Simulated Isotropic Annealing (SIA).
Der Algorithmus des Simulated Annealing, der simulierten Abkühlung, wurde 1983 von Scott Kirkpatrick, George Gelatt und Mario Vecchi entwickelt. Bei der Untersuchung der Eigenschaften von Flüssigkeiten und Feststoffen bei hohen Temperaturen wurde festgestellt, dass das Metall in einen flüssigen Zustand übergeht und die Teilchen zufällig verteilt sind, während der Zustand mit minimaler Energie unter der Bedingung einer ausreichend hohen Anfangstemperatur und einer ausreichend langen Abkühlzeit erreicht wird. Wenn diese Bedingung nicht erfüllt ist, befindet sich das Material in einem metastabilen Zustand mit nicht minimaler Energie - dies wird als Aushärtung bezeichnet, die in einer starken Abkühlung des Materials besteht. In diesem Fall hat die atomare Struktur keine Symmetrie (anisotroper Zustand oder ungleichmäßige Eigenschaften des Materials innerhalb des Kristallgitters).
Während des langsamen Abkühlens geht das Material ebenfalls in einen festen Zustand über, allerdings mit geordneten Atomen und mit Symmetrie, sodass vorgeschlagen wurde, diesen Prozess zu nutzen, um einen Optimierungsalgorithmus zu entwickeln, der bei komplexen Problemen ein globales Optimum finden kann. Der Algorithmus wurde auch als Methode zur Lösung von kombinatorischen Optimierungsproblemen vorgeschlagen.
Die Grundidee des Algorithmus basiert also auf einem mathematischen Prozessanalogon von glühendem Metall. Während des Abkühlens wird das Metall auf eine hohe Temperatur erhitzt und dann langsam abgekühlt, damit sich die Metallmoleküle bewegen und in stabilere Zustände überführen können, während innere Spannungen im Metall abgebaut und interkristalline Defekte beseitigt werden. Der Begriff „annealing“ (Abkühlen) wird auch mit der thermodynamischen freien Energie in Verbindung gebracht, die eine Eigenschaft des Materials ist und von seinem Zustand abhängt.
Der Optimierungsalgorithmus des simulierten Abkühlens verwendet ein ähnliches Verfahren. Der Algorithmus wendet Vorgänge an, die dem Aufheizen und Abkühlen des Materials ähneln. Der Algorithmus beginnt seine Arbeit mit einer Anfangssituation, die zufällig sein kann oder aus früheren Iterationen stammt. Dann wendet er Operationen an, um den Zustand der Situation zu ändern, die zufällig oder kontrolliert sein können, um einen neuen Zustand zu erhalten, auch wenn dieser schlechter ist als der aktuelle. Die Wahrscheinlichkeit, eine schlechtere Entscheidung zu treffen, wird durch eine „Abkühlungsfunktion“ bestimmt, die die Wahrscheinlichkeit, eine schlechtere Entscheidung zu treffen, im Laufe der Zeit verringert und es dem Algorithmus ermöglicht, vorübergehend aus lokalen Optima „herauszuspringen“ und anderswo im Suchraum nach besseren Lösungen zu suchen.
Autor: Andrey Dik