test_rbfn_mul_add

0 Views
0 Downloads
0 Favorites
test_rbfn_mul_add
//+------------------------------------------------------------------+
//|                                  The multiplication and addition |
//+------------------------------------------------------------------+
#include "class_NetRBF.mqh"
#define RAND(min,max) 	 ((rand()/(double)SHORT_MAX)*((max)-(min))+min)
//+------------------------------------------------------------------+
void OnStart()
  {
   double vector[2];         // Input vector
   double out[2];            // The network responses array
   double inpdata[];         // Input teaching data array
   double outdata[];         // Output teaching data array
                             // network creation
   CNetRBF *net;
   int epoch=10000;
   net=new CNetRBF(2,15,2);
   // preparation of data for the teaching
   ArrayResize(inpdata,200);
   ArrayResize(outdata,200);
   int m=0,k=0;
   for(int i=-10; i<10; i+=2)
      for(int j=-10; j<10; j+=2)
        {
         inpdata[m++]=i;
         inpdata[m++]=j;
         outdata[k++]=(i*j);
         outdata[k++]=(i+j);
        }
   // network teaching
   net.Learn(100,inpdata,outdata,epoch,1.0e-8);
   Print("MSE=",net.mse,"  Epoch=",net.epoch," Neurons=",net.neurons);
   // network checking
   string  s="Test 1(*) >> ";
   string s1="Test 1(+) >> ";
   for(int i=1; i<=10; i++)
     {
      int d1=(int)RAND(-10,10),d2=(int)RAND(-10,10);
      vector[0]=d1;
      vector[1]=d2;
      net.Calculate(vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0],0)+" // ";
      s1+=(string)d1+"+"+(string)d2+"="+DoubleToString(out[1],0)+" // ";
     }
   Print(s);
   Print(s1);
   s ="Test 2(*) >> ";
   s1="Test 2(+) >> ";
   for(int i=1; i<=10; i++)
     {
      int d1=(int)RAND(-20,20),d2=(int)RAND(-20,20);
      vector[0]=d1;
      vector[1]=d2;
      net.Calculate(vector,out);
      s+=(string)d1+"*"+(string)d2+"="+DoubleToString(out[0],0)+"("+string(d1*d2)+") // ";
      s1+=(string)d1+"+"+(string)d2+"="+DoubleToString(out[1],0)+" // ";
     }
   Print(s);
   Print(s1);
   // deleting network
   delete net;
  }
//+------------------------------------------------------------------+

Comments