Discusión sobre el artículo "Algoritmos de optimización de la población: Algoritmo de recocido simulado (Simulated Annealing, SA). Parte I"

 

Artículo publicado Algoritmos de optimización de la población: Algoritmo de recocido simulado (Simulated Annealing, SA). Parte I:

El algoritmo de recocido simulado es una metaheurística inspirada en el proceso de recocido de los metales. En nuestro artículo, realizaremos un análisis exhaustivo del algoritmo y mostraremos cómo muchas percepciones comunes y mitos que rodean a este método de optimización (el más popular y conocido) pueden ser incorrectos e incompletos. Anuncio de la segunda parte del artículo: "¡Conozca el algoritmo de recocido Isotrópico Simulado (Simulated Isotropic Annealing, SIA) del propio autor!"

El algoritmo de optimización de recocido simulado (Simulated Annealing) fue desarrollado por Scott Kirkpatrick, George Gelatt y Mario Vecchi en 1983. En el estudio de las propiedades de líquidos y sólidos a alta temperatura, se comprueba que el metal pasa al estado líquido y las partículas se distribuyen aleatoriamente, mientras que el estado de mínima energía se alcanza bajo la condición de una temperatura inicial suficientemente alta y un tiempo de enfriamiento suficientemente largo. Si no se cumple, el material terminará en un estado metaestable con una energía no mínima, lo cual se denomina "recocido", que es el enfriamiento brusco del material. En este caso, la estructura de los átomos no tiene simetría (estado anisótropo, o de no uniformidad de las propiedades del material dentro de la red cristalina).

No obstante, durante el proceso de recocido lento, el material también pasa a un estado sólido, pero con átomos organizados y con simetría, por lo que se propuso utilizar este proceso para desarrollar un algoritmo de optimización que pudiera encontrar un óptimo global en problemas complejos. El algoritmo también se ha propuesto como método para resolver problemas de optimización combinatoria.

De esta manera, la idea básica del algoritmo se basa en un análogo matemático del proceso de recocido de metales. Durante el proceso de recocido, para distribuir uniformemente su energía interna, el metal se calienta a una temperatura elevada y luego se enfría lentamente, lo cual permite que las moléculas metálicas se muevan y se ordenen en estados más estables, al tiempo que se alivian las tensiones internas del metal y se eliminan los defectos intergranulares. El término "recocido" también está relacionado con la energía libre termodinámica, que es un atributo del material y depende de su estado.

El algoritmo de optimización de recocido simulado usa un proceso similar, y aplica operaciones similares al calentamiento y el enfriamiento de un material. El algoritmo comienza con una solución inicial, que puede ser aleatoria o derivada de iteraciones anteriores. Luego aplica operaciones de cambio de estado de la decisión, que pueden ser aleatorias o controladas, para obtener un nuevo estado, aunque sea peor que el actual. La probabilidad de tomar la peor decisión viene determinada por una función de "enfriamiento" que disminuye la probabilidad de tomar la peor decisión con el tiempo, lo cual permite al algoritmo "saltar" temporalmente de los óptimos locales y buscar mejores soluciones en otros lugares del espacio de búsqueda.

Autor: Andrey Dik

 
Un buen libro de referencia sobre algoritmos de optimización, ¡Gracias!
 
fxsaber #:
Un buen libro de referencia sobre algoritmos de optimización, ¡Gracias!

Muchas gracias.

 
Bro fenomenal contenido, me encanta como expresas el algoritmo de una manera tan compacta y a la vez fácil de leer.

Pregunta rápida que quiero preguntarle en relación con la función objetivo de prueba. Como podemos crear una función objetivo que nos devuelva la ganancia o pérdida histórica de nuestro asesor experto bajo su configuración actual, de esa manera optimizamos los parámetros expertos para obtener ganancias. Espero haber expresado claramente la pregunta.
 
Gamuchirai Zororo Ndawana #:
Bro fenomenal contenido, me encanta como expresas el algoritmo de una manera tan compacta y a la vez fácil de leer.

Pregunta rápida que quiero preguntarle en relación con la función objetivo de prueba. Como podemos crear una función objetivo que nos devuelva la ganancia o pérdida histórica de nuestro asesor experto bajo su configuración actual, de esa manera optimizamos los parámetros expertos para obtener ganancias. Espero haber expresado claramente la pregunta.

