Diskussion zum Artikel "Optimierungsmethoden der ALGLIB-Bibliothek (Teil II)" - Seite 3

 
Millionenstadt

 

Es scheint nichts Kompliziertes für lbfgs zu enthalten.

Ich habe adam und rmsprop noch nicht ausprobiert, die als fortgeschrittener gelten. Aber da dieses Programm dies tut, können sie es definitiv tun.

 
Maxim Dmitrievsky #:
Millionenstadt

Maxim Dmitrievsky #:
Es scheint nichts Kompliziertes für lbfgs dabei zu sein.

Du hast weder Prüfstandssourcen noch lbfgs zur Verfügung gestellt, also gibt es nichts zu besprechen. Niemand wird hier python und seine Module ausnehmen. Alle MQL5-Quellcodes werden in diesem Artikel (und jetzt in den Kommentaren zum Artikel) bereitgestellt, um die Ergebnisse zu reproduzieren.

 
Andrey Dik #:

Sie haben weder die Quellen für den Prüfstand noch lbfgs zur Verfügung gestellt, es gibt also nichts zu besprechen. Niemand wird hier das Innenleben von python und seinen Modulen aufdecken. Alle MQL5-Quellcodes werden in diesem Artikel (und jetzt in den Kommentaren zu diesem Artikel) zur Verfügung gestellt, um die Ergebnisse zu reproduzieren.

https://colab.research.google.com/drive/1bF0rFG94phR-au51wpAhi_0WLUUfgNIy?usp=sharing

Drücken Sie mehrmals die "Play"-Taste

Ich bin nicht derjenige, der die Artikel schreibt, also werde ich nichts absichtlich knacken. Es werden zuverlässig anerkannte Bibliotheken verwendet, insbesondere SciPy.

Optimization and root finding (scipy.optimize)#
  • docs.scipy.org
Optimization and root finding ()# SciPy provides functions for minimizing (or maximizing) objective functions, possibly subject to constraints. It includes solvers for nonlinear problems (with support for both local and global optimization algorithms), linear programming, constrained and nonlinear least-squares, root finding, and curve fitting...
 

Adam in Megacity hat sich in der obersten Etage niedergelassen.

Ich habe den Code in den Notizblock eingefügt. Ich werde später noch einige Gradientenlöser hinzufügen, falls gewünscht.



 
Andrey Dik #:

hier ist eine frische (der Artikel hat es im Archiv) Testfunktion Klasse Kernel:

Werfen Sie einfach ein mehrdimensionales (ich meine - in einer Dimension des Arrays gibt es viele Zellen, mehrdimensionaler Raum) Array beliebiger Dimensionalität in args, die Methode wird die Argumente aus dem Array auf zweidimensionale Funktionen verteilen. Es ist klar, dass, wenn Sie ein Array mit ungerader Dimensionalität werfen, wird eine Zelle verworfen werden und wird nicht in den Berechnungen teilnehmen. D.h. dies ist eine mehrdimensionale Testfunktion mit einer geraden Anzahl von Dimensionen.

Später werde ich sie auf der Basis von eindimensionalen Funktionen freigeben, das wird praktischer sein und es wird möglich sein, Graphen klarer zu erstellen.

Der kommentierte Code ist die Möglichkeit, die Funktion um einen bestimmten Winkel zu drehen. Dies ist für viele AOs ein Kopfschüttler. Sie wird noch nirgends verwendet.

Keine Lust, lange darüber nachzudenken. Man braucht eine Funktion wie in dem Artikel, um die Ergebnisse zu reproduzieren.

Ich sehe da überhaupt keine Probleme. Nur die Komplexität des Problems wird zunehmen.
 

Die Grenzen sind in Megacity falsch gesetzt. Eine korrekte Megacity sollte so aussehen, das Bild ist in MQL5 erstellt (auf dem die Algorithmen in der Tabelle getestet sind):

Außerdem sind die Ergebnisse bei einer zweidimensionalen Funktion kein Indikator. Außerdem müssen Sie die Durchschnittswerte zählen (auch wenn Sie die Populationssimulation verwenden, müssen Sie den Durchschnittswert zwischen allen Populationen betrachten - separate Tests). Die Anzahl der FF-Durchläufe ist auch bei Ihren Tests nicht begrenzt.

