Non per gli sviluppatori di MT! Con cosa sostituire INIT_PARAMETERS_INCORRECT? - pagina 8

 
Aleksey Vyazmikin:

Avete 4 parametri, quindi dovete organizzare questi 4 parametri per lavorare solo con i valori corretti, poi la genetica può essere utile.

Come mai?

Se ogni parametro può assumere 3 valori corretti, allora seuse_parameter = true si ottengono 81 passaggi, e se = false, allora 80 passaggi sono inutili.

Allora, come organizzarlo "in qualche modo"?

 
Сергей Таболин:

Come funziona?

Se ogni param_ può prendere 3 valori corretti, allora seuse_parameter = true si ottengono 81 passaggi, e se = false, allora 80 passaggi sono inutili.

Quindi, come organizzare "in qualche modo" tutto questo?

Non posso dare una risposta a questa domanda perché come minimo non capisco le condizioni di ottimizzazione - o si afferma male o io sono stupido.

Avete 4 parametri interdipendenti o due coppie?

Se avete 4 varianti reciprocamente dipendenti e, come avete scritto prima, tutte in un file come un'unica impostazione, allora la genetica riempirà casualmente (e forse con un altro metodo - domanda per MQ) il campo e ottimizzerà la parte selezionata. Se avete altri parametri da ottimizzare, al di fuori di questi 4, allora il genetista sarà in grado di cercare l'impostazione ottimale rispetto ai parametri selezionati e agli altri.

 
Сергей Таболин:

Nel vostro caso, solo le catene valide possono essere generate.

Hai 1953 combinazioni valide. togli l'impostazione int da 0 a 1952 e genera la combinazione corretta in base al numero di sequenza.

 
Alexey Navoykov:

Non ci sono passaggi "superflui" nella genetica. Si mette tutto a posto da solo, eliminando le cose inutili, il che fa risparmiare tempo e risorse, e tu stai solo interferendo con esso.

In effetti, ti contraddici. Prima dici che vuoi che tutto funzioni da solo premendo un pulsante magico, senza alcuno sforzo aggiuntivo da parte tua, ma allo stesso tempo crei degli sciamani nel codice, presumibilmente per aiutare l'algoritmo di ottimizzazione.

Comunque, ora è tutto chiaro:

Non dovete eliminare nulla da INIT_PARAMETERS_INCORRECT, basta calcolare 121 secondo la logica del vostro programma, e la genetica farà il suo lavoro e il risultato sarà ottenuto in meno di 1953 passaggi.

Se si ottimizza utilizzando la ricerca completa lenta, allora naturalmente i passaggi extra non sono necessari. È possibile introdurre un parametro aggiuntivo nel vostro EA che definisce il tipo di ottimizzazione. Se è una ricerca completa, i passaggi extra vengono rifiutati, mentre se è genetica, non lo sono. È un peccato che MQL non vi fornisca una tale opzione. Gli sviluppatori dovrebbero chiedere di aggiungere questa funzione.

Il fatto è che quando ho affrontato il problema di decine di risultati identici nei risultati di ottimizzazione, ho creato un topic chiedendo come liberarmene. Purtroppo dopo il divieto tutti i miei topic e tutti i miei commenti sono scomparsi dalle mie pubblicazioni, quindi non posso darvi il link.

È qui che mi è stato detto di usare INIT_PARAMETERS_INCORRECT

E sì, non capisco perché avete bisogno di impegnarvi in corse consapevolmente inutili:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • ecc.

se è essenzialmente la stessa cosa?

E da quello che so sulla genetica, risulta che queste catene ripetitive ruoteranno, e le migliori potrebbero non essere affatto in vista di questo algoritmo... Non è così?

 
TheXpert:

È stato detto molte volte prima con parole diverse, trasformando lo spazio di input. nel vostro caso potete generare solo catene valide.

hai 1953 combinazioni valide. togli l'impostazione int da 0 a 1952 e genera la combinazione corretta dal numero di sequenza. questa è un'opzione.

Questo è quello che ho finito per fare...

 
Сергей Таболин:

E sì, non capisco perché uno dovrebbe impegnarsi in una corsa consapevolmente inutile:

  • 100000
  • 010000
  • 001000
  • 000100
  • 000010
  • 000001
  • 110000
  • 011000
  • 001100
  • 000110
  • 000011
  • ecc.

se è essenzialmente la stessa cosa?

E da quello che so sulla genetica, risulta che queste catene ripetitive ruoteranno, e le migliori potrebbero non essere affatto in vista di questo algoritmo... Non è così?

Quindi, quali sono i migliori filamenti? È anche un certo numero di copie ripetute. E questa ripetizione aumenta le possibilità che una di queste copie sia catturata dalla ricerca.

Quindi in sostanza le possibilità (probabilità) sono le stesse con o senza ripetizioni. Di conseguenza il tempo di ricerca genetica sarà lo stesso in entrambi i casi.

In generale, vi consiglio ancora di capire come funziona l'algoritmo genetico, altrimenti è inutile spiegarvi qualcosa.

 
Alexey Navoykov:

Allora, quali sono le migliori catene? ...

Se lo sapessi, non avrei nemmeno bisogno di ottimizzare.

Forse il migliore è 326000, 514300 o 346215?

 
Сергей Таболин:

Se lo sapessi, non ci sarebbe nemmeno bisogno di ottimizzare.

Forse il migliore è 326000, 514300 o 346215?

Era solo una domanda introduttiva alla quale stavo dando una spiegazione.

Quindi non è "migliore" ma "migliore, dato tutti i tipi di copie di quella catena".

Non capite una cosa semplice, che setacciando la catena secondoINIT_PARAMETERS_INCORRECT potreste perdere una di queste catene di successo o quasi. Perciò la ricerca non diventa più breve.

 
Alexey Navoykov:

Era solo una domanda introduttiva alla quale stavo dando una spiegazione.

Quindi non è "migliore", ma "migliore, date tutte le diverse copie di quella catena".

Non capite una cosa semplice, che schermando la catena secondoINIT_PARAMETERS_INCORRECT, potreste perdere esattamente una di queste catene di successo, o una catena vicina ad essa. Così la ricerca non diventa più breve.

Setaccio ESCLUSIVAMENTE quelli ripetitivi! Nell'esempio sono contrassegnati da uno sfondo rosso.

Come può una catena 120000 essere migliore di una catena 010020? È la stessa catena! E 100002, e 000012! Allora perché tutte queste ripetizioni della stessa cosa?

 
Сергей Таболин:

Setaccio ESCLUSIVAMENTE quelli ripetitivi! Nell'esempio sono contrassegnati da uno sfondo rosso.

Come può la catena 120000 essere migliore della catena 010020? È la stessa catena! E 100002, e 000012! Allora perché tutte queste ripetizioni della stessa cosa?

Ok, non capite, ma c'è da aspettarselo. Per le persone che sentono, ho detto tutto quello che avevo da dire. Non vedo il motivo di continuare