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

 
Andrey Dik:

Su algoritmo utiliza una llamada directa a FF desde el algoritmo, es decir, llamando desde *.ex5 a *.ex5. ¿Podemos llamar a un comando especial de parada desde el script en ejecución que detenga correctamente la optimización sin utilizar ExpertRemove()?

¿Hay algún escollo, algún problema en esto?

Sólo un recordatorio, hoy tengo que proporcionar un ejemplo de llamada al algoritmo en un script de prueba en dos variantes, en las que ocurre lo siguiente: 1. llamar al FF desde el script de prueba; 2. llamar al FF desde el algoritmo.

No se puede. Teniendo en cuenta esto, hace poco traté de debatir sobre diversas variantes de llamada. Por eso sugerí no medir el tiempo, sino sólo eliminarlo de la tabla y descartarlo cuando alcance un tiempo de ejecución prohibitivo.
 
Yuri Evseenkov:

Me pregunto por qué promotores de MQL como Dmitry Fedoseev y Andrey Dik no quieren explicar todo popularmente con un simple ejemplo.

Pero pueden hacerlo. El artículohttps://www.mql5.com/ru/articles/351 es un ejemplo de ello.

Tal vez la razón no sea la naturaleza de la masa. Tal vez quieran encontrar a otros usuarios avanzados como ellos y organizar una reunión. De ahí la limitación a MQL5, la jerga altamente especializada y las largas analogías espacio-temporales.

Sobre los algoritmos genéticos muy lúcidamente aquí https://habrahabr.ru/post/128704/

Lo he intentado aquí, nadie parece verlo y no quiere hacerlo.

Pero no en ese hilo, sino en el anterior, que hizo y borró Belkonsky. También podrías haber preguntado aquí. Aunque, en general, la sociedad se comporta correctamente, ¿por qué publicar aquí, si Belkonsky inmediatamente viene a la mierda aquí.

 
Dmitry Fedoseev:
No se puede. Teniendo esto en cuenta, hace poco traté de hablar de las distintas llamadas aquí. Por eso sugerí no medir el tiempo, sino sólo eliminarlo del gráfico y descartarlo cuando alcance un tiempo de ejecución prohibitivo.
¿Y si dentro de la función *.ex5 se comprueba alguna variable todo el tiempo, interna o global para flag==false?
 
Andrey Dik:
¿Y si dentro de la función *.ex5 se comprueba alguna variable de forma permanente, interna o global por flag==false?

Si una variable global del terminal. Pero entonces debe haber un requisito para que los participantes lo hagan.

Aquí puede ocurrir que el comando se presente en medio del procesamiento de una época y tenga que ser interrumpido, parte del trabajo realizado durante una época se hará en vano.

 
Dmitry Fedoseev:

Si una variable global del terminal. Pero entonces debe haber un requisito para que los participantes lo hagan.

Aquí puede ocurrir que se envíe un comando en medio del procesamiento de una época y se tenga que interrumpir, se perderá parte del trabajo realizado en una época.

Claro que sí.

Entonces el script necesita ser capaz de escribir una bandera de ruptura en una variable global cuando quiera.

Y el algoritmo debería comprobar antes de que comience la época si la bandera está permitida.

En el ejemplo de la secuencia de comandos de comprobación, se reflejará este punto (comprobación global).

 
Andrey Dik:

Claro que sí.

Entonces el script necesita ser capaz de escribir una bandera de parada en una variable global cuando lo desee.

Y el algoritmo debe comprobar antes de iniciar la época si la bandera está permitida.

En el ejemplo de la secuencia de comandos de comprobación, se reflejará este punto (comprobación global).

Así que las reglas deberían exigir que antes de que se ejecute una época, se compruebe la existencia de una variable con ese nombre (especificar el nombre).
 
Entonces, con este nivel de formación y con muchos años de experiencia en el campo, ¿invita a participar en el campeonato a personas que apenas saben de qué hablan? ¿Les enseñas los dibujos animados y les dices "participa, puedes hacerlo"? ¿Es moralmente satisfactorio para ti y para un par de competidores más ganarles? ¿Por qué los invitas? ¿Quizás la satisfacción no esté en la dimensión moral, sino en la material?
 
Реter Konow:
Entonces, con semejante nivel de formación y muchos años de experiencia en el campo, ¿invita a los campeonatos a personas que apenas saben de qué están hablando? ¿Les enseñas los dibujos animados y les dices "participa, puedes hacerlo"? ¿Es moralmente satisfactorio para ti y para un par de competidores más ganarles? ¿Por qué los invitas? ¿Quizás la satisfacción no esté en la dimensión moral, sino en la material?

Bueno, en primer lugar, no hay dos optimizadores experimentados, sino muchos más (que pocos se atrevan es otra cosa). En segundo lugar, para aquellos que no están muy bien preparados, ¿qué pueden hacer ahora? - También pueden participar en el evento, no hay clasificaciones preliminares.

Mira los campeonatos de MQ, ¿los principiantes verdes están prohibidos allí? - No, no lo hicieron, y tenían razón.

Tampoco hay prohibición para los "jóvenes". Todo el mundo puede participar.

Y en tercer lugar, ¿tengo que decir: "No participes, no tienes ninguna posibilidad"? - Por el contrario, dije: "¡Todos tienen una oportunidad!" Y lo hacen, independientemente del nivel de formación.

 
Dmitry Fedoseev:
Así que en las reglas escriba tal requisito - antes de realizar una época compruebe la existencia del cambio con tal o cual nombre (especifique específicamente).
BIEN.
 
Dmitry Fedoseev:

Si una variable global del terminal. Pero entonces debe haber un requisito para que los participantes lo hagan.

Esto puede hacer que se dé una orden en medio del procesamiento de una época y se tenga que interrumpir, parte del trabajo realizado en una época se hará para nada.

Creo que hay una solución, aunque no me gusta mucho. Lo sugirió alguien, tal vez tú.

Se puede estipular de antemano (a través de una petición especial en el código) que el número de ejecuciones no debe ser mayor que tal número. Entonces el FF, que contará el número de llamadas cuando se supere el número permitido, llamará a ExpertRemove().

El algoritmo será advertido y entonces, como se dice, será su propia culpa).

¿Está bien?