Библиотеки: ALGLIB - библиотека численного анализа - страница 2

 
Я когда писал свою статью, то использовал ALGLIB. И даже удалось на форуме у автора библиотеки кое-что спросить, что мне было тогда непонятно. Автор был весьма любезен и подробно мне ответил. За что ему отдельный респект и уважуха. Рад, что работа Бочканова С.А. была замечена MQ Co...
 
Очень рад появлению этой библиотеки. Спасибо!
 
Красавцы MQ! Серьезная работа!

Пример использования библиотеки - обучение нейронной сети MLP таблице умножения.

#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;
   // подготовка данных
   patterns.Resize(100,3);
   int m=0;     // first pattern
   for(int i=1; i<=10; i++)
      for(int j=1; j<=10; j++)
      {
         patterns[m].Set(0,i/10.0);       // input 1
         patterns[m].Set(1,j/10.0);       // input 2
         patterns[m].Set(2,(i*j)/100.0);  // target
         m++; //next pattern
      }
   // создание сети с одним скрытым слоем(5 нейронов)
   CMLPBase::MLPCreate1(2,5,1,net);
   // обучение сети
   CMLPTrain::MLPTrainLM(net,patterns,100,1e-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)); 
   // проверка сети на целочисленных данных
   string s="Тест 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);
   // проверка сети на дробныx данных
   s="Тест 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) // 

:( Вот только боюсь подумать, что будет с облаком, когда пользователи начнут активно использовать библиотеку в своих экспертах.
Данный простой скрипт весит под мегабайт.
Файлы:
 
Yurich:Пример использования библиотеки - обучение нейронной сети MLP таблице умножения.

где взяли такой пример? )))))))))))))) 

спасибо, только собирался такой же примерчик для себя изучить, а можете выяснить, чей код обучения НС таблице умножения быстрее обучится, ВАш https://www.mql5.com/ru/code/596 или же портированный ALGLIB ?

 
Спасибо за новинку.
Прорывом будет реализация с использованием OpenCL.

Только вот Метаквоты помрут молодыми при реализации этого проекта.

Планируется ли полноценная поддержка данной библиотеки?

Если - да, то может поставлять её в двоичном виде?

Если поставлять в двоичном виде, то пора добавлять галочку в настройках Терминала "Разрешить вызов  DLL MetaQuotes"  :0)

 
Через MetaEditor закачивает только 11 файлов mqh
 

Здравствуйте,

Мне нужно найти собственные значения следующей матрицы:


2 3 2

10 3 4

3 6 1


Как я могу применить эту библиотеку к этой матрице? (несимметричная матрица)

 

Большое спасибо за эту замечательную статью и приложенный код! Это, безусловно, будет основным инструментом для моих планируемых MQL5-кодов, и не позволит мне идти по пути C++-to-DLL-to-MQL5.

По поводу предыдущего вопроса: в файле linalg.mqh есть функция"NonSymmetricEVD", на которую нет ссылки в тексте. Просто воспользуйтесь этой функцией.

С уважением, Дэвид

 

У меня есть еще один вопрос: самая новая версия alglib, похоже, 3.8.2, тогда как, согласно тексту, портированная версия - 3.5.0.

Планируется ли обновление портированного кода?

Заранее спасибо,

Дэвид

 
The source could be updated to the last version 3.8.2.