Diskussion zum Artikel "Algorithmen zur Optimierung mit Populationen: der Algorithmus Simulated Annealing (SA). Teil I"

 

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

 
Ein gutes Nachschlagewerk über Optimierungsalgorithmen, danke!
 
fxsaber #:
Ein gutes Nachschlagewerk über Optimierungsalgorithmen, Vielen Dank!

Ich danke Ihnen.

 
Der Inhalt ist phänomenal. Ich finde es toll, wie Sie den Algorithmus auf so kompakte und gleichzeitig leicht lesbare Weise darstellen.

Eine kurze Frage, die ich Ihnen stellen möchte, bezieht sich auf die Test-Zielfunktion. Wie können wir eine Zielfunktion erstellen, die den historischen Gewinn oder Verlust unseres Expertenberaters unter seinen aktuellen Einstellungen zurückgibt, so dass wir die Expertenparameter für den Gewinn optimieren können. Ich hoffe, ich habe meine Frage klar ausgedrückt.
 
Gamuchirai Zororo Ndawana #:
Der Inhalt ist phänomenal. Ich finde es toll, wie Sie den Algorithmus auf so kompakte und gleichzeitig leicht lesbare Weise darstellen.

Eine kurze Frage, die ich Ihnen stellen möchte, bezieht sich auf die Test-Zielfunktion. Wie können wir eine Zielfunktion erstellen, die den historischen Gewinn oder Verlust unseres Expertenberaters unter seinen aktuellen Einstellungen zurückgibt, so dass wir die Expertenparameter für den Gewinn optimieren können. Ich hoffe, ich habe meine Frage klar ausgedrückt.

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).

Optimization - самостоятельная оптимизация торгового советника.
Optimization - самостоятельная оптимизация торгового советника.
  • 2024.03.26
  • www.mql5.com
После появления своего тикового тестера логичным продолжением было применить его на множестве алгоритмов оптимизации . Другими словами, научиться оптимизировать торговые советники самостоятельно - без
 
Gamuchirai Zororo Ndawana #:
Phänomenaler Inhalt, ich liebe es, wie Sie den Algorithmus so kompakt und gleichzeitig leicht lesbar darstellen.

Ich möchte Ihnen eine Frage stellen, die sich auf die Test-Zielfunktion bezieht. Wie können wir eine Zielfunktion erstellen, die den historischen Gewinn oder Verlust unseres EA bei seinen aktuellen Einstellungen zurückgibt, so dass wir die EA-Parameter für den Gewinn optimieren können. Ich hoffe, ich habe die Frage klar ausgedrückt.

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

 
SergioTForex #:

Gibt es ein Beispiel dafür, wie man diese Algorithmen in einem EA implementiert?

Danke

https://www.mql5.com/de/articles/14183
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
  • 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.

 
Aleksey Nikolayev 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
В эпоху цифровых технологий и искусственного интеллекта алгоритмическая торговля преобразует финансовые рынки, предлагая новые стратегии для...
 
Andrey Dik #:
Das Erstellen von Trites für separate Funktionen wie in C# und andere Formen der Codeparallelisierung werden in MQL5 nicht unterstützt.
Exakt.
Andrey Dik #:
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.

Andrey Dik #:
Blick auf das Beispiel von Booster

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.