Discusión sobre el artículo "Algoritmos de optimización de la población: Algoritmo de recocido simulado (Simulated Annealing, SA). Parte I"
Bro fenomenal contenido, me encanta como expresas el algoritmo de una manera tan compacta y a la vez fácil de leer.
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).
- 2024.03.26
- www.mql5.com
Un contenido fenomenal, me encanta como expones el algoritmo de una forma tan compacta y fácil de leer a la vez.
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
- 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.
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
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.
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.
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.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
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