Backtest genética rápida finalizado antes de completar todas as combinações

 

Olá, pessoal,

rodei um backtest hoje por genética rápida e o seguinte acontece:

Quando é iniciado são geradas por exemplo 10175 combinações das mais de 1 milhão que seria caso fosse realizado o algoritmo completo lento. Tudo ocorre bem até que o teste é dado como finalizado quando alcança por volta de 8700/10175.

Sou nova na área dos EAs e não tenho ideia do que pode ser... poderiam dar uma luz?

 

Raquel, bom dia!

se o tester não apresentou nenhum erro, então está OK. Quer dizer que o algoritmo convergiu, atingindo o seu critério de parada.

A ideia do algoritmo genético é encontrar uma possível solução ótima em meio a um grande espaço de busca. No caso o seu espaço são todas as combinações possíveis (>1M). Basicamente a ideia é gerar uma população inicial de n indivíduos, realizar o cruzamento e a mutação (geralmente com o melhor indivíduo da população), gerando assim uma nova população. Cada indivíduo é uma possível combinação do seu espaço de busca. Essa iteração é realizada várias vezes até atingir um possível máximo global, caso aconteça do algoritmo cair em um máximo local, ele pode armazenar o melhor indivíduo da última geração, "matar" todo o resto e gerar uma nova população, continuando as iterações. Se após uma certa quantidade de iterações o melhor indivíduo permanecer o mesmo, ou haver uma diferença mínima entre o da última geração e o seu anterior, o algoritmo encerra a sua busca.

A área de algoritmos evolutivos é bem extensa e frequentemente você encontra publicações de pesquisadores com novas técnicas e/ou melhorias para resolver um determinado problema. Como não temos acesso ao código do algoritmo da MetaQuotes, é possível apenas estimar o seu funcionamento sem grandes detalhes, mas o básico é esse.

Abs. 

 
Romeu Bertho:

Raquel, bom dia!

se o tester não apresentou nenhum erro, então está OK. Quer dizer que o algoritmo convergiu, atingindo o seu critério de parada.

A ideia do algoritmo genético é encontrar uma possível solução ótima em meio a um grande espaço de busca. No caso o seu espaço são todas as combinações possíveis (>1M). Basicamente a ideia é gerar uma população inicial de n indivíduos, realizar o cruzamento e a mutação (geralmente com o melhor indivíduo da população), gerando assim uma nova população. Cada indivíduo é uma possível combinação do seu espaço de busca. Essa iteração é realizada várias vezes até atingir um possível máximo global, caso aconteça do algoritmo cair em um máximo local, ele pode armazenar o melhor indivíduo da última geração, "matar" todo o resto e gerar uma nova população, continuando as iterações. Se após uma certa quantidade de iterações o melhor indivíduo permanecer o mesmo, ou haver uma diferença mínima entre o da última geração e o seu anterior, o algoritmo encerra a sua busca.

A área de algoritmos evolutivos é bem extensa e frequentemente você encontra publicações de pesquisadores com novas técnicas e/ou melhorias para resolver um determinado problema. Como não temos acesso ao código do algoritmo da MetaQuotes, é possível apenas estimar o seu funcionamento sem grandes detalhes, mas o básico é esse.

Abs. 

Ah sim!

Tinha achado que poderia ter algo de muito errado. Sua explicação ajudou a entender muito melhor como funciona a genética rápida... coisa que não havia entendido 100%.

Obrigada!

 
Romeu Bertho:

Raquel, bom dia!

se o tester não apresentou nenhum erro, então está OK. Quer dizer que o algoritmo convergiu, atingindo o seu critério de parada.

A ideia do algoritmo genético é encontrar uma possível solução ótima em meio a um grande espaço de busca. No caso o seu espaço são todas as combinações possíveis (>1M). Basicamente a ideia é gerar uma população inicial de n indivíduos, realizar o cruzamento e a mutação (geralmente com o melhor indivíduo da população), gerando assim uma nova população. Cada indivíduo é uma possível combinação do seu espaço de busca. Essa iteração é realizada várias vezes até atingir um possível máximo global, caso aconteça do algoritmo cair em um máximo local, ele pode armazenar o melhor indivíduo da última geração, "matar" todo o resto e gerar uma nova população, continuando as iterações. Se após uma certa quantidade de iterações o melhor indivíduo permanecer o mesmo, ou haver uma diferença mínima entre o da última geração e o seu anterior, o algoritmo encerra a sua busca.

A área de algoritmos evolutivos é bem extensa e frequentemente você encontra publicações de pesquisadores com novas técnicas e/ou melhorias para resolver um determinado problema. Como não temos acesso ao código do algoritmo da MetaQuotes, é possível apenas estimar o seu funcionamento sem grandes detalhes, mas o básico é esse.

Abs. 

Olá @Romeu Bertho, ótima explicação, ajustaria apenas a informação "encontrar uma possível solução ótima" para encontrar uma solução o mais próxima da ótima, uma vez que a ótima mesmo só através da opção de algoritmo completo lento ou por acaso, no caso de uso de algoritmo genético, e acrescentaria o outro lado da mesma pergunta, que é o algoritmo continuar executando além do limite de 10K, justamente pelo contrário, ou seja, uma maior dificuldade de convergência, onde eventualmente será interrompido pelo algoritmo sem convergir da melhor forma possível, como no caso apresentado.
Sds.,
Rogério Figurelli