Si no te importa a cavar en un poco crípticos códigos fuente de fxsaber a continuación, busque en este implemenation publicado en el blog de fxsaber (puede requerir una traducción de la lengua).

Optimization - самостоятельная оптимизация торгового советника.
Optimization - самостоятельная оптимизация торгового советника.
  • 2024.03.26
  • www.mql5.com
После появления своего тикового тестера логичным продолжением было применить его на множестве алгоритмов оптимизации . Другими словами, научиться оптимизировать торговые советники самостоятельно - без
 
Gamuchirai Zororo Ndawana #:
Un contenido fenomenal, me encanta como expones el algoritmo de una forma tan compacta y fácil de leer a la vez.

Me gustaría hacerle una pregunta relacionada con la función objetivo de prueba. ¿Cómo podemos crear una función objetivo que devolverá el beneficio histórico o la pérdida de nuestra EA en su configuración actual, por lo que optimizar los parámetros de EA para el beneficio. Espero haber expresado la pregunta con claridad.

Gracias por tus amables palabras, me alegro de que te guste el artículo. Espero que te haya ayudado el comentario de @Stanislav Korotky.

TesterStatistics () puede ser útil para compilar funciones de fitness personalizadas para su uso en OnTester ().

 

¿hay algún ejemplo de cómo implementar estos algoritmos en un EA?

Gracias

 
SergioTForex #:

¿hay algún ejemplo de cómo implementar estos algoritmos en un EA?

Gracias

https://www.mql5.com/es/articles/14183
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
  • www.mql5.com
В статье рассматриваются практические аспекты использования алгоритмов оптимизации для поиска наилучших параметров советников "на лету", виртуализация торговых операций и логики советника. Данная статья может быть использована как своеобразная инструкция для внедрения алгоритмов оптимизации в торгового советника.
 

Como se ha señalado correctamente, la principal ventaja del recocido es la sencillez de aplicación. Por lo tanto, la modificación de la población de este algoritmo está pidiendo a gritos la paralelización.

Recordaba la afirmación del autor sobre la facilidad de escribir algoritmos paralelos en MQL5, pero aún no lo he visto confirmado en sus artículos. Corregidme si me equivoco.

PS. Me refiero a paralelización normal como la implementada en el optimizador estándar, no a trucos con lanzamiento de varias instancias del programa. Y, por supuesto, implementación mediante MQL5 sin usar dlls externas.

 
Aleksey Nikolayev dlls externas.

Si necesitas paralelización a nivel de código, OpenCL es ampliamente utilizado - mira los artículos de Gizlyk sobre redes neuronales y su libro de texto.

Si necesitas optimización y paralelización a nivel de todo el programa, como ocurre en el optimizador estándar, puedes mirar el ejemplo de Booster, que usa paralelización de instancias EA en agentes (se usa MQL5 puro sin usar dlls externas).

La creación de trites para funciones separadas como en C# y otras formas de paralelización de código no están soportadas en MQL5.

Нейросети в алготрейдинге — практическое пособие по использованию машинного обучения в алгоритмическом трейдинге
Нейросети в алготрейдинге — практическое пособие по использованию машинного обучения в алгоритмическом трейдинге
  • www.mql5.com
В эпоху цифровых технологий и искусственного интеллекта алгоритмическая торговля преобразует финансовые рынки, предлагая новые стратегии для...
 
Andrey Dik #:
La creación de trites para funciones separadas como en C# y otras formas de paralelización de código no están soportadas en MQL5.
Exacto.
Andrey Dik #:
aplicación de OpenCL

Tecnología extremadamente inconveniente tanto para la codificación como para su posterior uso en la práctica. Lo confirma, por ejemplo, el hecho de que el optimizador estándar no la utiliza.

Andrey Dik #:
mira el ejemplo de Booster

Este enfoque apenas puede aplicarse cuando es necesario realizar múltiples optimizaciones (un número indefinido de veces y posiblemente con un conjunto indefinido de parámetros en cada ocasión). Por ejemplo, puede ser ensemble MO modelos.