Algoritmo per combinare gli intervalli di un segmento - aiuta a creare - pagina 3

 
Dmitry Fedoseev:

1. Dov'è il coefficiente?

2. E p.1?

3. No, è più semplice di così. Ok, cercherò di accelerare domani.

1. Coefficiente (indice composito) in ogni segmento sarà sulle sue caratteristiche - sperimentalmente poi determinare la formula, ma convenzionalmente possiamo assumere che egli è.

2. Così è per segmento separatamente, solo un indicatore (dei tre su cui è calcolato) ci si può distribuire a tutti, e gli altri due non possono.

3. Grazie, aspetterò.

 

Qui. Ma se ci sono 1.000 sezioni, non aiuta. Ci sono troppe varianti, potresti anche non avere abbastanza memoria.

Si può andare in un altro modo - alla fine di ogni segmento legare un array con indici che puntano al segmento successivo. In questo modo puoi passare attraverso tutte le opzioni senza riempire la memoria, ma ci saranno comunque troppe opzioni... La ricerca richiederà molto tempo. Inoltre si può pensare a come fornire l'accesso alle varianti in base ai loro numeri, se è necessario (per divertimento).

Ma ne vale davvero la pena, quando ci sono così tante varianti? Che ne dite di specificare il compito per renderlo più realistico?

File:
3.mq5  14 kb
 
Dmitry Fedoseev:

Qui. Ma se ci sono 1.000 sezioni, non aiuta. Ci sono troppe varianti, potresti anche non avere abbastanza memoria.

Si può andare in un altro modo - alla fine di ogni segmento legare un array con indici che puntano al segmento successivo. In questo modo puoi passare attraverso tutte le opzioni senza riempire la memoria, ma ci saranno comunque troppe opzioni... La ricerca richiederà molto tempo. Inoltre si può pensare a come fornire l'accesso alle varianti in base ai loro numeri, se è necessario (per divertimento).

Ma ne vale davvero la pena, quando ci sono così tante varianti? Che ne dite di specificare il compito per renderlo più realistico?

Ci potrebbero essere molti obiettivi là fuori. Le mancanze più piccole, dai segmenti più lunghi, dai più corti, dai più identici) anche nei grafici di destinazione il tempo più breve e il percorso minimo logisticamente sono diversamente risolti)
 
Valeriy Yastremskiy:
Ci possono essere molti obiettivi. Le mancanze più piccole, dai segmenti più lunghi, dai più corti, dai più identici) anche nei grafi target meno tempo e percorso minimo logisticamente sono diversamente risolti)

Di cosa si tratta?

Gli array, con puntatori a un segmento vicino, sono una misera quantità di memoria rispetto a un array che contiene tutte le combinazioni pronte.

 
Dmitry Fedoseev:

Qui. Ma se ci sono 1.000 sezioni, non aiuta. Ci sono troppe opzioni, potresti anche non avere abbastanza memoria.

Grazie!

Ma non sono sicuro di quale sia il punto dell'aggiornamento - sono state fatte delle correzioni al codice? L'ultima volta ha recuperato 613 combinazioni, questa volta ne ha recuperate 1507.

La velocità è diventata più lenta, ma questo è probabilmente dovuto al numero di combinazioni.

Ultima variante:

2021.04.23 19:56:08.350 Scripts script Q_Podbor_02 (Si-6.21,M1) loaded successfully
2021.04.23 19:56:08.742 Scripts script Q_Podbor_02 (Si-6.21,M1) removed

Variante attuale:

2021.04.23 19:51:56.608 Scripts script Q_Podbor_03 (Si-6.21,M1) loaded successfully
2021.04.23 19:51:58.387 Scripts script Q_Podbor_03 (Si-6.21,M1) removed
Dmitry Fedoseev:

Potremmo andare in un altro modo - alla fine di ogni segmento potremmo legare un array con indici che puntano al segmento successivo. Questo assicura il passaggio attraverso tutte le varianti senza riempire la memoria. Ma ci saranno ancora molte varianti... la ricerca richiederà molto tempo. Inoltre si può pensare a come fornire l'accesso alle varianti in base ai loro numeri, se è necessario (per divertimento).

Se ho capito bene, l'idea è di calcolare successivamente la combinazione e valutarla, poi salvare il risultato e passare alla combinazione successiva. Se il nuovo risultato (o la top 10) è migliore dell'ultimo, lo sostituiamo nella variabile dell'array. E, sì, volevo solo chiedere, come ottenere una catena di indici del primo livello dell'array di cui consiste la combinazione?

Dmitry Fedoseev:

Ma ha senso se ci sono così tante varianti? Che ne dite di specificare il problema per renderlo più realistico?

Perché la variante con un numero limitato di segmenti dal punto corrente (passo di combinazione, quando n segmenti sono già stati raccolti) non è adatta, perché ridurrà significativamente il numero di combinazioni?

 
Aleksey Vyazmikin:

Grazie!

