Bibliotheken: ALGLIB - Numerical Analysis Library - Seite 2

 
Als ich meinen Artikel schrieb, verwendete ich ALGLIB. Ich habe es sogar geschafft, den Autor der Bibliothek im Forum etwas zu fragen, was ich damals nicht verstanden habe. Der Autor war sehr nett und hat mir ausführlich geantwortet. Dafür gebührt ihm ein besonderer Respekt und Achtung. Ich bin froh, dass die Arbeit von Bochkanov S.A. von MQ Co.... wahrgenommen wurde.
 
Ich freue mich sehr über die Ankunft dieser Bibliothek. Ich danke Ihnen!
 
MQ-Schönheiten! Seriöse Arbeit!

Ein Beispiel für die Verwendung der Bibliothek ist, dem neuronalen MLP-Netz das Einmaleins beizubringen.

#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;
   // Datenaufbereitung
   patterns.Resize(100,3);
   int m=0;     // erstes Muster
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         patterns[m].Set(0,i/10.0);       // Eingang 1
         patterns[m].Set(1,j/10.0);       // Eingang 2
         patterns[m].Set(2,(i*j)/100.0);  // Ziel
         m++; //nächstes Muster
      }
   // Erstellung eines Netzes mit einer versteckten Schicht (5 Neuronen)
   CMLPBase::MLPCreate1(2,5,1,net);
   // Netzausbildung
   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)); 
   // Überprüfung des Netzes auf Integer-Daten
   string s="Test 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);
   // Überprüfung des Netzes auf gebrochene Daten
   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) // 

:( Ich habe Angst davor, was mit der Cloud passiert, wenn die Benutzer anfangen, die Bibliothek aktiv in ihren Experten zu nutzen.
Dieses einfache Skript wiegt weniger als ein Megabyte.
Dateien:
 
Yurich: Ein Beispiel für die Verwendung der Bibliothek ist das Erlernen des Einmaleins für das neuronale MLP-Netz.

Woher haben Sie dieses Beispiel? ))))))))))))))

Danke, ich war gerade dabei, dasselbe Beispiel für mich zu studieren, aber können Sie herausfinden, wessen Code für das Einlernen des Einmaleins schneller ist, Ihrer https://www.mql5.com/de/code/596 oder der portierte ALGLIB?

 
Danke für die Neuheit.
Der Durchbruch wird die Implementierung mit OpenCL sein.

Allerdings wird Metaquotes bei der Umsetzung dieses Projekts jung sterben.

Ist volle Unterstützung für diese Bibliothek geplant?

Wenn ja, kann sie in binärer Form geliefert werden?

Wenn Sie sie in binärer Form ausliefern, ist es an der Zeit, in den Terminal-Einstellungen ein Häkchen bei "MetaQuotes DLL-Aufruf zulassen" zu setzen :0)

 
Nur 11 mqh-Dateien werden über MetaEditor hochgeladen
 

Hallo,

Ich muss die Eigenwerte der folgenden Matrix finden:


2 3 2

10 3 4

3 6 1


wie kann ich diese Bibliothek auf diese Matrix anwenden? (nicht-symmetrische Matrix)

 

Vielen, vielen Dank für diesen tollen Artikel und den beigefügten Code! Dies wird sicherlich das wichtigste Werkzeug für meine geplanten MQL5-Codes sein, und verhindert, dass ich die C++-zu-DLL-zu-MQL5 Weg gehen.

Zur vorherigen Frage: Es gibt eine Funktion namens"NonSymmetricEVD" in der Datei linalg.mqh, die im Text nicht erwähnt wird. Verwenden Sie einfach diese Routine.

Beste Grüße, David

 

Ich habe noch eine weitere Frage: die neueste Version der alglib scheint 3.8.2. zu sein, während laut Text die portierte Version 3.5.0 ist.

Gibt es Pläne für ein Update des portierten Codes?

Vielen Dank im Voraus,

David

 
Die Quelle konnte auf die neueste Version 3.8.2 aktualisiert werden.