O primeiro passo na implementação do algoritmo genético é gerar a população inicial. No algoritmo genético aqui desenvolvido, cada membro desta população é um vetor de comprimento L denominado de cromossomo do indivíduo. O indivíduo formado é uma representação da matriz de transformação . Desse
modo, os componentes do cromossomo do indivíduo são os elementos
determinantes da matriz de escala e os ângulos que determinam a matriz (ver tabela 1). O algoritmo genético implementado gera a população inicial aleatoriamente (ver figura 4). A partir de então os indivíduos que formam a população trocam as informações dos seus genes segundo o operador de recombinação (crossover), que possibilita formar novos indivíduos que podem possuir tanto as melhores como as piores características dos indivíduos iniciais. Os pontos de recombinação são estabelecidos aleatoriamente. A Figura 2 representa o código em MATLAB que implementa a função de crossover.
Após serem gerados, os indivíduos passam através de um operador de mutação. Esse operador é responsável por alterar determinadas partes aleatórias do gene do indivíduo de forma a buscar uma melhoria do indivíduo gerado. O resultado desse operador pode ser positivo caso o indivíduo gerado seja melhor que os indivíduos geradores dele ou negativo caso o indivíduo mutado seja inferior aos indivíduos geradores. A Figura 3 representa o código em MATLAB que implementa a função de mutação.
Para definir quem são os indivíduos mais apropriados para resolver o problema deve-se definir uma função de avaliação (fitness) do algoritmo genético. Após passar pela função de avaliação, os indivíduos são ordenados segundo os valores obtidos pela função de avaliação. O melhor indivíduo, isto é, aquele com menor valor de avaliação, é escolhido para integrar uma nova população. Os outros indivíduos que completarão a nova população são criados da mesma forma que os indivíduos iniciais. Denomina-se de geração cada uma das interações feitas pelo algoritmo genético ao obter uma nova população. Denominamos por execução cada uma das rodadas que o algoritmo realiza com uma população por um determinado número de gerações. Desse modo são executadas tantas iterações quanto forem necessárias para que o algoritmo determine um resultado razoável. Assim, tendo determinado um indivíduo que possua um valor de erro segundo a função de fitness que seja da ordem de , obtêm-se um cromossomo que gera um indivíduo próximo ao indivíduo representativo da matriz de transformação que leva as matrizes abstratas e calculadas às matrizes e respectivamente procuradas.
|