MetaTrader 5 Strategy Tester! - страница 44

 
fxsaber:
Как освобожусь, сделаю тесты Вашей FF. По поводу крутости - сами себе противоречите.

Где противоречие? Я ж сказал - оптимизатор МТ самый эффективный из всех свободно доступных в мире, противоречий нет.

Предложенная задача с текстом оформлена в виде библиотеки *.ex5, эксперт для решения задачи в оптимизаторе МТ дан по ссылке выше. Результаты сравнить будет очень интересно. 

 
Andrey Dik:

Результаты сравнить будет очень интересно. 

Возможно, еще кто-нибудь присоединится.
 
#import "FFtext.ex5" // https://www.mql5.com/ru/forum/852/page43#comment_3857181
  int    GetParamCount ();
  void   GetParamProperties (double &min, double &max, double &step);
  double FF ( const double &array [] );
  void   PrintCodeToFile (double &param []);  
#import

#define OnStart TmpStart
  #include "testpso.mq4" // https://www.mql5.com/en/blogs/post/683577
#undef OnStart

class JooFF: public BaseFunctor
{
public:
  JooFF( void ) : BaseFunctor(FFtext::GetParamCount())
  {
    for(int i = 0; i < this.params; i++)
      FFtext::GetParamProperties(this.min[i], this.max[i], this.steps[i]);
  }
  
  virtual void test( const int loop )
  {
    Print("Optimizing " + typename(this));
    
    Swarm swarm(params, max, min, steps);
    swarm.optimize(this, loop);
    
    double result[];    
    swarm.getSolution(result);

    FFtext::PrintCodeToFile(result);
  }
  
  virtual double calculate( const double &vec[] )
  {
    return(FFtext::FF(vec));
  }  
};

void OnStart()
{  
  JooFF jooFF;
  
  const ulong StartTime = GetMicrosecondCount();
  
  PSOTests::run(1000);
  
  Print("Время: " + (string)(GetMicrosecondCount() - StartTime) + " мкс");
}

Результат

Optimizing JooFF
PSO[49] created: 245/15
PSO Processing...
PSO Finished 134584 of 245000 planned passes: true
Время: 1976275 мкс

decodeFF.csv

ра;бо науав!м к атья аша ?ааааэ аебе !    юаё  ва

Т.е. данная МРЧ-реализация не справилась с задачей совсем, либо я не умею ей пользоваться.

 
Andrey Dik:

Просьба приложить ex5-алгоритма (если исходники закрыты) и пример Script OAC Dik его использования на данной FF.

Хочется погонять Ваш алгоритм.

 
fxsaber:
Возможно, еще кто-нибудь присоединится.

Уже:

 

rm(list=ls());gc()


library(GenSA)


letters_s <- c(LETTERS, month.name, 1, 2, ' ')

print(letters_s)


set.seed(1)


strings <- letters_s[round(runif(49, 1, 41))]

print(strings)


predictor_number <- 49


par_v <- as.numeric(runif(predictor_number, min = 1, max = length(letters_s)))

par_low <- as.numeric(rep(1, times = predictor_number))

par_upp <- as.numeric(rep(length(letters_s), times = predictor_number))


fitness_f <- function(par){

letters_s <- letters_s

strings <- strings

return(as.numeric(-sum(strings == letters_s[round(par)])))

# print(-sum(strings == letters_s[round(par)]))

}


start <- Sys.time()


sao <- GenSA(par = par_v, fn = fitness_f, lower = par_low, upper = par_upp

     , control = list(max.call = 45000, smooth = FALSE, simple.function = FALSE))


trace_ff <- data.frame(sao$trace)$function.value

plot(trace_ff, type = "l")

percent(- sao$value)

final_vector <- letters_s[round(sao$par)]


Sys.time() - start


print(sum(letters_s[round(sao$par)] == strings))



 Копия задачи, только с английскими буквами. время работы 2 секунды. Если я не ошибся в вопросе или в теме.

 

 
Alexey Burnakov:
Поясните, пожалуйста, график. Если не тяжело, немного комментариев в коде хотелось бы видеть.
 
fxsaber:
Поясните, пожалуйста, график. Если не тяжело, немного комментариев в коде хотелось бы видеть.

Это сходимость по целевой фукнции: совпадение последовательности символов в векторе длиной 49 с вектором, подгоняемым симуляцией отжига (порядок символов важен). Алфавит из 41 символа...

Задачка колется на 100% менее чем за 2 секунды.

 
Alexey Burnakov:

Это сходимость по целевой фукнции: совпадение последовательности символов в векторе длиной 49 с вектором, подгоняемым симуляцией отжига (порядок символов важен). Алфавит из 41 символа...

Задачка колется на 100% менее чем за 2 секунды.

Результаты и само решение непонятно. Поясните пожалуйста.

ЗЫ. не вижу в коде использование библиотеки задачи, посему не факт, что ФФ считается идентично. 

 
fxsaber:

decodeFF.csv

ра;бо науав!м к атья аша ?ааааэ аебе !    юаё  ва

Т.е. данная МРЧ-реализация не справилась с задачей совсем.

Ну вот, говорю же, задача со сферой это фантик.
 
Andrey Dik:
Ну вот, говорю же, задача со сферой это фантик.
 данная МРЧ-реализация не справилась с задачей совсем, либо я не умею ей пользоваться.
Причина обращения: