Discusión sobre el artículo "Algoritmos Genéticos: ¡Es fácil!" - página 16
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Andrew, una pregunta más.
¿Podemos decir que esos valores de las variables son adecuados para la mayoría de los problemas de optimización?
Sí.
Los valores se toman con cierta "reserva" para aumentar la buscabilidad (cobertura del campo de búsqueda). Para obtener valores más precisos (pero se reduce la probabilidad de encontrar un extremo global), se pueden reducir los parámetros de mutación y el coeficiente de desplazamiento del límite del intervalo.
Andrew, una pregunta más.
¿Podemos decir que tales valores de estas variables son adecuados para la mayoría de los problemas de optimización? Como dicen en algunas fuentes "... el 90% de los problemas se pueden resolver con un perceptrón convencional".
ZAGASTE GA :)
El algoritmo es single-threaded, puede ser fácilmente integrado en un Expert Advisor, ejecutarlo en un tester y organizar competiciones entre GAs boo-gah-gah.
Maravilloso.
Andrei, sabes, me sorprende mi descaro, pero tengo que expresar algunas "críticas" ))
La función ServiceFunction() se llama en tres sitios en el código UGA. Pero esto no sirve de nada. Por supuesto, se puede ver la dinámica en la pantalla, pero es tan rápida que no se puede ver y evaluar de todos modos. Puedes eliminar su llamada en el cuerpo de UGA(). Basta con llamarlo una vez después de llamar a UGA().
"... y el violinista es innecesario, sólo consume combustible extra" (kin dza dza (c))
Hice un experimento. Hice una suma de tres sinusoides con "frecuencias" 47, 81, 187. Obtuve lo siguiente
Luego inicié la búsqueda por enumeración directa (3 ciclos, 2 anidados), aunque con interrupción cuando el valor del coeficiente de correlación = 1,0. Sin esta condición, toda esta tontería habría llevado mucho más tiempo. Pero así se hizo en 375 segundos (algo más de 6 minutos).
El AG lo hizo en 2 segundos. ))
Pero hay una pregunta. Aquí está el resultado.
Últimos 2 dígitos: 2747 - número de llamadas FF; 506 - número de "estados" cuando el coeficiente de correlación r era igual a 1,0. Resulta que el algoritmo podría haber funcionado aún más rápido, porque r no puede ser mayor que 1,0 y después del primer alcance de r=1 la tarea se considera completada. Pero el algoritmo alcanzó el estado r=1,0 506 veces.
Estos fueron los parámetros
Y este FF.
Pregunta - ¿hay alguna manera de explicar al algoritmo que (a veces) es posible (necesario) terminar antes. ¿O no hay que hacerlo categóricamente y esperar a que se alcance la convergencia?
Hace tiempo que quería saber la respuesta a la pregunta "cuántos". Esta vez he cogido un impulso y le he puesto 50 sinusoides. El rango de valores es 1-500. Así que, si no me equivoco, la búsqueda directa da como resultado 500^50, es decir, 8,88178419700121252323333890533447266e+134 iteraciones (si mi calculadora no me ha mentido). Está claro que no es posible convertir a segundos (minutos, horas, días, años). Sólo los descendientes lejanos verían el resultado. El AG lo hizo en 1 hora. 20 minutos. Vaya. Además, resultó que el coeficiente de correlación de la suma de 50 sinusoides con el impulso es 0,5275. ¿Por qué"además"? Porque no he tenido ni una sola oportunidad de comprobar este punto antes. Y en algunos casos, sugiere algunos pensamientos.....
No me he fijado en las sinusoides, es que lo tengo todo a mano. Además, como el objetivo es conseguir la máxima similitud de las señales continuas, el resultado es esta misma similitud, es decir, el resultado es inequívoco, además de fácilmente verificable.
Andrey, muchas gracias por tu Producto. Me gustaría leer otro artículo tuyo en un futuro próximo. GA con selección de élite. ))
...
Pregunta - ¿hay alguna manera de explicar al algoritmo que (a veces) es posible terminar antes. ¿O no se debe hacer categóricamente, y hay que esperar hasta que se alcance la convergencia?
Es posible. E incluso necesario. Si sabes algo sobre la función en estudio (como en tu problema: FF<=1), deberías utilizar activamente esta información para evitar cálculos innecesarios y reducir así el tiempo de búsqueda.
En esta implementación no hay palancas para controlar el algoritmo desde el exterior, pero basta con añadir una función para controlar la bandera de parada forzada.
En la próxima generación del algoritmo, sobre la que se está preparando un artículo secuela, hay muchas más posibilidades de controlar el algoritmo desde el exterior (en general, funciona en la iniciación y bajo el control desde el exterior, y no como ahora - FF es iniciado por el propio algoritmo, por lo que no hay posibilidad de utilizarlo en búhos de auto-optimización sin modificación).
....
Andrew, muchas gracias de nuevo por tu producto. Me gustaría acreditar otro de sus artículos en un futuro próximo. GA con la selección de élite. ))
Gracias por el agradecimiento. :)
Habrá una secuela, seguro.
Y, ¡buena suerte en la búsqueda del óptimo! En la vida, en el trabajo, en l... Todo.