Discusión sobre el artículo "Algoritmos de optimización de la población: Algoritmo de siembra y crecimiento de árboles (Saplings Sowing and Growing up — SSG)"
¿Cuál es el mejor algoritmo para encontrar extremos locales?
A grandes rasgos, necesitamos producir una lista de parámetros que caigan mejor en los extremos locales (vértices).
Utilizando el ejemplo de un erizo, mostrar las coordenadas de las puntas de sus agujas.
Dígame, ¿existen algoritmos de optimización que tengan las siguientes características?
selección de sólo una parte de los parámetros cuando su número es grande;
los parámetros seleccionados se optimizan sólo mediante un algoritmo genético, o un algoritmo que puede ser sustituido por la genética;
el algoritmo de selección de los parámetros activos para la iteración actual no importa, se permite cambiar los rangos y el paso de la optimización
¿Cuál es el mejor algoritmo para encontrar extremos locales?
A grandes rasgos, necesitamos producir una lista de parámetros que caigan mejor en los extremos locales (vértices).
Utilizando el ejemplo de un erizo, mostrar las coordenadas de las puntas de sus agujas.
Para cualquier tarea de búsqueda global, cualquiera de los algoritmos de la parte superior de la tabla funcionará mejor. Puedes elegir el más adecuado individualmente si sabes, por ejemplo, que la función es suave o discreta, o elegir el más adecuado según el número de parámetros optimizados en el problema.
Normalmente no plantee el problema de forma que sea necesario encontrar extremos locales, porque en la mayoría de los problemas prácticos el número de extremos locales es desconocido (si no fuera así, sería más fácil utilizar métodos analíticos), y el número de extremos globales es conocido: uno (si hay varios globales con el mismo valor, equivale a que es uno). Por eso normalmente el problema se plantea de forma que la función sea lo más monótona posible, un ejemplo es la minimización de errores.
No conozco algoritmos para resolver problemas de búsqueda de locales en el caso general, y rara vez es conveniente escribir algoritmos específicos para un problema concreto. En tales casos, me plantearía cómo se podría representar el FF para resolver el problema. Podría haber diferentes enfoques, como utilizar AO como complemento de la agrupación. Otro enfoque del problema es dividir el FF en "capas" hipotéticas, desde el mínimo global hasta el máximo global (que hay que encontrar de antemano), y luego examinar cada capa secuencialmente, es decir, hay que hacer un gestor de tareas por lotes para AO.
En resumen, te voy a decepcionar - no hay algoritmos para resolver problemas de búsqueda de extremos locales en forma general. Es más fácil modificar el FF que hacer un algoritmo especial.
3. el algoritmo de selección de los parámetros activos para la iteración actual es irrelevante, se permite cambiar los rangos y el paso de la optimización
1. Bueno, AO no se preocupa de cuántos y qué parámetros someter a él para la optimización, por lo que puede presentar todos los parámetros a AO y no todos.
2. Puedes aplicar cualquier algoritmo de forma individual, conjunta, secuencial y combinada. He intentado que los algoritmos de los artículos sean uniformes.
3. Cualquiera de los algoritmos presentados puede ajustarse directamente durante el proceso de optimización, en principio. Basta con corregir la inicialización para que no se reinicie la población acumulada. Es posible, por ejemplo, reducir el paso de los parámetros optimizados en proporción a las épocas pasadas (o aumentarlo).
En resumen, te voy a decepcionar - no hay algoritmos para resolver problemas de búsqueda de extremos locales en forma general. Es más fácil modificar el FF que hacer un algoritmo especial.
Gracias. Yo encuentro indirectamente los extremos locales mediante la interrupción forzada de la optimización cuando interviene un gran número de núcleos. Aproximadamente, hay 20 agentes en Tester, interrumpo la optimización después de 2000 pasadas.
Gracias. Los locales los encuentro indirectamente mediante la interrupción forzosa de la optimización cuando interviene un gran número de núcleos. A grandes rasgos, hay 20 agentes en el Probador, interrumpo la optimización después de 2000 pasadas.
Bueno, ¡es absolutamente anticientífico! ))))) Inteligente, sin embargo.
Estaba pensando que hay algoritmos de mayor "aglomeración", cuando la población tiende a dividirse en grupos por locales, como IWO, COA, ABC, BFO, las poblaciones de estos algoritmos pueden analizarse en busca de aglomeraciones de agentes (una unidad lógica de búsqueda en AO se llama agente) midiendo la distancia euclidiana entre agentes, es decir, buscar grupos de agentes con una distancia mínima entre ellos.
También se puede probar en algoritmos de tipo rollback (cuando un agente realiza repetidamente intentos de búsqueda en diferentes direcciones desde la misma posición) como COA y HS o MA a establecer un contador de intentos, hacer rebanadas de estados de la población a través de varias iteraciones y los agentes con mayor número de intentos serán extremos locales. MA y BFO tienen dicho contador de forma nativa.
Es decir, he dicho que no hay formas exactas de buscar locales (la búsqueda de un global se puede considerar "exacta" en este sentido), pero se puede buscar de forma aproximada como he descrito anteriormente. Para una solución exacta es necesario conocer la información diferencial sobre FF.
ZЫ Una pregunta interesante para todos los que están interesados en este tema: ¿cuál es la diferencia entre los extremos locales y globales (sin tener en cuenta su diferencia en los valores de FF)?
ZZY Habiendo respondido a la primera pregunta muchas preguntas desaparecen por sí solas.
Por desgracia, soy incompetente en todo, por lo que estoy interesado en una solución aproximada, pero listo.
ZЫ. Una pregunta interesante para todos los interesados en este tema: ¿cuál es la diferencia entre extremos locales y extremos globales (sin tener en cuenta su diferencia en valores FF)?
Si tomamos el resultado de la optimización como un conjunto de pases, entonces los indicios de los locales serán visibles después de aplicar la agrupación al espacio de pases calculados de entrada. Además, en cada cluster conseguimos una optimización "estrecha".
¿Cuál es el mejor algoritmo para encontrar extremos locales?
A grandes rasgos, necesitamos producir una lista de parámetros que caigan mejor en los extremos locales (vértices).
Utilizando el ejemplo de un erizo, mostrar las coordenadas de las puntas de sus agujas.
Por desgracia, incompetente en absoluto, así que estoy interesado en una solución aproximada pero ya hecha.
Si tomamos el resultado de la optimización como un conjunto de pases, entonces las pistas de los locales serán visibles después de aplicar la agrupación al espacio de pases contados de entrada. Además en cada cluster conseguimos una optimización "estrecha".
- 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 siembra y crecimiento de árboles (Saplings Sowing and Growing up — SSG):
El algoritmo de siembra y crecimiento de árboles (SSG) está inspirado en uno de los organismos más resistentes del planeta, que es un ejemplo notable de supervivencia en una amplia variedad de condiciones.
El algoritmo SSG es uno de los pocos que no tiene una descripción clara por parte de los autores (solo se expresan disposiciones e ideas generales). Los operadores del algoritmo presentados por los autores tampoco suponen instrucciones prefabricadas para la implementación algorítmica del programa; no hay instrucciones claras sobre los árboles padre e hijo y su interacción. No existen requisitos para el orden en que se ejecutan los operadores, y cualquier usuario puede cambiar su orden para obtener una mejor semilla.
En un sentido amplio, el SSG no es un algoritmo de optimización, sino un conjunto general de reglas diseñado para complementar otros algoritmos con el objetivo de mejorar la calidad de la optimización, es decir, el SSG es un complemento para cualquier algoritmo de población evolutiva que deja espacio para la imaginación y la oportunidad de experimentar con una implementación específica del algoritmo de optimización. He aplicado algunos de mis propios pensamientos y experiencias durante la escritura de los algoritmos anteriores y los he usado para trabajar con el SSG: los resultados de los experimentos se presentan a continuación para que el lector los analice y reflexione por su cuenta.
Para comenzar a comprender el algoritmo, deberemos pensar en un árbol como un agente de optimización. Un árbol es una solución a un problema de optimización, donde cada rama es un parámetro optimizado del problema. De forma bastante abstracta y, diría, artística, podemos ilustrar el árbol hijo y el árbol padre (el algoritmo opera con estos dos conceptos) en la figura 1. El tronco del árbol es un conjunto de parámetros a optimizar. Cada rama es un parámetro optimizado aparte, donde la longitud de la rama está limitada por el rango permitido de valores del parámetro correspondiente. La dirección de las ramas no importa: solo se representa en la figura para mostrar que son diferentes.
Autor: Andrey Dik