Campeonato de optimización de algoritmos. - página 98

 
Andrey F. Zelinsky:
¿Hay moderadores en el foro?
¿Por qué gritas como... ¿Te duele o algo así? Salga de aquí.
 
Andrey Dik:
Por supuesto, debes hacerlo. Si no hay sugerencias de funciones por vuestra parte, publicaré la versión final de los códigos, tras lo cual pasaremos al segundo paso del campeonato.
Es posible que pueda ofrecer algunas de mis propias sugerencias de características después de ver su ejemplo. Si eso se considera legítimo...)
 
Реter Konow:
Quizás pueda sugerir alguna variante de la función propia después de ver tu ejemplo. Si eso se considera legítimo...)

Sí, claro, no hay problema.

pow(cos(0.2e1 * 0.3141592654e1 * x2 * x2) + cos(0.1884955592e1 * y2) - 0.11e2, 0.2e1) + pow(cos(0.1256637062e1 * x2) + cos(0.2e1 * 0.3141592654e1 * y2 * y2) - 0.7e1, 0.2e1)

и

0,3e1 * (doble) (int) pow((doble) (1 - x3), (doble) 2) * exp((doble) (-x3 * x3 - (int) pow((doble) (y3 + 1), (doble) 2)) - 0,10e2 * (0,2e0 * (doble) x3 - (doble) (int) pow((doble) x3, (doble) 3) - (doble) (int) pow((doble) y3, (doble) 5)) * exp((doble) (-x3 * x3 - y3 * y3)) - exp((doble) (-(int) pow((doble) (x3 + 1), (doble) 2) - y3 * y3)) / 0.3e1;

Aquí hay dos ejemplos de funciones como f(x1, x2).

 
Andrey Dik:

Sí, claro, no hay problema.

pow(cos(0.2e1 * 0.3141592654e1 * x2 * x2) + cos(0.1884955592e1 * y2) - 0.11e2, 0.2e1) + pow(cos(0.1256637062e1 * x2) + cos(0.2e1 * 0.3141592654e1 * y2 * y2) - 0.7e1, 0.2e1)

и

0,3e1 * (doble) (int) pow((doble) (1 - x3), (doble) 2) * exp((doble) (-x3 * x3 - (int) pow((doble) (y3 + 1), (doble) 2)) - 0,10e2 * (0,2e0 * (doble) x3 - (doble) (int) pow((doble) x3, (doble) 3) - (doble) (int) pow((doble) y3, (doble) 5)) * exp((doble) (-x3 * x3 - y3 * y3)) - exp((doble) (-(int) pow((doble) (x3 + 1), (doble) 2) - y3 * y3)) / 0.3e1;

He aquí dos ejemplos de funciones de la forma f(x1, x2).

Se puede ver cierta discontinuidad en la escritura de las funciones...

El formato correcto es: fy = (x1 + x2 + ...xn) proporciona las partes izquierda y derecha de la ecuación. El número de parámetros en estos retazos de fórmulas es obviamente pequeño. Pensé que serían 500 o más...

 
Реter Konow:
Tal vez pueda sugerir alguna variante de la función propia después de ver tu ejemplo. Si eso se considerara legítimo...)

Sólo hay un punto que me gustaría discutir antes de publicar las fuentes del banco de pruebas.

La cuestión es que no conozco funciones que sean lo suficientemente interesantes en términos de complejidad para el algoritmo en todo el rango de su definición en los parámetros [-DBL_MAX; DBL_MAX]. Por lo que todo el mundo sabe, los números dobles pueden tener 17 dígitos (16 decimales) y si tomamos el rango [-DBL_MAX; DBL_MAX], las funciones no serán sensibles a los cambios de parámetros (porque tendremos que escalar el rango de valores de entrada en el rango de sensibilidad de las funciones) porque el paso no será continuo y uniforme.

Por lo tanto, propongo utilizar el rango [-2,0; 2,0] en pasos de 0,0. De hecho, debido a las limitaciones del número doble obtenemos el paso 0.0000000000000001, que es interesante en términos de complejidad del problema, por lo que podemos utilizar plenamente todas las oportunidades de número doble (número de pasos de parámetros obtendrá 4E16, y si tenemos en cuenta que los parámetros son 500, está claro que hay muchas variantes de valores FF, por decirlo suavemente).

 
Реter Konow:

Parece que hay cierta discontinuidad en la escritura de las funciones...

El formato correcto es: fy = (x1 + x2 + ...xn) proporciona los lados izquierdo y derecho de la ecuación. El número de parámetros en estos retazos de fórmulas es obviamente pequeño. Pensé que serían 500 y más...

Este es un ejemplo de dos funciones de la forma f(x1, x2). El campeonato FF constará de 255 funciones de este tipo, los parámetros se mezclarán entre sí, todas estas funciones individuales se volverán dependientes y se afectarán mutuamente (cómo exactamente - el árbitro generará una secuencia de llamadas a funciones individuales y una secuencia de llamadas a parámetros).

Si puedes, dame un ejemplo de una función de este tipo de la forma f(x1, x2) y la incluiré en el FF general.

 
Andrey Dik:

Sólo hay un punto que me gustaría discutir antes de publicar las fuentes del banco de pruebas.

La cuestión es que no conozco funciones que sean lo suficientemente interesantes en términos de complejidad para el algoritmo en todo el rango de su definición en los parámetros [-DBL_MAX; DBL_MAX]. Como todos sabemos, los números dobles pueden tener 17 dígitos (16 decimales) y si tomamos el rango [-DBL_MAX; DBL_MAX], las funciones se volverán insensibles a los cambios de parámetros porque el paso no será continuo.

Por eso sugiero utilizar el rango [-2,0; 2,0] en incrementos de 0,0. De hecho, debido a las limitaciones del número doble obtendremos un paso de 0,0000000000000001, que es interesante en términos de complejidad de la tarea, por lo que podemos utilizar plenamente todas las posibilidades del número doble.

No lo entiendo. El paso 0,0 significa que no hay paso...

Pues bien, para utilizar todas las posibilidades del número doble, el rango debería ser [-DBL_MAX; DBL_MAX], con paso 0,0000000000000001.

Por mucho que hayamos exagerado...

 
Реter Konow:

No lo entiendo. Paso 0.0 significa que no hay paso...

Pues bien, para aprovechar al máximo el número doble, el rango debería ser [-DBL_MAX; DBL_MAX], con un paso de 0,0000000000000001.

Por mucho que hayamos exagerado...

Paso 0.0 y significa paso 0.0000000000000001. En cuanto a la gama, que he descrito anteriormente. No he podido encontrar ninguna función que se ajuste al rango [-DBL_MAX; DBL_MAX] y que esté garantizado que funcione en este rango (requeriría una investigación para comprobarlo, para la que no tengo tiempo).

Piensa en ello hasta mañana, es importante que te des cuenta.

 
Andrey Dik:

Este es un ejemplo de dos funciones de la forma f(x1, x2). El campeonato FF consistirá en 255 funciones similares, los parámetros se mezclarán, todas estas funciones individuales se volverán dependientes y se influirán mutuamente (cómo exactamente - el árbitro generará una secuencia de llamadas a las funciones individuales y una secuencia de llamadas a los parámetros).

Si puedes, proporciona un ejemplo de dicha función de la forma f(x1, x2) y lo incluiré en el FF general.

Según tengo entendido, combinará 255 retazos similares de funciones analíticas en una sola ecuación. El problema es encontrar su máximo en el número mínimo de llamadas al FF.

Todo lo que necesitas saber es el rango, el paso y el número de parámetros.

No creo que mi personal surrealismo matem ático sea necesario aquí) aceptaré sus fórmulas .

 
Andrey Dik:

Paso 0.0 y significa paso 0.0000000000000001. En cuanto a la gama, que he descrito anteriormente. No he podido encontrar ninguna función que se ajuste al rango [-DBL_MAX; DBL_MAX] y que esté garantizado que funcione en este rango (requeriría una investigación para comprobarlo, para la que no tengo tiempo).

Piénsalo hasta mañana, es importante que te des cuenta.

Lo pensaré.