Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - страница 3

 
Мегасити

 

Вроде бы ничего сложного для lbfgs в ней нет.

Еще не пробовал Adam и rmsprop, которые считаются более продвинутыми. Но раз этот делает, они точно смогут.

 
Maxim Dmitrievsky #:
Мегасити

Maxim Dmitrievsky #:
Вроде бы ничего сложного для lbfgs в ней нет.

Вы не предоставили ни исходники тестовго стенда, ни lbfgs, разговаривать не о чем. Потрошить питона и его модули здесь никто не будет. Все исходные коды на MQL5 предоставлены в этой статье (а теперь и в комментариях к статье) для воспроизведения результатов.

 
Andrey Dik #:

Вы не предоставили ни исходники тестовго стенда, ни lbfgs, разговаривать не о чем. Расковыривать внутренности питона и его модули здесь никто не будет. Все исходные коды на MQL5 предоставлены в этой статье (а теперь и в комментариях к статье) для воспроизведения результатов.

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

тыкнуть кнопки "play" несколько раз

Статьи пишу не я, поэтому расковыривать ничего не буду специально. Используются надежные общепризнанные библиотеки, в частности 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...
 

Адам в Мегасити поселился на верхнем этаже.

Добавлен код в блокнот. Потом добавлю еще несколько градиентных солверов, по желанию.



 
Andrey Dik #:

вот свежее (в статье есть в архиве) ядро класса тестовых функций:

Просто кидайте в args многомерный (имею ввиду - в одном измерении массива много ячеек, многомерное пространство) массив любой размерности, метод раскидает аргументы из массива по двумерным функциям. Понятно, что если кинуть массив с нечетной размерностью, то одна ячейка будет отброшена и в расчетах участвовать не будет. Т.е., это многомерная тестовая функция с четным количеством измерений.

Позже выпущу на основе одномерных, будет практичнее и строить графики можно будет нагляднее.

Закоментированный код - возможность поворачивать функцию на какой-то угол. Это напроч сносит "голову" многим AO. Пока нигде ещё не применяется .

Нет желания долго думать над этим. Нужна какая-нибудь функция как в статье, чтобы воспроизвести результаты.

Вообще не вижу проблем. Просто расчетная сложность задачи возрастет.
 

Границы взяты неверно у Мегасити. Правильная Мегасити должна выглядеть так, изображение построено на MQL5 (на которой протестированы алгоритмы в таблице):

Кроме того, результаты на двумерной функции - не показатель. Кроме того, нужно считать средние показатели (даже если используется имитация популяции нужно смотреть среднее значение между всеми популяциями - отдельными тестами). Количество ФФ запусков тоже не ограничено у вас в тестах.

Посмотрите код, приведённый выше, там корректная схема тестирования градиентных методов.

 
Andrey Dik #:

Границы взяты неверно у Мегасити. Правильная Мегасити должна выглядеть так, изображение построено на MQL5 (на которой протестированы алгоритмы в таблице):

Кроме того, результаты на двумерной функции - не показатель. Кроме того, нужно считать средние показатели (даже если используется имитация популяции нужно смотреть среднее значение между всеми популяциями - отдельными тестами). Количество ФФ запусков тоже не ограничено у вас в тестах.

Посмотрите код, приведённый выше, там корректная схема тестирования градиентных методов.

В статьях нарисован график именно той ф-ии, которую я оптимизировал. Не вижу смысла менять шило на мыло. Эта выглядит даже проще. Как так вышло, что говорится о 1000-мерной ф-ии, но оптимизируется всегда трехмерная?
 
Maxim Dmitrievsky #:
В статьях нарисован график именно той ф-ии, которую я оптимизировал. Не вижу смысла менять шило на мыло. Эта выглядит даже проще. Как так вышло, что говорится о 1000-мерной ф-ии, но оптимизируется всегда трехмерная?

Вот это:

никак не соответствует этому:


Насчет "1000-мерной ф-ии" посмотрите предыдущие сообщение в этом обсуждении.

Поскольку двумерная функция многократно продублирована, то можно строить трёхмерный результат двумерной функции (1000-мерное пространство визуализировать нельзя) и строить точки с многомерного пространства в соответствующем трёхмерном.

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

Вот это:

никак не соответствует этому:


Насчет "1000-мерной ф-ии" посмотрите предыдущие сообщение в этом обсуждении.

Поскольку двумерная функция многократно продублирована, то можно строить трёхмерный результат двумерной функции (1000-мерное пространство визуализировать нельзя) и строить точки с многомерного пространства в соответствующем трёхмерном.

Смотрел здесь тестовые ф-ии. По картинкам совпадают.

С многомерными пока не понял прикол, надо разбираться.

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