Campionato di ottimizzazione degli algoritmi. - pagina 45

 
Andrey Dik:

Il tuo algoritmo usa la chiamata diretta FF dall'algoritmo, cioè la chiamata da *.ex5 a *.ex5. Possiamo chiamare un comando speciale di arresto dallo script in esecuzione che ferma correttamente l'ottimizzazione senza usare ExpertRemove()?

Ci sono delle insidie, dei problemi in questo?

Solo un promemoria, oggi devo fornire un esempio di chiamata dell'algoritmo in uno script di test in due varianti, in cui accade quanto segue: 1. chiamata del FF dallo script di test; 2. chiamata del FF dall'algoritmo.

Non si può. Con un pizzico di questo in mente, di recente ho cercato di discutere diverse varianti di chiamata. Ecco perché ho suggerito di non misurare il tempo, ma solo di rimuoverlo dal grafico e scartarlo quando raggiunge un tempo di esecuzione proibitivo.
 
Yuri Evseenkov:

Mi chiedo perché promotori di MQL come Dmitry Fedoseyev e Andrey Dik non vogliano spiegare tutto in modo popolare con un semplice esempio.

Ma possono farlo. L'articolohttps://www.mql5.com/ru/articles/351 ne è un esempio.

Forse la ragione non è la natura della massa. Forse vogliono trovare utenti avanzati come loro e organizzare un incontro. Da qui la limitazione a MQL5, il gergo altamente specializzato e le lunghe analogie spazio-temporali.

Sugli algoritmi genetici molto lucidamente qui https://habrahabr.ru/post/128704/

Ho provato qui, nessuno sembra vederlo e non vuole.

Ma non in quel thread, ma in quello precedente, che Belkonsky ha fatto e cancellato. Avresti potuto chiedere anche qui. Anche se in generale la società si comporta correttamente, perché postare qui, se Belkonsky viene subito a cagare qui.

 
Dmitry Fedoseev:
Non si può. Con un pizzico di questo in mente, recentemente ho cercato di discutere i vari callout qui. Ecco perché ho suggerito di non misurare il tempo, ma solo di rimuoverlo dal grafico e scartarlo quando raggiunge un tempo di esecuzione proibitivo.
E se all'interno della funzione *.ex5 si controlla sempre qualche variabile, interna o globale per flag==false?
 
Andrey Dik:
E se all'interno della funzione *.ex5 si controlla qualche variabile in modo permanente, interna o globale per flag==false?

Se una variabile globale del terminale. Ma allora ci deve essere un obbligo per i partecipanti a fare questo.

Qui può succedere che il comando venga inviato nel mezzo dell'elaborazione di un'epoca e che questa debba essere interrotta, parte del lavoro fatto durante un'epoca sarà fatto invano.

 
Dmitry Fedoseev:

Se una variabile globale del terminale. Ma allora ci deve essere un obbligo per i partecipanti a fare questo.

Qui può succedere che un comando venga inviato nel mezzo dell'elaborazione di un'epoca e debba essere interrotto, parte del lavoro fatto in un'epoca sarà sprecato.

Certo.

Poi lo script deve essere in grado di scrivere un flag di interruzione in una variabile globale quando vuole.

E l'algoritmo dovrebbe controllare prima dell'inizio dell'epoca per vedere se il flag è permesso.

Nell'esempio di script di controllo, questo punto (controllo globale) sarà riflesso.

 
Andrey Dik:

Certo.

Poi lo script deve essere in grado di scrivere un flag di stop in una variabile globale quando vuole.

E l'algoritmo deve controllare prima di iniziare l'epoch per vedere se il flag è permesso.

Nell'esempio di script di controllo, questo punto (controllo globale) sarà riflesso.

Quindi le regole dovrebbero richiedere che prima dell'esecuzione di un'epoca si controlli l'esistenza di una variabile con tale nome (specificare il nome).
 
Quindi, con questo livello di formazione e con molti anni di esperienza nel campo, invitate persone che a malapena sanno di cosa stanno parlando a partecipare al campionato? Mostrate loro dei cartoni animati e dite "partecipate, potete farcela!"? È moralmente soddisfacente per lei e un paio di altri concorrenti batterli? Perché li inviti? Forse la soddisfazione non sta nella morale, ma nella dimensione materiale?
 
Реter Konow:
Quindi, con un tale livello di formazione e molti anni di esperienza nel campo, invitate al campionato persone che sanno a malapena di cosa stanno parlando? Mostrate loro dei cartoni animati e dite "partecipate, potete farlo"? È moralmente soddisfacente per lei e un paio di altri concorrenti batterli? Perché li inviti? Forse la soddisfazione non sta nella morale, ma nella dimensione materiale?

Beh, in primo luogo, non ci sono due ottimizzatori esperti, ma molti di più (il fatto che pochi osino è un altro discorso). In secondo luogo, per coloro che non sono molto preparati, cosa possono fare ora? - Anche loro possono partecipare all'evento, non ci sono qualificazioni preliminari.

Guardate i campionati di MQ, i principianti verdi sono vietati lì? - No, non l'hanno fatto, e avevano ragione.

Non c'è neanche un divieto per i "giovani". Tutti possono partecipare.

E in terzo luogo, devo dire: "Non partecipare, non hai nessuna possibilità!"? - Al contrario, ho detto: "Tutti hanno una possibilità!". E lo fanno, indipendentemente dal livello di formazione.

 
Dmitry Fedoseev:
Quindi nelle regole scrivete un requisito del genere - prima di eseguire un'epoca controllate l'esistenza del cambiamento con il nome di così e così (specificate).
OK.
 
Dmitry Fedoseev:

Se una variabile globale del terminale. Ma allora ci deve essere un obbligo per i partecipanti a fare questo.

Questo può far sì che un comando venga dato nel mezzo dell'elaborazione di un'epoca e debba essere interrotto, parte del lavoro fatto in un'epoca sarà fatto per niente.

Credo che ci sia una soluzione, anche se non mi piace molto. È stato suggerito da qualcuno, forse da te.

Potete stabilire in anticipo (attraverso una richiesta speciale nel codice) che il numero di corse non deve essere superiore a tale numero. Poi il FF, che conterà il numero di chiamate quando il numero consentito viene superato, chiamerà ExpertRemove().

L'algoritmo sarà avvertito e poi, come si dice, è colpa sua).

Va bene?