Discusión sobre el artículo "Métodos de optimización de la biblioteca ALGLIB (Parte II)" - página 4
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
He estado mirando las fi guras de prueba aquí. Las fotos coinciden.
Todavía no he entendido el truco de las multidimensionales, tengo que averiguarlo.
Este es el primer artículo de la serie. El pensamiento no se detiene, el conjunto de funciones de prueba se ha cambiado en la dirección de la complicación y la lucha contra los falsos éxitos de los métodos y los falsos positivos que se inicializan por cero. Por eso deberías mirar artículos recientes, por ejemplo este.
Siempre hay fuentes actualizadas en github.
Probando métodos de gradiente:
https://www.mql5.com/ru/forum/475597/page2#comment_55006029
Este es el primer artículo de la serie. El pensamiento no se detiene, el conjunto de funciones de prueba se ha modificado para hacerlo más complicado y para contrarrestar los falsos éxitos de los métodos que se inicializan con cero, y en general para contrarrestar los falsos positivos. Por eso deberías echar un vistazo a artículos recientes, por ejemplo éste.
Las fuentes están siempre actualizadas.
Ya veo. Si habrá tiempo y ganas - haré para multidimensional.
En tres dimensiones ya mostró imágenes que gradiente incluso en ellos se atascan en las localidades. Si se divide el espacio de búsqueda en lotes, es fijo. Esta es la forma de trabajar con solucionadores de gradiente y no de otra manera.
Resultado para 1000 mediciones. Tiempo perdido del servidor - 9 minutos.
Parece que no hay errores, hecho de acuerdo con los moldes del artículo.
Este es el primer artículo de la serie. El pensamiento no se detiene, el conjunto de pruebas de las funciones se ha modificado para hacerlo más complejo y contrarrestar los falsos éxitos de los métodos y los falsos positivos que se inicializan con cero. Por eso deberías echar un vistazo a los artículos recientes, por ejemplo este.
Siempre hay fuentes actualizadas en github.
Probando métodos de gradiente:
https://www.mql5.com/ru/forum/475597/page2#comment_55006029
Hay un f-ya en el includnik, ¿se usa?
¿Es la misma f-ya, cómo determinar los límites correctos? He entendido que se toma una parte de ella.
Si no he reducido los límites, entonces el cálculo (encontrar el máximo) es más complicado?
Para el caso encontrado de 25 dimensiones. No sé dónde están los errores.
Si no redujera los límites, ¿el cálculo (encontrar el máximo) sería más difícil?
No, no es más complicado. En tu función, ¿cuántos rascacielos están por encima del 50% del mínimo y el máximo de la función? ¿Cuántos en la mía? ¿En qué superficie es más fácil superar el 50% de altura si dispersas los puntos al azar? - En la tuya. Así que, insistiendo de nuevo, los límites están mal puestos.
Aquí se dice al respecto: https://www.mql5.com/es/articles/13923#tag3
Obtuve este resultado de su código:
Algún resultado no muy divertido, pero persistentemente publicas los mejores resultados de diferentes ensayos. Ejecuta 20 ensayos (20 pulsaciones en el botón de reproducción), o escribe un bucle que simule múltiples ensayos, y luego calcula el resultado medio, como haces en los artículos.
Lo que lleva a preguntarse, ¿por qué 100.000, por qué no 1.000.000.000.000?
No hace falta ser tímido, pon mil millones, pero por alguna razón no muestras el número de llamadas a la función objetivo, ¿cuántas llamadas hubo? En las pruebas de ranking, sólo se permiten 10.000 llamadas a la función objetivo, y en el caso de los métodos de gradiente (donde el algoritmo puede intentar hacer muchas más llamadas al FF), hay un corte en el código, si se supera el límite, se da el valor mínimo del objetivo (los métodos buscan un mínimo, por lo que se invierte el valor):
Todo esto se ha descrito anteriormente en los artículos.
La clase tiene métodos GetMinRangeX (), GetMaxRangeX (), GetMinRangeY (), GetMaxRangeY (), con la ayuda de los cuales se pueden consultar los límites (bueno, y simplemente en el código de las funciones de prueba correspondientes se pueden ver los límites).
En la práctica, siempre hay un límite en el número máximo permitido de accesos al objetivo, en las pruebas hemos adoptado un límite de 10 000 accesos.
Si no hay límite ni en términos de recursos computacionales ni de tiempo, es mejor no utilizar algoritmos de optimización en absoluto y hacer una simple enumeración completa, pero esto nunca ocurre en la vida real. Las pruebas y comparaciones de métodos se realizan con un límite de 10 000 aciertos en el objetivo. El objetivo de comparar algoritmos es ver qué algoritmos obtienen el resultado mejor y con menos accesos al objetivo. Por consiguiente, cuantas más veces tenga que acceder al objetivo un algoritmo para obtener resultados comparables, más débil se considerará el algoritmo en el tipo de tareas correspondiente.
Por desgracia, se le escapan puntos muy sutiles, que se describen detalladamente en los artículos sobre métodos de optimización.
Hay situaciones en las que la fuerza bruta completa no encontrará el óptimo porque los nodos de la rejilla de fuerza bruta no caen sobre él.