• Nenhum resultado encontrado

CAPÍTULO II: FUNDAMENTAÇÃO TEORICA DOS CLASIFICADORES: ALGO

2.2 Algoritmos Genéticos (AG)

Algoritmos genéticos são métodos de otimização e busca inspirados na teoria da evolução de Darwin que trata as possíveis soluções do problema como “indivíduos” de uma “população”, utilizando um processo evolucionário em que os indivíduos sejam solução de um problema [31, 32].

A ideia era trazer para os sistemas de computação os mecanismos de adaptação natural, utilizando os princípios da natureza como meio para a solução de problemas [33]. Na verdade, os algoritmos genéticos são um dos paradigmas de computação evolutiva. Podem ser citados ainda a programação genética, a programação evolutiva, as estratégias evolutivas e os sistemas classificadores.

A utilização de algoritmos genéticos para o tratamento de otimizações vem apresentando resultados satisfatórios para as aplicações em que os métodos tradicionais de programação não são capazes de solucionar em um tempo computacionalmente viável.

O princípio dos algoritmos genéticos é criar um conjunto inicial com várias possíveis soluções para um problema. Esse conjunto é chamado de população inicial e cada solução pertencente a essa população é chamada de indivíduo. Estes indivíduos devem ser codificados de forma a constituir seu material genético. Neste caso, considera-se que o material genético é um cromossomo, e este, é um indivíduo propriamente dito.

Essa codificação dos indivíduos visa possibilitar a aplicação de operadores genéticos e do conceito de seleção natural sobre as soluções existentes, podendo assim combinar seus materiais genéticos buscando ao longo de várias gerações, indivíduos

24

cada vez mais adaptados, ou seja, um mais adaptado passa a ser uma possível solução para o problema proposto.

A evolução de um algoritmo genético ocorre de acordo com uma série de parâmetros que devem ser informados inicialmente para o algoritmo. Embora existam na literatura sugestões para tal, alguns desses parâmetros não possuem regras para sua escolha, sendo assim definidos empiricamente e sofrendo ajustes de acordo com a qualidade dos resultados obtidos. Essas escolhas implicarão diretamente na forma com que o algoritmo genético irá se portar diante do problema escolhido. Por exemplo: um parâmetro relacionado às taxas de cruzamentos entre os indivíduos de uma população pode possibilitar uma convergência prematura desse conjunto de soluções ou então, em um caso totalmente oposto, fazer com que essa população nunca convirja [31, 34].

2.2.1- Desenvolvimento do algoritmo genético

Antes de começar a desenvolver um sistema dessa natureza, deve-se, primeiramente, conhecer claramente o tipo de problema de que se trata e analisar o formato de uma possível solução para ele. É importante ter certeza quanto às características de uma solução e também quanto às possíveis restrições que devem ser levadas em consideração. O passo seguinte é: como se pode codificar essa solução (indivíduo)? A codificação de uma solução é a representação da mesma por meio de um material genético, ou seja, de uma sequência de genes. Uma alternativa muito utilizada é a representação de uma solução por meio de um sistema binário. Por exemplo: uma sequência como “100101” é um indivíduo com 6 (seis) genes, possuindo 2 (dois) alelos, “0” (zero) e “1” (um).

Durante o processo de codificação, deve ser possível avaliar um indivíduo a partir de seu código genético (cromossomo). Esta é a medida de avaliação do genoma que resulta em uma nota. Esta medida chama-se adaptabilidade ou fitness, que é a medida de quão otimizado ou adequado é um genoma para resolver um determinado problema ou meta. Quanto maior essa nota, mais adaptado ou adequado está o genoma ao problema específico. O objetivo do algoritmo genético é otimizar as soluções para a função fitness específica, sendo que a população sofre a seleção baseada na nota de adaptabilidade.

Deve-se ainda visar a uma representação na qual a aplicação dos operadores genéticos (ainda não descritos) seja facilitada.

25

A representação deve garantir que todo o domínio de soluções possa ser alcançado. Uma vez estabelecida a forma de codificação das soluções, pode-se agora introduzir de modo mais claro e específico os conceitos de operadores genéticos e de seleção natural.

2.2.2- Operadores genéticos

A partir da observação da forma com que os seres vivos evoluem, foram desenvolvidos alguns operadores genéticos com a finalidade de manipular e transmitir as cargas genéticas dos indivíduos ao longo de várias gerações. São eles: operador de cruzamento e mutação. A seguir, são apresentados mais detalhes destes operadores.

2.2.2.1- Operador de cruzamento

O operador de cruzamento, conhecido como crossover é um operador responsável por combinar o material genético de dois indivíduos distintos, gerando dois filhos com características combinadas de seus pais. É capaz de analisar diversos locais no espaço de busca, sendo aplicado de acordo com uma taxa de crossover;

