[Matematica pura, fisica, chimica, ecc.: problemi di allenamento del cervello non legati in alcun modo al commercio - pagina 451

 

Ecco il risultato con SMax=3000

2011.01.15 19:14:26 MetaSage (EURUSD,M1) //+---- Max = 3000 -------------------+
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:14:21 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:14:21 MetaSage (EURUSD,M1) //+---- Importo massimo = 3000 -------------------+

 
Quanto è durato il conteggio? Non cinque secondi...
 
Mathemat:

1. In generale, bisogna eliminare le restrizioni sull'importo. Tutti i ragionamenti rimangono essenzialmente gli stessi, solo più di questo.

2. A giudicare dal fatto che nella citazione l'uomo aveva bisogno di un Cray 1, il suo algoritmo era meno ottimizzato del tuo :)

1. Grande non è possibile - la mia tabella di espansione dei moltiplicatori non entra in memoria già a SMax=3400.

Qualche progresso con il lemma per il prodotto massimo per un dato SMax?

Ecco la stampa del 3300:

2011.01.15 19:18:12 MetaSage (EURUSD,M1) //+---- Somma massima = 3300 -------------------+
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:18:06 MetaSage (EURUSD,M1) //+---- Max = 3300 -------------------+

.

2. No, è solo che mql5 è un linguaggio molto veloce... :)

 
Mathemat:
Quanto è durato il conteggio? Non cinque secondi...
Circa un minuto.
 
MetaDriver: Qualche progresso con il lemma per il lavoro massimo per un dato SMax?
Non ancora, mi sto solo chiedendo se ne vale la pena :)
 

Controllato a SMax=3350. Il risultato è lo stesso. Conta per circa un minuto, anche meno.

La principale limitazione in questo momento è la memoria. Dobbiamo limitare la tabella di decomposizione dei moltiplicatori.

Versione attuale di PMax=SMax*(SMax/2-1). Può essere diminuito ulteriormente? Puoi abilitarlo?

Penso che sia abbastanza facile dimostrare che PMax<=SMax*(sqrt(SMax)-1). Proverò ad eseguirlo ora e se si blocca significa che mi sbaglio. :)

 
Lasciatemi dare un senso a tutto questo.
 

Non ha funzionato (ha costruito un tavolo, ma sembrava troppo piccolo), ma sono riuscito a trovare un'altra soluzione (!) :-)

2011.01.15 19:40:28 MetaSage (EURUSD,M1) Array out of range in 'MetaSage.mq5' (100,47)
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //+---- Importo massimo = 4000 -------------------+
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //============== START ========================

 

Ora, se solo potessimo fare in modo che queste non siano solo soluzioni potenziali, ma soluzioni reali.

OK, possiamo pensare ulteriormente fissando un limite di, diciamo, 10.000.

P.S. Quanti numeri hai nella tabella a 3300?

3300*(3300/2-1) ~ 5 milioni?

 
Mathemat:

1. Ora, se solo potessimo fare in modo che queste non siano solo soluzioni potenziali, ma soluzioni reali.

OK, possiamo pensare ulteriormente fissando un limite di, diciamo, 10.000.

2. P.S. È il numero di numeri che hai nella tabella a 3300?

3300*(3300/2-1) ~ 5 milioni?

1. Beh, lo script è il modo per assicurarsene. Cambiatelo con una versione di verifica. Lo farò, ma prima occupiamoci di PMax.

2. SÌ.

Ecco un po' di giochetti con le dimensioni della tabella. Ho ottenuto i risultati con SMax=4100.

PMax impostato come segue: SMax*(uint)(SMax/6-1) = 2796200

2011.01.15 20:21:29 MetaSage (EURUSD,M1) //+---- Max = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=137; P=4672; a=64; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=89; P=1168; a=16; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //+---- Max = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //============== START ========================

2011.01.15 20:21:00 MetaSage (EURUSD,M1) SMax*(uint)(SMax/6-1) = 2796200

.

Come vediamo, c'è un'altra soluzione nel mezzo: S=137; P=4672; a=64; b=73.