Schauen Sie sich den obigenCode an, dort gibt es ein korrektes Schema zum Testen von Gradientenmethoden.

 
Andrey Dik #:

Die Grenzen sind in Megacity falsch gesetzt. Eine korrekte Megacity sollte so aussehen. Das Bild wurde in MQL5 erstellt (mit dem die Algorithmen in der Tabelle getestet wurden):

Außerdem sind die Ergebnisse bei einer zweidimensionalen Funktion kein Indikator. Außerdem müssen Sie die Durchschnittswerte zählen (auch wenn Sie die Populationssimulation verwenden, müssen Sie den Durchschnittswert zwischen allen Populationen betrachten - separate Tests). Auch die Anzahl der FF-Läufe ist bei Ihren Tests nicht begrenzt.

Schauen Sie sich den obigenCode an, dort gibt es ein korrektes Schema zum Testen von Gradientenmethoden.

In den Artikeln wird der Graph von genau dem ph-i gezeichnet, das ich optimiert habe. Ich sehe keinen Sinn darin, von einer Sache zur anderen zu wechseln. Das hier sieht noch einfacher aus. Wie kommt es, dass sie von einer 1000-dimensionalen f-iie sprechen, aber immer eine dreidimensionale optimieren?
 
Maxim Dmitrievsky #:
In den Artikeln wird der Graph von genau der Funktion gezeichnet, die ich optimiert habe. Ich sehe keinen Sinn darin, von einer Sache zur anderen zu wechseln. Das hier sieht noch einfacher aus. Wie kommt es, dass von einer 1000-dimensionalen f-iie die Rede ist, aber immer eine dreidimensionale optimiert wird?

Diese:

entspricht dem in keinster Weise:


Zum "1000-dimensionalen f-i" siehe den vorherigen Beitrag in dieser Diskussion.

Da eine 2D-Funktion immer wieder dupliziert wird, kann man das 3D-Ergebnis einer 2D-Funktion aufzeichnen (der 1000-dimensionale Raum kann nicht visualisiert werden) und Punkte aus dem mehrdimensionalen Raum in den entsprechenden 3D-Raum einzeichnen.

Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - Скиньте код сложной ф-ии на 1000 параметров. Используйте скрипт из этой статьи, чтобы имитировать популяцию. Запустите 50 раз градиентные методы с
Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - Скиньте код сложной ф-ии на 1000 параметров. Используйте скрипт из этой статьи, чтобы имитировать популяцию. Запустите 50 раз градиентные методы с
  • 2024.11.01
  • Maxim Dmitrievsky
  • www.mql5.com
Повышение размерности можно достичь путем дублирования одномерных бенчмарков или двумерных полученная сумма делится на количество тестовых функций. таком образом всегда известны мин и макс тестовой функции независимо от размерности
 
Andrey Dik #:

Diese hier:

Passt in keinster Weise zu diesem:


Zum "1000-dimensionalen f-i" siehe den vorherigen Beitrag in dieser Diskussion.

Da eine 2D-Funktion immer wieder dupliziert wird, kann man das 3D-Ergebnis einer 2D-Funktion aufzeichnen (der 1000-dimensionale Raum kann nicht visualisiert werden) und Punkte aus dem mehrdimensionalen Raum in den entsprechenden 3D-Raum einzeichnen.

Ich habe mir die Testfunktionen hier angesehen. Bei den Bildern stimmen sie überein.

Den Trick mit den mehrdimensionalen Funktionen habe ich noch nicht verstanden, den muss ich noch herausfinden.

Популяционные алгоритмы оптимизации
Популяционные алгоритмы оптимизации
  • www.mql5.com
Вводная статья об алгоритмах оптимизации (АО). Классификация. В статье предпринята попытка создать тестовый стенд (набор функций), который послужит в дальнейшем для сравнения АО между собой, и, даже, возможно, выявления самого универсального алгоритма из всех широко известных.