Ma non ho capito bene il senso dell'aggiornamento - sono state fatte delle correzioni al codice? L'ultima volta c'erano 613 combinazioni, questa volta sono 1507.

La velocità è diventata più lenta, ma questo è probabilmente dovuto al numero di combinazioni.

Ultima variante:

Variante attuale:

Se ho capito bene, si propone di calcolare consecutivamente una combinazione e valutarla immediatamente, salvare il risultato della valutazione e passare alla combinazione successiva. Se il nuovo risultato (o la top 10) è migliore del precedente, lo sostituiamo nella variabile dell'array. E, sì, volevo solo chiedere, come ottenere una catena di indici di primo livello dell'array in cui consiste la combinazione?

Perché non è bene provare un numero limitato di sezioni a partire dal punto corrente (passo di combinazione, quando si sono già raccolte n sezioni), perché permette di ridurre significativamente il numero di combinazioni?

Perché non consideriamo la versione originale del problema?

 
Алексей Тарабанов:

Perché non guardiamo la versione originale del problema?

Senza le sezioni.

 
Алексей Тарабанов:

Perché non guardiamo la versione originale del problema?

Alexei Tarabanov:

Senza i segmenti.

Esisteva una tale variante?

La variante originale consiste nel dividere idealmente la serie numerica come una matrice in segmenti (intervalli). I criteri di divisione sono:

1. Almeno il 5% dei numeri cade in un intervallo - %R. 2;

2) Valutare la risposta di un segmento a un'altra matrice binaria della stessa dimensione (se c'è un numero nell'intervallo - 1, altrimenti - 0) e la risposta del segmento dovrebbe differire dal valore medio dell'intera matrice binaria di almeno il 5% - dP%;

3. su 10 segmenti identici per profondità di matrice, calcolare SCO dP%, che non dovrebbe essere più di 1,5 - K_SKO.

Ora diversi metodi definiscono gli intervalli, ma diversi metodi sono in grado di selezionare diversi intervalli che soddisfano i criteri di cui sopra. Pertanto, l'obiettivo è quello di prendere tutte le ripartizioni in segmenti da diversi metodi e combinare i migliori.

 
Aleksey Vyazmikin:

Grazie!

Ma non ho capito bene il senso dell'aggiornamento - sono state fatte delle correzioni al codice? L'ultima volta c'erano 613 combinazioni, questa volta sono 1507.

La velocità è diventata più lenta, ma questo è probabilmente dovuto al numero di combinazioni.

Ultima variante:

Variante attuale:

Se ho capito bene, si propone di calcolare consecutivamente una combinazione e valutarla immediatamente, salvare il risultato della valutazione e passare alla combinazione successiva. Se il nuovo risultato (o la top 10) è migliore del precedente, lo sostituiamo nella variabile dell'array. E, sì, volevo solo chiedere, come ottenere una catena di indici di primo livello dell'array in cui consiste la combinazione?

Perché non è utile provare un numero limitato di sezioni a partire dal punto corrente (passo della combinazione, quando avete già raccolto n sezioni), perché permette di ridurre significativamente il numero di combinazioni?

E non so dove e in cosa cercate le combinazioni? Generalmente, ad ogni inizio viene creato un nuovo set di segmenti di ingresso ed è sempre diverso.

Una catena di indici - quindi è necessario creare combinazioni non dai segmenti, ma dagli indici dei segmenti, o aggiungere un terzo elemento nella seconda dimensione e memorizzare l'indice in esso.

Non so perché qualche numero limitato non sia adatto, hai scritto di tutte le combinazioni.

 
Dmitry Fedoseev:

Non so dove e in quali combinazioni stai cercando?

Sopra, Alexei Tarabanov ha scritto in dettaglio dove e in cosa rispondendo. Ma questa è teoria - non ho ancora finito quello che mi serve.

Dmitry Fedoseev:

Generalmente, ogni startup crea un nuovo set di segmenti iniziali e sono sempre diversi.

Poi vedo - non me ne sono occupato e ho solo eseguito due script - se l'insieme è diverso, allora sarà possibile valutare solo se gli insiemi sono uguali.

Dmitry Fedoseev:

Catena di indici - quindi dovremmo creare combinazioni non da segmenti, ma da indici di segmenti, bene o aggiungere un terzo elemento alla seconda dimensione e salvare l'indice in esso.

Penso che il terzo elemento sia un'opzione più conveniente. Potresti modificare il codice in modo che funzioni correttamente con questa implementazione?

Dmitry Fedoseev:

Non so perché una sorta di enumerazione di un numero limitato non va bene, hai scritto di tutte le combinazioni.

È vero, originariamente ho scritto di tutte le combinazioni, ma nel processo, grazie a te, diventa chiaro che è molto costoso e hai bisogno di un'opzione, empiricamente capace di non essere peggiore della forza bruta. E poiché la valutazione del segmento risultante è formata dai suoi chunks, presumo, che limitando n combinazioni dei migliori chunks e aggiungendo nuovi chunk, sarà possibile avvicinarsi alla migliore opzione di tutte le combinazioni possibili senza limiti.