Existem algumas variações quanto à implementação do operador de crossover. Para aplicar esse operador, realizando uma combinação de dois materiais genéticos, é necessário estabelecer um ponto chamado de ponto de corte. Assim, como o nome já indica, esse ponto corta o cromossomo em duas sequências determinando que a primeira parte de um cromossomo será combinada com a segunda parte de outro, e vice-versa.

Após essa combinação, os indivíduos gerados apresentam o mesmo tamanho de seus progenitores, sendo constituídos por uma parte de cada um deles. É comum realizar também dois cortes nos cromossomos para aplicar o operador de crossover e, sendo assim, a troca do material genético entre os dois indivíduos é entre esses dois pontos.

Essas duas implementações citadas caracterizam respectivamente o crossover com um ponto de corte e o crossover com dois pontos de corte. Uma terceira alternativa para esse operador é conhecida como crossover com máscara. Neste caso, é gerada uma máscara do mesmo tamanho de um cromossomo. Analisa-se a máscara, e os genes atribuídos ao indivíduo gerado são obtidos a partir de uma regra. Quando o valor da

26

máscara é verdadeiro (um), utiliza-se o gene de um pai A, quando o valor da máscara é falso (zero), utiliza-se o gene de um pai B.

2.2.2.2- Operador de mutação

O operador de mutação é responsável por garantir a diversidade da população, realizando pequenos ajustes nas soluções encontradas. Ele é capaz de evitar que o algoritmo genético fique estagnado em um mínimo local, modificando alguns genes da população de acordo com uma taxa de mutação.

A implementação do operador de mutação é bem simples. Durante uma geração, alguns genes são selecionados aleatoriamente para sofrer mutação. Quando se utiliza uma representação binária, basta inverter o gene selecionado. Por exemplo: seleciona-se um gene “n” e, se este possui valor 1 (um), então é trocado para 0 (zero). Em casos de representação diferente da binária e existindo mais de dois valores de alelos, deve-se estabelecer uma regra para a substituição do gene encontrado.

2.2.3- Métodos de seleção

Para que seja possível aplicar o operador de crossover é necessário selecionar um conjunto de indivíduos para combinar seus materiais genéticos. Esse processo de seleção é conhecido como seleção natural, já citado no início desta seção como a explicação de Charles Darwin [33] para a evolução a adaptação dos seres vivos ao longo do tempo. Para que exista uma convergência adequada da população, procura-se reproduzir da melhor maneira esse processo de seleção executado pela natureza. Para que isso seja possível, é preciso levar em consideração o grau de adaptação, fitness, de cada indivíduo como referência para determinar quais deles serão submetidos ao cruzamento. Existem várias técnicas utilizadas para simular a seleção natural. Dentre elas podem ser citadas: seleção proporcional ao desempenho, seleção por torneio, seleção por posição e seleção por truncatura. O número de indivíduos que são selecionados depende de uma taxa de cruzamento especificada no início do sistema.

27 2.2.4- Métodos de atualização da população

A população manipulada pelo GA é de tamanho fixo, ou seja, possui um número pré-estabelecido de indivíduos e esse número não pode ser aumentado ou diminuído. Tendo em vista que essa característica deve ser mantida, depara-se com um novo problema: a substituição de indivíduos na população.

Quando são gerados indivíduos por meio dos operadores genéticos, esses indivíduos devem ser colocados na população e, para que o tamanho da população seja mantido é necessário que outros indivíduos sejam retirados dela.

Depois de um cruzamento existem vários métodos para realizar a substituição de indivíduos na população. Os métodos mais utilizados são [33]:

 substituição imediata: os novos indivíduos gerados substituem os seus geradores;

 substituição por fator cheio: cada novo indivíduo substitui o indivíduo mais parecido com ele na população.

2.2.5- Passos de um Algoritmo Genético

A Figura 2.1 mostra os principais de um algoritmo genético.

Pop. Inicial Aptidão Seleção Cruzamento Mutação

ponto de corte gene mutado

Figura 2.1: Principais passos de um algoritmo genético. 001100101 1 110101101 1 010110011 1 111001100 1 110100101 110101101 110100101 0011 00101 001101101 001101101 110101101 110101011 110111011 010110 011 010110101 010110101

28

Assim, os principais passos de um algoritmo genético são:

1. Criar a população inicial gerando aleatoriamente os genes dos indivíduos; 2. Realizar a avaliação do fitness (aptidão) de cada indivíduo;

3. Submeter a população ao processo de seleção natural. Neste passo está incluso tanto a própria seleção dos indivíduos, quanto a aplicação dos operadores de cruzamento e de mutação;

4. Realizar uma avaliação do fitness (aptidão) dos indivíduos gerados pelo passo anterior;

5. Atualizar a presente população com os indivíduos gerados, mantendo o tamanho da população inalterado; e

6. Caso seja satisfeito um critério de parada, retorne o melhor indivíduo, caso contrário volte ao passo ”4”. O critério de parada pode ser tanto um número máximo de gerações quanto um erro mínimo desejado para uma solução.

Documentos relacionados