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. |