prendendo l'aiuto della sala) - pagina 3

 

Il problema è risolvibile. Tutti gli strumenti necessari sono in CodeBase.

Avete solo bisogno di scrivere un interprete per convertire i valori dei geni (spazio continuo) in uno spazio discreto necessario per il problema.

Il problema si riduce alla minimizzazione di ff=MathAbs(f-H)

dove f=a+b+c+....

 
vitali_yv:

Il calcolo su mql5 può richiedere una vita del TC)


In realtà, sto solo dicendo che si può e si deve fare a meno di if, e un po' sul fatto che mql4 è ancora più veloce di vb6 e molto più veloce.

Lunghezza dell'espressione 6, numero di varianti di una variabile - 30, l'espressione mql4 è risolta in 493 secondi (8 min). Di conseguenza, l'espressione di lunghezza 7 richiederà 4 ore per essere risolta. 8 è 120 ore)).

Se le condizioni sono costanti (gli stessi numeri) e la lunghezza dell'espressione è limitata, si può lavorare molto, creare un array con soluzioni pronte, poi recuperare il valore al volo tramite indici.

 
Integer:



La lunghezza dell'espressione è 6, il numero di varianti di una variabile è 30, in mql4 si risolve in 493 secondi (8 min). Di conseguenza, l'espressione lunghezza 7 sarà risolta in 4 ore. 8 è 120 ore).


E le somme sono 17 )
 
vitali_yv:
E le sommatorie sono 17 )


Allora neanche il tspp è d'aiuto.

In mt5 6 variabili, 30 numeri risolti in 90 sec (su un computer diverso però).

 
Integer:


Allora neanche il tspp è d'aiuto.

In mt5 ci sono 6 variabili, 30 numeri risolti in 90 secondi (ma su un computer diverso).

Cosa state facendo? Dove avete trovato dei numeri così spaventosi? Ho reti con migliaia di squame allenate in pochi minuti, e qui....
 
joo:
Cosa state facendo? Da dove vengono questi numeri spaventosi? Ho reti con migliaia di squame allenate in pochi minuti, e qui....


Provate:

int start()
  {
//----
   int c[]={10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978};
   int Find=-1;
   

         int start=TimeLocal();
            for(int i1=0;i1<ArraySize(c);i1++){
            for(int i2=0;i2<ArraySize(c);i2++){
            for(int i3=0;i3<ArraySize(c);i3++){
               Comment(i1," ",i2," ",i3);
            for(int i4=0;i4<ArraySize(c);i4++){
            for(int i5=0;i5<ArraySize(c);i5++){
            for(int i6=0;i6<ArraySize(c);i6++){
               int s=c[i1]+c[i2]+c[i3]+c[i3]+c[i4]+c[i5]+c[i6];   
            } 
            }
            }
            }
            }
            }
      

   
   Alert("! "+(TimeLocal()-start));
//----
   return(0);
  }
 
Integer:


Provate:

No, non gioco così. :(

Non ci proverò nemmeno. Perché dovrei? Quando ci sono metodi più civili per trovare una soluzione invece della stupida forza bruta.

 
joo:

No, non gioco così. :(

Non li proverò nemmeno. Per quale motivo? Quando ci sono metodi più civili per trovare una soluzione invece della stupida forza bruta.

Ahimè, per molti compiti non ci sono ancora metodi civili per risolverli.

 
Integer:

Ahimè, ci sono ancora molti problemi che mancano di metodi civili di soluzione.

Esistono. Solo che spesso non ne siamo a conoscenza.

OK. Controllare se ho capito bene le condizioni del problema:

Risolvere trovare x se a*x+b*x+c*x.....=H, a, b, c possono assumere valori (10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978).


La questione rimane poco chiara - quante a, b, c.... ci sono nel problema?


Sono proprio come un bambino, mi sto innamorando di "Debole? :)

Mi sembra che il problema non abbia alcuna importanza pratica, potrei sbagliarmi. Se ottengo condizioni complete del problema - darò una soluzione "civile". E userò quel toolkit, di cui ho parlato.

 

Non è questo il compito da svolgere.

Un algoritmo genetico non aiuta. Avvicinarsi (minimizzare) ad una funzione non significa muoversi nella giusta direzione, si può stare accanto ad essa, ma l'input è dall'altra parte. Non può essere "solo un po' giusto" qui.