Algorítmo Genético - Canhão

Algoritmo Genético
Para começarmos a desenvolver o código devemos primeiro entender a lógica por trás do Algoritmo Genético.

Como ele funciona


Como podemos ver por esse fluxograma estes são os passos para o funcionamento do Algoritmo Genético. Nós inicializamos o algoritmo e o primeiro passo dele é inicializar a população inicial definindo seus cromossomos, após isso avaliamos a aptidão de toda a população e checamos se a aptidão atinge o critério que foi solicitado para parar o algoritmo, caso tenha atingido o programa se encerra caso contrário entraremos em um loop até que a aptidão atinja o critério.O primeiro passo após perceber que a aptidão não atinge o que foi solicitado é fazer a seleção dos indivíduos escolhendo um dos possíveis métodos (os mais conhecidos são o método do elitismo, método da roleta e o método do torneio), depois efetuamos a reprodução dos indivíduos escolhidos pela seleção e verificamos se há mutação. Após estes passos retornamos para a avaliação da aptidão desta nova geração e checagem se alguma das aptidões atingiu o critério de parada.

Explicando os passos
Explicando um pouco melhor dos 7 passos citados no paragrafo anterior utilizando um problema proposto em sala de aula que é fazer com que um canhão atinja um alvo utilizando algoritmo genético. No caso do canhão está sendo utilizado o método do elitismo. No caso do canhão foi utilizado o cruzamento de ponto fixo.
 * 1) Definição de Cromossomo: Neste passo devemos atribuir todas as variáveis necessárias para alcançarmos o resultado desejado. No caso do canhão foi atribuído ao cromossomo as variáveis ângulo forca e aptidão.
 * 2) Definição da população inicial: Trata-se do tamanho da população a ser utilizada durante todo o algoritmo. É recomendado que seja de tamanho par e de preferência que seja na base 2, como 4, 8, 16, 32. No caso do canhão estão sendo utilizados 32 indivíduos na população inicial.
 * 3) Avaliação de aptidão: Esta avaliação irá ser diferente para cada problema onde o objetivo eh alcançar a aptidão mais próxima do critério de parada. No caso do canhão a avaliação da aptidão será o cálculo da distancia entre o projétil após alcançar o chão e o alvo.
 * 4) Seleção: Os métodos de seleção mais utilizados para fazer a seleção de alguns  indivíduos da população são:
 * 5) Elitismo: Consistem em selecionar os k melhores indivíduos e eliminar os k piores elementos.
 * 6) Roleta: Consiste em dividir os cromossomos em porcentagens de acordo com suas aptidões. Após isso é sorteado uma porcentagem e o indivíduo que estiver dentro desta faixa sorteada é selecionado.
 * 7) Torneio: Consiste em uma disputa como se fosse uma chave de campeonato, e assim como no método roleta, é  separado a porcentagem de chance de cada cromossomo conforme suas aptidões. Este sorteio será feito entre k indivíduos e dentre eles o que for escolhido avança para a próxima fase. Este sorteio continua a ser feito até que todos os indivíduos sejam feitos. No final teremos um cromossomo vencedor.
 * 1) Cruzamento: Os indivíduos selecionados são combinados pelo métodos de CrossOver que pode ser feito de 3 maneiras, sendo elas:
 * 2) Ponto fixo: um ponto definido no indivíduo onde é feita a divisão das demais informações e as demais informações são trocados com outro indivíduo. Este ponto não se altera de posição.
 * 3) Ponto Aleatório: um ponto é definido no indivíduo onde é feita uma divisão e os demais genes são trocados com o outro indivíduo. Esse ponto se altera de posição.
 * 4) Multipontos: um seguimento do cromossomo é escolhido e este é trocado com o outro cromossomo.
 * 1) Mutação: O código genético do indivíduo é gerado aleatoriamente. A mutação é muito importante para manter a diversidade da população e a pressão seletiva. Em geral, é ideal que ela mantenha uma taxa baixa. No caso do canhão foi utilizado uma porcentagem baixa de 2%;
 * 2) Condição de parada: Trata-se da condição necessária para que o algoritmo atinja seu fim. Em geral, é utilizado uma quantidade X de iterações e a solução necessária seja encontrada. No caso do canhão foi utilizado a condição de 50 iterações ou 80% da população atingir o alvo.

Exemplo em um jogo.
Como citado no começo deste documento foi proposto um problema em sala de aula que é fazer com que um canhão atinja um alvo utilizando algoritmo genético.
 * Definição do Cromossomo: foi definido nesse problema que os cromossomos serão o ângulo e a, força do projétil e aptidão.
 * Definição da População Inicial: a população inicial foi definida como 32 (representando o número de projéteis a serem disparados).
 * Avaliação de Aptidão : é calculado a distancia fazendo a subtração entre a posição do tiro após o projétil atingir o chão e o alvo. A função atualiza a variável aptidão do indivíduo analisado.
 * Seleção: O método de seleção escolhido para esse caso foi o Elitismo.
 * Cruzamento/Reprodução: Foi utilizado para esse problema o método de cruzamento Ponto Fixo.
 * Mutação: a mutação irá randomizar o ângulo de disparo do canhão entre 0º e 90º e também randomizar o tamanho da força entre 0 e 100.
 * Condição de Parada: O algoritmo irá parar de realizar as iterações quando forem feitas 50 iterações ou quando o 80% dos projéteis atingir o alvo.

Vídeo demonstrativo
LINK.

Página escrita por : Carlos A. B. Mariano - 467072 - 6º período de Tecnologia em Jogos Digitais - Pela Pontifícia Universidade Católica de Minas Gerais.