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

 
Yuri Evseenkov:
Es decir, es posible pasar un array nulo y averiguar el valor de FF si todos los parámetros son iguales a cero.

¿Está 0,0 dentro del rango[-10,0;10,0]? - Sí, así es. Así que puede encontrar el valor FF con los parámetros de la matriz llena de valores 0,0.

En general, nadie le prohíbe introducir absolutamente cualquier número en FF, pero sólo obtendrá una respuesta adecuada en el rango[-10,0;10,0], mientras que más allá del rango los números se cortarán hasta estos límites. Si usted no tiene esto en cuenta, entonces su algoritmo puede pensar que él consiguió en una superficie verde suave, porque el valor de FF siempre se dará el mínimo (cualquiera, pero no cambiante) para FF, y vagar infinitamente en una vasta extensión de los números reales (hasta que su proceso no se detendrá el corrector).

 
Andrey Dik:

¿Está 0,0 dentro del rango[-10,0;10,0]? - Sí, así es. Así que puede encontrar el valor FF con los parámetros de la matriz llena de valores 0,0.

En general, nadie le prohíbe introducir absolutamente cualquier número en FF, pero sólo obtendrá una respuesta adecuada en el rango[-10,0;10,0], mientras que más allá del rango los números se cortarán hasta estos límites. Si usted no toma esto en cuenta, entonces su algoritmo puede pensar que tiene en una superficie lisa grizontalnuyu, porque el valor de FF siempre se emitirá un mínimo (cualquier, pero no cambian) para FF, y vagar infinitamente en las vastas extensiones de los números reales (hasta que su proceso no se detendrá el inspector).

Lo tengo. Gracias. Pienso hacer las 4 primeras llamadas con matrices llenas de -10,0, 0,0, 10,0 y 2,7 cada una. Me gustaría 2,718 para mis cucarachas pero paso 0,1. No puedes hacer eso.
 
Dmitry Fedoseev:

Bien, me voy, quédate do-mi, en tu tranquilo mundo do-mi. Táchalo de los participantes.

Se lo explicaré, por supuesto, a todos los que están aquí con bolas de armadura. En la segunda versión del script, no es necesario importar FF(), porque lafunción participante tambiénse importa allí, por lo que FF() no será visible en la función participante. La función FF() debe ser importada en la biblioteca de miembros. Incluso un ejemplo de esta mierda trivial se presenta de forma incorrecta. Lo sé, lo sé, dirás que está claro. Pero si está tan claro, ¿por qué no se proporciona el ejemplo correcto? Y con una mirada como si yo fuera el idiota aquí.

Adiós.

Dim, al menos debería haber comprobado el funcionamiento de las funciones de exportación antes de competir en el podio. Yo, por ejemplo, antes de publicar mi prototipo, naturalmente comprobé su capacidad de funcionamiento. Y por supuesto que funciona, es decir, ninguna biblioteca personalizada carga su propia instancia de una función.

El entorno de ejecución de MT suele funcionar de forma diferente a lo que se piensa. Sólo se carga una instancia de la biblioteca con una sola instancia de variables en el espacio de direcciones del script de comprobación, es decir, todos utilizarán sólo un ff específico con sus parámetros específicos. Si no me crees, descarga mi ejemplo y compruébalo.

 
Vasiliy Sokolov:

Dimitri simplemente no vio que hay dos opciones de bibliotecas de algoritmos dadas para el miembro también. Y el segundo tiene la función de importación de FF (como él dice). Y el primero no lo hace.

 
Vasiliy Sokolov:

Dim, al menos deberías haber comprobado el trabajo de las funciones de exportación antes de hacer un gran pronunciamiento desde el podio. De lo contrario, resulta de una serie de "no he visto, pero juzgo" Yo, por ejemplo, antes de publicar el prototipo, por supuesto, comprobado su rendimiento. Y por supuesto que funciona, es decir, ninguna biblioteca personalizada carga su propia instancia de una función.

