Ir para o conteúdo

Otimização

Definir o algoritmo genético

Ao discutir como os cBots podem ser otimizados, mencionámos que os cBots podem ser refinados usando o método de algoritmo genético. Neste guia, explicamos exatamente o que é e como funciona.

O método de algoritmo genético é baseado na teoria da seleção natural. Esta teoria afirma que apenas os indivíduos mais aptos sobrevivem para reprodução subsequente.

Na otimização de cBot, cada passagem de otimização é considerada um indivíduo. Para avaliar passagens individuais, o algoritmo genético calcula uma certa pontuação de aptidão para cada passagem e compara esta pontuação com todas as outras passagens.

Para funcionar, o algoritmo genético precisa de uma população inicial. Para gerá-la, o otimizador executará várias passagens diferentes com parâmetros aleatórios. Após criar a sua população inicial, o algoritmo iniciará o processo de encontrar a passagem de otimização mais apta. Este processo continua até que as pontuações de aptidão das passagens filhas comecem a estagnar e convergir. Neste ponto, o algoritmo é interrompido.

Etapas do algoritmo genético

Qualquer algoritmo genético tem as seguintes etapas.

graph TB
  B([Seleção]) ==> C([Cruzamento]);
  C ==> D([Mutação]);
  D ==> B;

As etapas são explicadas da seguinte forma.

Seleção

Durante esta etapa, o algoritmo encontra as duas passagens de otimização mais aptas usando as suas respetivas pontuações de aptidão.

Cruzamento

Após encontrar as duas passagens de otimização mais aptas, o algoritmo usa-as para criar novas passagens filhas (ou descendentes) usando combinações dos valores dos parâmetros de ambas as passagens parentais.

Exemplo

Se o seu cBot tiver quatro parâmetros diferentes para otimização, o algoritmo obterá os valores do primeiro e segundo parâmetros das passagens descendentes de um pai e o terceiro e quarto parâmetros do segundo pai.

Mutação

Nesta etapa, o algoritmo muta as passagens descendentes modificando aleatoriamente um ou mais valores de parâmetros.

Após a etapa de mutação, o otimizador executará uma nova passagem de otimização descendente. Subsequentemente, repetirá todas as etapas, mas apenas se a pontuação de aptidão de uma passagem descendente for maior do que a última passagem de otimização mais apta. Tal resultado significaria que há espaço para melhoria, indicando que a otimização deve continuar.

Caso contrário, o algoritmo aumentará o seu contador de estagnação. Se o contador de estagnação atingir o valor do parâmetro de período de estagnação do algoritmo, o processo de otimização será automaticamente interrompido.

Parâmetros do algoritmo genético

O algoritmo genético tem vários parâmetros que usa durante a sua vida útil. Estes parâmetros não podem ser alterados.

Parâmetro Definição
Tamanho da população O tamanho máximo de uma população ou o número máximo de passagens feitas durante cada iteração de otimização.
Contagem máxima de iterações O número máximo de iterações de otimização realizadas pelo algoritmo.
Período de estagnação O valor máximo do contador de estagnação. Se este valor for atingido, o algoritmo é interrompido.
Percentagem de elite Este valor é usado para selecionar X% de indivíduos com as pontuações de aptidão mais altas da iteração atual do algoritmo. Estas passagens sobreviverão para a próxima iteração.
Percentagem do tamanho do torneio Este valor é usado para selecionar X% de indivíduos de uma iteração para encontrar passagens parentais.
Percentagem de migrantes Este valor é usado para adicionar X% de passagens criadas aleatoriamente durante cada nova iteração ou geração de população.
Percentagem de mutação A percentagem dos parâmetros das passagens descendentes a serem mutados.
Percentagem de probabilidade de mutação A percentagem de passagens descendentes a serem mutadas. As passagens não incluídas nesta percentagem não passarão pela etapa de mutação.