crossover e mutação

Propaganda
Inteligência Artificial
Algoritmo Genético
Prof. Marcelo B. de Almeida
Introdução aos Algoritmos Genéticos
“Quanto melhor um indivíduo se adaptar
ao seu meio ambiente, maior será sua
chance de sobreviver e gerar descendentes”
Charles Darwin
Algoritmos Genéticos, AGs, são métodos de otimização e busca inspirados nos
mecanismos de evolução de populações de seres vivos.
Estes algoritmos seguem o principio da seleção natural e sobrevivência do mais
apto, declarado pelo naturalista e fisiologista inglês Charles Darwin.
Otimização é a busca da melhor solução para um dado problema. Consiste em tentar
várias soluções e utilizar a informação obtida neste processo de forma a encontrar
soluções cada vez melhores.
Introdução aos Algoritmos Genéticos
Exemplo:
Achar o ponto máximo da função: f(x)= x.sen(10. .x)+1 no intervalo -1 ≤ x ≤2
1 – Passo: Gerar uma população inicial de “cromossomos” que é formada por um
conjunto aleatório de cromossomos que representam possíveis soluções do problema
a ser resolvido. Ex.:
S1=1000101110110101000111 22 bit’s
Converter S1 em decimal -> b10 =2288967
Colocar b10 no intervalo do problema [-1,0; 2,0] utilizando a fórmula
b10
x = min + (max – min) ------2L – 1
2288967
x = -1 + (2 +1) ----------- = 0,637197
(222 – 1)
Um algoritmo Genético começa com uma população inicial de N cromossomos.
Neste exemplo N= 30. (os cromossomos foram gerados aleatoriamente).
Aptidão
A cada Cromossomo S1 é atribuída uma aptidão fi. Aptidão é a nota que mede o
quanto a solução foi boa, essa nota é baseada na função objetivo ( f(x) ).
Um dos métodos para dar nota de aptidão ao cromossomo é atribuir uma nota
arbitrária ao primeiro cromossomo por exemplo 2,0 e ao último cromossomo a nota
0,0. As demais notas foram obtidas interpolando estes dois extremos utilizando a
seguinte função: f i  2( N  i ) /( N  1) onde N é o tamanho da população. Veja a
tabela.
Ex.:A aptidão do 5º cromossomo é :
f 5  2(30  5) /(30  1)  1,72414
Feito isso com todos os cromossomos da população inicial, iremos ordená-los em
ordem decrescente do valor da função objetivo ( f(x) ).
Colocando no gráfico os pontos representados pelos cromossomos da população
inicial teremos:
2 – Passo: Selecionar os melhores cromossomos da população inicial para
gerar “cromossomos filhos” (que são variantes dos pais) através dos
operadores de crossover e mutação.
Seleção
Geralmente, os pais são selecionados com probabilidade “proporcional à sua
aptidão“. Essa probabilidade é dada por:
pi 

fi
N
f
i 1 i
Ex.: a probabilidade do 1º cromossomo da tabela ser escolhido é de :
2,0
p1 
 1*100  100%
2,0
Ex.: a probabilidade do 7º cromossomo da tabela ser escolhido é de :
1,58621
p7 
 0,126 *100  12,6%
12,55172
Existem muitas regras de seleção. Entre elas existe o método culling no qual todos
os indivíduos abaixo de um determinado limiar são descartados, este método
converge com maior rapidez que a versão aleatória.
Uma “população intermediaria” é utilizada para alocar os cromossomos pais
selecionados pela probabilidade de seleção Pi de um cromossomo.
Para fazer uma população intermediária é escolhido um cromossomo aleatoriamente,
verifica-se sua probabilidade, se for maior que o limiar (estabelecido) alocamos esse
cromossomo na tabela intermediaria. Repetimos esse processo até completarmos a
tabela intermediaria (30 valores, como na população inicial).
População Intermediaria
Crossover e Mutação
O operador crossover é aplicado a um par de cromossomos retirados da população
intermediária, gerando dois cromossomos filhos. Cada um dos cromossomos pais
tem sua cadeia de bit’s cortada em um posição aleatória, produzindo duas cabeças
e duas caudas. As caudas são trocadas, gerando dois novos cromossomos.
Ponto de corte
S1 = 0010101011100000111111
S2 = 0011111010010010101100
filho1 = 0010101011010010101100
filho2 = 0011111010100000111111
Após a operação de crossover, a Mutação é aplicada. A mutação inverte os valores de
bit’s, ou seja, muda o valor de um dado bit de 1 para 0 ou de 0 para 1.
Antes filho1 = 0010101011010010101100
filho2 = 0011111010100000111111
Depois filho1 = 0010001011010010111100
filho2 = 0011111010000000111111
Primeira geração
Download