Algorithm Optimisation Championship. - page 75

 
Has anyone tried the text task? What were the results?
 
If no one from the MetaQuotes administration shows up here before 11 July, the championship will not be possible, as the FF generation procedure for the championship will not be carried out without them.
 

Now let's see what the regular tester is capable of in the text problem, the optimization conditions are the same as in the presented code - the text has not changed, i.e. 49 letters.

ZS. I have found, in my opinion, improper work of EA with library in the tester, I will report in error thread.

 

2016.06.29 02:15:16 Statistics optimization done in 1 minutes 18 seconds

2016.06.29 02:15:16 Tester genetic optimization finished on pass 23552

Optimization finished with best result 35 (that many letters the optimizer could correctly name out of 49).

Since there is no option to adjust number of passes/runs of FF in the standard tester, I have to run my algorithm with the same number of FF runs if I want to compare my algorithm with the standard one.

My result:

2016.06.29 02:27:30.817 Script OAC Dik (GBPUSD,H1) Time: 475397 µs; 0.47539700 c

2016.06.29 02:27:30.817 Script OAC Dik (GBPUSD,H1) FF Runs: 23552

2016.06.29 02:27:30.817 Script OAC Dik (GBPUSD,H1) Max: 42.00000000

Although, the tester was optimizing on 4 cores and my script on 1 core, but I got the result 100+ times faster by time.

Here is the text of the Expert Advisor for testing the in-house optimizer in the task about the text:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
// тестовая фитнес функция чемпионата, не известна участникам
#import "FFtext.ex5"
int    GetParamCount (); 
void   GetParamProperties (double &min, double &max, double &step); 
double FF (double &array []); 
int    GetCountRunsFF (); 
void   PrintCodeToFile (double &param []); 
#import
//+------------------------------------------------------------------+

//--- input parameters
input int      Input1  = 0; 
input int      Input2  = 0; 
input int      Input3  = 0; 
input int      Input4  = 0; 
input int      Input5  = 0; 
input int      Input6  = 0; 
input int      Input7  = 0; 
input int      Input8  = 0; 
input int      Input9  = 0; 
input int      Input10 = 0; 
input int      Input11 = 0; 
input int      Input12 = 0; 
input int      Input13 = 0; 
input int      Input14 = 0; 
input int      Input15 = 0; 
input int      Input16 = 0; 
input int      Input17 = 0; 
input int      Input18 = 0; 
input int      Input19 = 0; 
input int      Input20 = 0; 
input int      Input21 = 0; 
input int      Input22 = 0; 
input int      Input23 = 0; 
input int      Input24 = 0; 
input int      Input25 = 0; 
input int      Input26 = 0; 
input int      Input27 = 0; 
input int      Input28 = 0; 
input int      Input29 = 0; 
input int      Input30 = 0; 
input int      Input31 = 0; 
input int      Input32 = 0; 
input int      Input33 = 0; 
input int      Input34 = 0; 
input int      Input35 = 0; 
input int      Input36 = 0; 
input int      Input37 = 0; 
input int      Input38 = 0; 
input int      Input39 = 0; 
input int      Input40 = 0; 
input int      Input41 = 0; 
input int      Input42 = 0; 
input int      Input43 = 0; 
input int      Input44 = 0; 
input int      Input45 = 0; 
input int      Input46 = 0; 
input int      Input47 = 0; 
input int      Input48 = 0; 
input int      Input49 = 0; 

double param []; 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit () 
{ 
  ArrayResize (param, GetParamCount ()); 
  
  param [0] = Input1; 
  param [1] = Input2; 
  param [2] = Input3; 
  param [3] = Input4; 
  param [4] = Input5; 
  param [5] = Input6; 
  param [6] = Input7; 
  param [7] = Input8; 
  param [8] = Input9; 
  param [9] = Input10; 
  param [10] = Input11; 
  param [11] = Input12; 
  param [12] = Input13; 
  param [13] = Input14; 
  param [14] = Input15; 
  param [15] = Input16; 
  param [16] = Input17; 
  param [17] = Input18; 
  param [18] = Input19; 
  param [19] = Input20; 
  param [20] = Input21; 
  param [21] = Input22; 
  param [22] = Input23; 
  param [23] = Input24; 
  param [24] = Input25; 
  param [25] = Input26; 
  param [26] = Input27; 
  param [27] = Input28; 
  param [28] = Input29; 
  param [29] = Input30; 
  param [30] = Input31; 
  param [31] = Input32; 
  param [32] = Input33; 
  param [33] = Input34; 
  param [34] = Input35; 
  param [35] = Input36; 
  param [36] = Input37; 
  param [37] = Input38; 
  param [38] = Input39; 
  param [39] = Input40; 
  param [40] = Input41; 
  param [41] = Input42; 
  param [42] = Input43; 
  param [43] = Input44; 
  param [44] = Input45; 
  param [45] = Input46; 
  param [46] = Input47; 
  param [47] = Input48; 
  param [48] = Input49; 
  //---
  return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit (const int reason) 
{ 
  PrintCodeToFile (param); 
  //---
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick () 
{ 
  //---
}
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester () 
{ 
  double ret = FF (param); 
  
  //---
  return (ret);
}
//+------------------------------------------------------------------+

Of course, and I'm sure of it, if you run optimization in the tester several times to be sure of the results, you'll probably get better results. But I'm honestly too lazy to clean the cache a hundred times and wait so long. But if someone has plenty of time - can pay off a few times and get the average reliable result staff optimizer.

To be honest, I'm surprised with the results of in-house optimizer. I expected to see much worse results (no offense to MQ), because it uses binary GA. Let me remind you, it's a very complicated task, not only do I need to pick the best option out of innumerable options for a limited number of runs, but FF is a discrete surface where the algorithm can't get a foothold.

ZZZI:

"reako-scientific article zhovataye zhevataye mt'yuipa" - this was collected by a staff tester

"seldom a scientific paper combines these two types" - and this is the text of the task.

ZZZI. attached *.set file of advisor with better result.

Files:
 
Hello! Anybody here...?
 
Reading.
 

Been on holiday. Where is the post with the final connection files attached and options (1 and 2) and preferably an argument as to why option 2 is needed?

Since the disadvantage of this option I wrote earlier and did not get an answer

В примере библиотеки участника по 2-му есть импорт FF и в скрипте запуска и в библиотеке участника. Но если я пришлю ex файл, какой путь импорта ff туда зашивать? Как запускать на другой FF? Не продумано.

Thought this question will be solved by the participants when I'm gone (

 
Shit, everyone's fighting and scattering
 
Igor Volodin:

Been on holiday. Where is the post with the final connection files attached and options (1 and 2) and preferably an argument as to why option 2 is needed?

Since the disadvantage of this option I wrote earlier and did not get an answer

Thought the issue will be resolved by the participants when I'm gone (

Use connection method by 2nd variant. Some participants believe that there is a lot of work to remake their algorithms for the 1-st variant. While we can easily make any algorithm for variant 2. Therefore this issue is settled.
Disadvantage of the 2nd option in a different way, but in the championship it is acceptable.
Path to the standard libraries "ff.ex5"
 
Igor Volodin:
Oh, man, everyone's all torn up and scattered.
I'm here. I'm over here.
We are waiting for MQ representatives, without them the championship cannot be held, as only they can be trusted to generate the key for FF.