Librerie: ALGLIB - Libreria di Analisi Numerica - pagina 2

 
Quando ho scritto il mio articolo, ho usato ALGLIB. Sono anche riuscito a chiedere all'autore della libreria sul forum qualcosa che all'epoca non avevo capito. L'autore è stato molto gentile e mi ha risposto in modo dettagliato. Per quello che a lui un rispetto speciale e rispetto. Sono felice che il lavoro di Bochkanov S.A. sia stato notato da MQ Co....
 
Sono molto entusiasta dell'arrivo di questa biblioteca. Grazie!
 
Bellezze MQ! Lavoro serio!

Un esempio di utilizzo della libreria è l'insegnamento alla rete neurale MLP della tabella delle moltiplicazioni.

#include <Math\Alglib\dataanalysis.mqh>
//+------------------------------------------------------------------+
#define _rand(min,max) ((rand()/(double)SHORT_MAX)*((max)-(min))+min)
//+------------------------------------------------------------------+
void OnStart()
{
   CMultilayerPerceptron net;
   CMLPReport rep;
   CMatrixDouble patterns;
   double vector[2], out[1];
   int info;
   // preparazione dei dati
   patterns.Resize(100,3);
   int m=0;     // primo modello
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         patterns[m].Set(0,i/10.0);       // ingresso 1
         patterns[m].Set(1,j/10.0);       // ingresso 2
         patterns[m].Set(2,(i*j)/100.0);  // obiettivo
         m++; //il prossimo modello
      }
   // creazione di una rete con uno strato nascosto (5 neuroni)
   CMLPBase::MLPCreate1(2,5,1,net);
   // formazione della rete
   CMLPTrain::MLPTrainLM(net,patterns,100,1 e-3,5,info,rep);     //Levenberg-Marquardt
   //CMLPTrain::MLPTrainLBFGS(net,paterns,100,1e-3,10,0.001,1000,info,rep);//L-BFGS
   Print("Info=",info,"  Error=",CMLPBase::MLPError(net,patterns,100)); 
   // controllare la rete sui dati interi
   string s="Prova 1 >>";
   for(int i=1; i<=10; i++)
   {
      int d1=(int)_rand(1,10), d2=(int)_rand(1,10);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
      CMLPBase::MLPProcess(net,vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0]*100,0)+" // ";
   }
   Print(s);
   // verifica della rete su dati frazionari
   s="Test 2 >>";
   for(int i=1; i<=5; i++)
   {
      double d1=NormalizeDouble(_rand(1,10),1), d2=NormalizeDouble(_rand(1,10),1);
      vector[0]=d1/10.0;
      vector[1]=d2/10.0;
      CMLPBase::MLPProcess(net,vector,out);
      s+=DoubleToString(d1,1)+"*"+DoubleToString(d2,1)+"="+DoubleToString(out[0]*100,2)+
         "("+DoubleToString(d1*d2,2)+") // ";
   }
   Print(s);
}
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Info=2  Error=0.0005349624857861839
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Тест 1 >> 3*6=18 // 1*1=0 // 7*8=56 // 1*5=5 // 4*6=24 // 7*6=42 // 8*2=16 // 1*5=5 // 3*2=6 // 6*7=42 // 
2012.10.13 12:44:31     Test_MLP(Alglib) (EURUSD,M30)   Тест 2 >> 6.3*8.2=51.83(51.66) // 7.0*8.1=57.04(56.70) // 9.0*8.1=73.36(72.90) // 4.1*9.6=39.05(39.36) // 6.3*8.8=55.63(55.44) // 

:( Ho paura di pensare a cosa succederà al cloud quando gli utenti inizieranno a usare attivamente la libreria nei loro esperti.
Questo semplice script pesa meno di un megabyte.
File:
 
Yurich: Un esempio di utilizzo della libreria è l'insegnamento alla rete neurale MLP della tabella delle moltiplicazioni.

dove avete trovato questo esempio? ))))))))))))))

Grazie, stavo per studiare lo stesso esempio per me stesso, ma puoi scoprire quale codice per insegnare la tabella di moltiplicazione è più veloce, il tuo https://www.mql5.com/it/code/596 o il porting di ALGLIB?

 
Grazie per la novità.
La svolta sarà l'implementazione con OpenCL.

Solo che Metaquotes morirà giovane durante l'implementazione di questo progetto.

È previsto un supporto completo per questa libreria?

Se sì, può essere fornita in forma binaria?

Se la fornite in forma binaria, è ora di aggiungere una spunta nelle impostazioni del Terminale "Consenti la chiamata alla DLL di MetaQuotes" :0)

 
Solo 11 file mqh sono stati caricati tramite MetaEditor.
 

Salve,

Devo trovare gli autovalori della seguente matrice:


2 3 2

10 3 4

3 6 1


come posso applicare questa libreria a questa matrice? (matrice non simmetrica)

 

Grazie mille per questo ottimo articolo e per il codice allegato! Questo sarà sicuramente lo strumento principale per i miei codici MQL5 pianificati, e mi impedisce di seguire la strada da C++ a DLL a MQL5.

Per quanto riguarda la domanda precedente: nel file linalg.mqh è presente una funzione denominata"NonSymmetricEVD", che non è menzionata nel testo. È sufficiente utilizzare questa routine.

Cordiali saluti, David

 

Ho un'altra domanda: la versione più recente dell'alglib sembra essere la 3.8.2, mentre secondo il testo la versione portata è la 3.5.0.

È previsto un aggiornamento del codice del porting?

Grazie in anticipo,

Davide

 
È stato possibile aggiornare il sorgente all'ultima versione 3.8.2.