El entorno de ejecución de MT suele funcionar de forma diferente a lo que se piensa. Sólo se carga una instancia de la biblioteca con una sola instancia de variables en el espacio de direcciones del script de comprobación, es decir, todos utilizarán sólo un ff específico con sus parámetros específicos. Si no me crees, descarga mi ejemplo y compruébalo.

Ya he dicho lo de una instancia para la doble importación (no he podido encontrar mi post, hay muchos aquí). Sí, por eso es posible controlar las llamadas de FF por el algoritmo de los miembros. Si el script y el algoritmo llamaran a cada una de las instancias del FF entonces no se produciría el campeonato, porque sería imposible comprobar si el algoritmo realmente llama al FF tantas veces como dice que lo hace.

...

Aunque, probablemente se podría arreglar con una sola importación en el algoritmo, no creo que sea posible ejecutar *.ex5, descargar, y ejecutar de nuevo, para restablecer el contador (plan inteligente del concursante), pero entonces se necesitaría que el concursante llamara a toda la estadística por sí mismo y otras posibilidades tendrían que ser consideradas por los concursantes para la salida de los resultados, y eso es una complejidad adicional para los concursantes. Es más fácil por parte del script solicitar toda la información necesaria sobre el uso o no del FF.

Pero, en cualquier caso, la doble importación en nuestro caso no puede considerarse un error.

 

Andrey Dik:

No necesitas saber esto. Mantente dentro del rango [-10,0;10,0] y no tendrás problemas.


¿Está 0,0 dentro del rango[-10,0;10,0]? - Sí, así es. Así que puede obtener el valor de FF con parámetros de la matriz llena de valores 0.0.

En realidad, nadie le prohíbe introducir absolutamente cualquier número en FF, pero sólo obtendrá una respuesta adecuada en el rango[-10,0;10,0], mientras que más allá del rango los números se cortarán hasta estos límites. Si usted no tiene esto en cuenta, entonces su algoritmo puede pensar que él consiguió en una superficie verde suave, porque el valor de FF siempre se dará el mínimo (cualquiera, pero no cambiante) para FF, y sin fin de vagar en una vasta extensión de los números reales (hasta que su proceso no se detendrá el corrector).

Para no molestarse en recortar los límites y no limitar el algoritmo, podemos añadir una línea al FF:

if(array[ArrayMaximum(array)]>10.0 || array[ArrayMinimum(array)]<-10.0) return(0.0);
 
Sergey Chalyshev:

Para no molestarse con los límites de recorte y no limitar el algoritmo, se puede añadir una sola línea al FF:

¿por quéreturn(0.0);?

o más exactamente, ¿por qué 0,0?

 
Andrey Dik:

¿por quéreturn(0.0);?

o más exactamente, ¿por qué 0,0?

Si sólo buscamos el máximo, la respuesta correcta es

return(-DBL_MAX);
 
Sergey Chalyshev:

Si sólo buscamos el máximo, entonces lo correcto es

El punto es que en la etapa de diseño es posible obtener "superficies" con discontinuidades, con picos hasta el infinito (abajo o arriba), pero FF debe devolver el valor correcto en la salida, por lo que todas las condiciones de contorno ya se tienen en cuenta en FF, lo que no causaría un accidente por culpa de FF.

Por eso creo que es mejor recortar los parámetros hasta límites aceptables y calcular FF con dichos parámetros y dar salida a lo que se obtiene que dar salida a sabiendas a -DBL_MAX a un parámetro incorrecto.

Los participantes conocen las limitaciones de los parámetros y deben observarlos, de lo contrario hay muchas preguntas que son difíciles de responder en cada caso particular de los algoritmos. Tal y como están las cosas, ponemos todos los algoritmos en igualdad de condiciones.

ss. .... se verá inundado de preguntas "¡¿Cómo es eso de la fase de diseño?!! ¡¡¡Dijiste que nadie se enteraría de FF!!!".... para aquellos que van a hacer tal pregunta - leer el hilo primero.

 
¿Por qué los números del rango son fraccionarios? En lugar de ir de -10,0 a 10 en incrementos de 0,1, puede ir de -100 a 100, en incrementos de 1.