Обсуждение статьи "Популяционные алгоритмы оптимизации: Алгоритм имитации отжига (Simulated Annealing, SA). Часть I"
Феноменальный контент, мне нравится, как вы излагаете алгоритм в такой компактной манере, которую в то же время легко читать.
Если вы не против покопаться в немного загадочных исходных кодах от fxsaber, то обратите внимание на эту реализацию, опубликованную в блоге fxsaber (может потребоваться перевод на другой язык).

- 2024.03.26
- www.mql5.com
Феноменальный контент, мне нравится, как вы излагаете алгоритм в такой компактной манере, которая в то же время легко читается.
Спасибо за добрые слова, рад, что Вам нравится статья. Надеюсь Вам помог комментарий @Stanislav Korotky.
Для составления кастомных фитнес-функций для использования в OnTester () могут быть полезными функции TesterStatistics ().
есть ли пример того, как реализовать эти алгоритмы в советнике?
Спасибо

- www.mql5.com
Как правильно указано, главное достоинство отжига - простота реализации. Поэтому популяционная модификация этого алгоритма просто напрашивается на параллелизацию.
Вспомнилось утверждение автора о лёгкости написания параллельных алгоритмов в MQL5, но пока не увидел тому подтверждения в его статьях. Поправьте меня если ошибаюсь.
PS. Имеется в виду нормальная параллелизация вроде той, что реализована в штатном оптимизаторе, а не трюки с запуском нескольких экземпляров программы. Ну и конечно реализация средствами MQL5 без использования внешних dll.
Как правильно указано, главное достоинство отжига - простота реализации. Поэтому популяционная модификация этого алгоритма просто напрашивается на параллелизацию.
Вспомнилось утверждение автора о лёгкости написания параллельных алгоритмов в MQL5, но пока не увидел тому подтверждения в его статьях. Поправьте меня если ошибаюсь.
PS. Имеется в виду нормальная параллелизация вроде той, что реализована в штатном оптимизаторе, а не трюки с запуском нескольких экземпляров программы. Ну и конечно реализация средствами MQL5 без использования внешних dll.
Если требуется распараллеливание на уровне кода, то широко используется применение OpenCL - посмотрите статьи Гизлыка по нейронным сетям и учебник в его авторстве.
Если требуется оптимизация и распараллеливание на уровне программы целиком, как это происходит в штатном оптимизаторе, то можете посмотреть на примере Бустера, который использует распараллеливание инстансов советника на агенты (используется чистый MQL5 без использования внешних dll).
Создание тритов на отдельные функции как в C# и иные формы распараллеливания кода в MQL5 не поддерживается.

- www.mql5.com
Создание тритов на отдельные функции как в C# и иные формы распараллеливания кода в MQL5 не поддерживается.
применение OpenCL
Крайне неудобная технология как для кодинга, так и для последующего использования на практике. Это вполне подтверждается, например, тем, что штатный оптимизатор не использует её.
Вряд ли этот подход можно применить когда нужно выполнять множественную оптимизацию (неопределённое число раз и, возможно, с неопределённым набором параметров в каждом разе). Например, это могут быть ансамблевые модели МО.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Популяционные алгоритмы оптимизации: Алгоритм имитации отжига (Simulated Annealing, SA). Часть I:
Алгоритм имитации отжига (Simulated Annealing) является метаэвристикой, вдохновленной процессом отжига металлов. В нашей статье проведем тщательный анализ алгоритма и покажем, как многие распространенные представления и мифы, вокруг этого наиболее популярного и широко известного метода оптимизации, могут быть ошибочными и неполными.
Алгоритм оптимизации имитации отжига (Simulated Annealing) был разработан Скоттом Киркпатриком (Scott Kirkpatrick), Джорджем Гелатти (George Gelatt) и Марио Веччи (Mario Vecchi) в 1983 году. При исследовании свойств жидкостей и твердых тел при высокой температуре установлено, что металл переходит в жидкое состояние и частицы распределяются случайным образом, а состояние с минимальной энергией достигается при условии достаточно высокой начальной температуры и достаточно длительного времени охлаждения. Если это не выполняется, то материал окажется в метастабильном состоянии с неминимальной энергией - это называется закаливанием, которое заключается в резком охлаждении материала. В этом случае структура атомов не имеет симметрии (анизотропное состояние, или неравномерность свойств материала внутри кристаллической решетки).
Во время же медленного процесса отжига материал также переходит в твердое состояние, но с организованными атомами и с симметрией, поэтому было предложено использовать этот процесс для разработки алгоритма оптимизации, который бы мог найти глобальный оптимум в сложных задачах. Алгоритм также был предложен как метод решения задач комбинаторной оптимизации.
Таким образом, основная идея алгоритма основана на математическом аналоге процесса отжига металла. В процессе отжига, чтобы равномерно распределить его внутреннюю энергию, металл нагревается до высокой температуры, а затем медленно охлаждается, позволяя молекулам металла перемещаться и упорядочиваться в более стабильные состояния, при этом снимаются внутренние напряжения в металле и удаляются межкристалические дефекты. Термин "отжиг" также связан с термодинамической свободной энергией, которая является атрибутом материала и зависит от его состояния.
В алгоритме оптимизации имитации отжига используется аналогичный процесс. Алгоритм применяет операции, аналогичные нагреву и охлаждению материала. Алгоритм начинает свою работу с исходного решения, которое может быть случайным или полученным из предыдущих итераций. Затем применяет операции изменения состояния решения, которые могут быть случайными или управляемыми, чтобы получить новое состояние, даже если оно хуже текущего. Вероятность принятия худшего решения определяется функцией "охлаждения", которая со временем уменьшает вероятность принятия худшего решения, что позволяет алгоритму временно "выскочить" из локальных оптимумов и искать лучшие решения в других местах пространства поиска.
Автор: Andrey Dik