Algoritmo Genetico no problema do Canhão

Algoritmos Genéticos
É um algoritmo desenvolvido por John Holland (1975) e David Goldberg (1989) que foi inspirado na teoria da Evolução das espécies: onde as populações mais adaptadas sobrevivem.

A mecânica do algoritmo consiste em evoluir um conjunto de indivíduos ao longe de gerações, avaliando a adaptação dos indivíduos, selecionando os melhores, cruzando-os e aplicando mutações pontuais.

Amplamente utilizado em problema de difícil manipulação pelas técnicas tradicionais de otimização.

O algoritmo funciona através de algumas etapas importantes:
 * 1) Definição do cromossomo.
 * 2) Geração da população inicial
 * 3) Calculo da aptidão
 * 4) Método de seleção
 * 5) Método de reprodução
 * 6) Método de mutação
 * 7) Condição de parada

Algoritmo do canhão
O objetivo desse algoritmo é fazer com que um canhão consiga acertar um alvo que esta a sua frente. O canhão pode sofrer alterações em seu ângulo e na força do tiro.

Definição do cromossomo
O cromossomo do canhão representará um canhão e terá as informações de ângulo e poder do tiro.

Geração da população inicial
A população inicial pode ser alterada pelo usuário no inspector, já que ela não eh especificada. O algoritmo foi feito para múltiplos de 2 então valores fora desse grupo podem não funcionar.

Calculo da aptidão
Para calcular a aptidão, basta fazer uma medição entre o local que o tiro acertou e o alvo. Os melhores indivíduos serão aqueles com o menor valor.

Método de seleção
O método de seleção que eu utilizei foi Elitismo. Ele consiste em manter os melhores X indivíduos da população, eliminar os piores e preencher o restante da população com os filhos dos melhores.

Para que este método funcione bem nesse algoritmo, é mais fácil ordenar o vetor de cromossomos baseado no cálculo da aptidão.

Vale lembrar que é recomendado não eliminar a metade da população total, para manter uma variedade melhor de possíveis indivíduos.

Método de reprodução
O método de reprodução utilizado foi o CrossOver. Este método consiste em gerar filhos utilizando o ângulo do Pai A, com o poder do pai B, e o outro filho terá o ângulo do Pai B e o poder do Pai A. Este processo é repitido até preencher todo o vetor da população.

Método de mutação
Inicialmente o usuário deverá escolher qual o percentual de mutação possível desejada através do inspector. O método sorteia um numero aleatório de 0 a 100 e checa se ele está dentro do percentual escolhido pelo usuário. Ao ativar o método, outro numero aleatório sorteado numa chance de 50% define qual dos parâmetros sofrerão mutação. A mutação jogará um valor aleatório dentro dos valores aceitáveis para o ângulo ou para o poder deste cromossomo filho.

Condição de parada
A condição de parada é muito simples, o código continuará até que algum canhão acerte o tiro no alvo, ou que o algoritmo atinja um máximo de iterações definida pelo usuário no inspector.

Clique aqui para visualizar um exemplo em vídeo deste exemplo.

Página feita por: Johann Robert Ribeiro Moia