Este documento discute algoritmos genéticos e fornece exemplos de sua aplicação. Em particular, descreve como minimizar a função F6 de Schaffer usando um algoritmo genético.
3. O que são Algoritmos Genéticos (GAs)?
Definição
Algoritmos Genéticos são algoritmos de busca basedos na seleção
natural, onde a sobrevivência está vinculada a aptidão dos
indivíduos ao ambiente.
Seleção Natural
Os indivíduos mais aptos tem maior longevidade, e portanto,
tem maior probabilidade de reprodução.
Indivíduos com maior probabilidade de reprodução tem mais
descendentes, e portanto, mais chances de perpetuar seu
código genético ao longo das gerações.
O código genético constitui a identidade de cada indivíduo e
está representado no cromossoma.
Estes princípios são aplicados na construção de algoritmos que
buscam a solução ótima para um determinado problema.
4. Porque utilizar GAs?
Com tantos algoritmos de busca por aí, porque utilizar GAs?
GAs se aplicam a problemas com diversos parâmetros
GAs se aplicam a problemas não-lineares e com restrições
não-lineares
GAs se aplicam a problemas que não podem ser representados
matematicamente
GAs se aplicam a problemas com grandes espaços de busca
GAs são algoritmos de busca paralela – os métodos de busca
tradicionais atuam no valor da variável, varrendo o espaço de
busca seguindo uma regra que determine o ponto seguinte, os
GAs realizam a busca evoluindo uma população
5. Onde utilizar GAs?
Aplicações
Otimização de planejamento: alocação de espaço físico,
embarque de minério, localicação de poços de petróleo
Otimização de rota / Logística / Caixeiro viajante
Otimização de estratégias: alternativas de investimento,
exploração de petróleo sob condições de mercado
Otimização de layout de circuitos / Síntese de circuitos /
Nanotecnologia
Robótica / Síntese de programas assembly
Jogos
Seleção de modelos / Síntese de modelos
6. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
7. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
2. Codificação/Decodificação do cromossoma – transformação do
cromossoma em parâmetros do problema e vice-versa
8. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
2. Codificação/Decodificação do cromossoma – transformação do
cromossoma em parâmetros do problema e vice-versa
3. Avaliação do indivíduo – medir o quanto a solução,
representada pelos parâmetros decodificados do cromossoma
do indivíduo, se aproxima do objetivo (função objetivo)
9. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
2. Codificação/Decodificação do cromossoma – transformação do
cromossoma em parâmetros do problema e vice-versa
3. Avaliação do indivíduo – medir o quanto a solução,
representada pelos parâmetros decodificados do cromossoma
do indivíduo, se aproxima do objetivo (função objetivo)
4. Seleção dos indivíduos para as gerações seguintes
10. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
2. Codificação/Decodificação do cromossoma – transformação do
cromossoma em parâmetros do problema e vice-versa
3. Avaliação do indivíduo – medir o quanto a solução,
representada pelos parâmetros decodificados do cromossoma
do indivíduo, se aproxima do objetivo (função objetivo)
4. Seleção dos indivíduos para as gerações seguintes
5. Operadores de reprodução e mutação
11. Como utilizar GAs?
Dado que exista um problema para o qual se deseja obter a solução
ótima, para utilizar GAs é necessário definir (nessa ordem):
1. Indivíduo/Cromossoma – criar a representação das soluções
do problema (inerente ao problema)
2. Codificação/Decodificação do cromossoma – transformação do
cromossoma em parâmetros do problema e vice-versa
3. Avaliação do indivíduo – medir o quanto a solução,
representada pelos parâmetros decodificados do cromossoma
do indivíduo, se aproxima do objetivo (função objetivo)
4. Seleção dos indivíduos para as gerações seguintes
5. Operadores de reprodução e mutação
6. Inicialização da população
12. Representação do cromossoma
As possíveis soluções do espaço de busca de um problema
determinam a representação que deve ser utilizada para codifica-las
em cromossomas.
Problemas
Numéricos, Inteiros
Numéricos
Baseados em ordem
Programas
Representação
Binária
Lista com números reais
Listas e Grafos
Árvores
Exemplo: representação binária
Encontrar o valor máximo da função f (x) = x2 , para x ∈ [0, 63].
Podemos representar as soluções do problema através de um
cromossoma de 6 bits.
C1
C2
0 0 1 0 0 1
0 0 0 1 0 0
representa x = 9
representa x = 4
13. Codificação / Decodificação do cromossoma
A representação do cromossoma é inerente ao problema em
questão, dessa forma é necessário construir a solução real do
problema a partir do cromossoma.
Exemplo: decodificação representação binária para f (x) = x2
O cromossomo 0 0 1 0 0 1 é decodificado para a solução x = 9
pela expressão:
x = 0 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 = 9
Exemplo: codificação representação binária para f (x) = x2
A codificado da solução x = 9 é dada pelo algoritmo:
for ( i =0 ; i <6 ; i ++) {
cromossoma [ i ] = ( x >> i ) and 1
}
14. Avaliação dos indivíduos
A avaliação é o elo entre o GA e o mundo externo e é realizada
pela função que melhor representa o problema (função objetivo),
definindo portanto, a aptidão (fitness) do indivíduo.
Avaliando os indivíduos para o problema f (x) = x2
Indivíduo
C1
C2
Cromossoma
0 0 1 0 0 1
0 0 0 1 0 0
x
9
4
f (x) (fitness)
81
16
15. Seleção dos indivíduos para reprodução
O processo de seleção em algoritmos genéticos seleciona
indivíduos para reprodução
A seleção é baseada na seleção dos indivíduos de forma que os
mais aptos tem maior probabilidade de serem escolhidos para
reprodução
Seja fi a aptidão do indivíduo i na população de N indivíduos.
A probabilidade do indivíduo i ser selecionado para a
reprodução é dada por:
pi =
fi
N
j=1 fj
16. Operadores genéticos
Os indivíduos são selecionados aleatóriamente de acordo com
as probabilidades baseadas nas suas aptidões
Novos indivíduos são criados a partir do cruzamento
(crossover) das informações dos indivíduos selecionados
Exemplo: Cruzamento Crossover de um ponto de corte
C1
C2
0 0 1
0 0 0
0 0 1
1 0 0
x=9
x=4
f (x) = 81
f (x) = 16
D1
D2
0 0 1
0 0 0
1 0 0
0 0 1
x = 12
x=1
f (x) = 144
f (x) = 1
Os indivíduos selecionados cruzam com probabilidade pc (probabilidade de
cruzamento). Quando não há cruzamento os indivíduos selecionados vão para a
próxima geração.
A operação de crossover consome as características
instrínsecas da população
17. Operadores genéticos – Mutação
Os novos indivíduos gerados ainda podem sofrer mutações
alterando pontualmente as características herdadas na
operação de crossover
Exemplo: Mutação sobre o novo indivíduo D2
D2
D2
0 0 0 0 0 1
0 1 0 0 0 1
x=1
x = 19
f (x) = 1
f (x) = 361
O bit afetado pela mutação é selecionado aleatóriamente e a
mutação ocorre com probabilidade pm < 1% (probabilidade de
mutação)
A operação de mutação explora o espaço de soluções em
busca de características ausentes na população
19. Mínimo da função F6 de Schaffer
Encontrar o ponto de mínimo da função F6 de Schaffer
f (x, y) =
0.5 + (sin( x2 + y 2 )2 − 0.5)
(1.0 + 0.001(x2 + y 2 ))2
1
0.9
0.8
0.7
f(x,0)
0.6
0.5
0.4
0.3
0.2
0.1
0
-100
-50
0
x
50
100
20. Análise do problema
Problema
Minimizar a função F6 de Schaffer
Os parâmetros: x ∈ [−100, 100] e y ∈ [−100, 100]
Representação
Utilizar representação binária para os parâmetros
Teremos 1 tira de bits para cada parâmetro que serão
concatenadas para formar o cromossoma do indivíduo
Parâmetro
x
(M
bits)
Parâmetro
y
(N
bits)
Cromossoma
21. Código binário codificando um número real
Para utilizar uma tira de bits para representar um número real
é necessário definir a precisão desejada
Para que x ∈ [−100, 100] tenha precisão de p casa decimais é
necessário que o intervalo [xmin , xmax ] seja particionado em
(xmax − xmin )10p soluções (estamos limitando o espaço de
busca quando definimos a precisão)
Dado que o parâmetro x tem M bits temos que a tira de bits
que representa x pode assumir 2M valores de forma que para a
precisão desejada temos:
2M ≥ (xmax − xmin )10p −→ p ≤ log10
2M
xmax − xmin
Para uma precisão de p = 4 casas decimais com
x ∈ [−100, 100] temos M = 22 bits
P recisao =
xmax − xmin
100 − (−100)
=
= 0.0000476
M −1
2
222 − 1
22. Código binário codificando um número real
Uma tira de bits de tamanho M possui 2M permutações que
vão de 0 a 2M − 1 na base 10
xbin é uma possível solução na representação binária, logo,
0 ≤ xbin ≤ 2M − 1
Dado que x ∈ [xm in, xmax ] a decodificação de binário para
real é dada por:
x = xbin
xmax − xmin
+ xmin
2M − 1
Exemplo
Seja xbin = 01011111110100100111102 = 156995010 , com
M = 22 temos:
x = 1569950
100 − (−100)
+ (−200) = −25.1389
222 − 1
23. Representação da solução da F6
Considerando a precisão de p = 4 casas decimais para os
parâmetros x e y temos o seguinte cromossoma para solução da F6
Parâmetro
x
(22
bits)
Parâmetro
y
(22
bits)
Na representação binária
0111110110110100011101! 0111000000110001011111!
Na base 10
2059549!
1838175!
-1.7930!
-12.3489!
Decodificado
24. Avaliação do cromossoma da F6
A avaliação do cromossoma da função F6 é própria função F6
f (x, y) =
0.5 + (sin( x2 + y 2 )2 − 0.5)
(1.0 + 0.001(x2 + y 2 ))2
Exemplo
O cromossoma
01111101101101000111010111000000110001011111
Variável
x
y
Binária
0111110110110100011101
0111000000110001011111
Na base 10
2059549
1838175
Decodificado
-1.7930
-12.3489
Fitness: f (x, y) = 0.3684
O objetivo é minimizar a F6, logo, quanto menor, melhor.
25. Configuração do GA
Operador de crossover: crossover de 1 ponto (demostrado
anteriormente)
Operador de mutação: troca 1 bit
A inicialização da população é aleatória
O melhor indivíduo de cada geração permanece na população
Taxa de crossover: 80%
Taxa de mutação: 5%
Tamanho da população: 100 indivíduos
Gerações: 1000
Total de indivíduos avaliados: 105
26. Resultados
Score do melhor indivíduo (x = 0.00024 e y = 0.00048)
0.35
0.3
0.25
Score
0.2
0.15
0.1
0.05
0
0
100
200
300
400
500
Gerações
600
700
800
900
1000
27. Resultados
Intervalo de scores (do melhor indivíduo ao pior indivíduo)
1
0.8
Score
0.6
0.4
0.2
0
0
100
200
300
400
500
Gerações
600
700
800
900
1000
29. Modelo de Heston
Calibrar os parâmetros (v, v , λ, η, ρ) do modelo de Heston para que os preços
¯
da call Européia segundo Heston "casem"com os preços líquidos do mercado
(segundo Black & Scholes).
Call Européia (undiscounted) segundo Heston
CH (F, K, τ ; v, v , λ, η, ρ) = F −
¯
√
KF
2π
+∞
−∞
dke−ikX
i
H(k + 2 , v, τ ; v , λ, η, ρ)
¯
1
k2 + 4
onde
H(k, v, τ ) = exp(W (k, τ ) + vV (k, τ ))
g(k) =
−d(k)τ
W (k, τ ) = λ¯ τ T− (k) −
v
1 − g(k)e
2
ln
η2
1 − g(k)
−d(k)τ
1−e
1 − g(k)e−d(k)τ
b(k) ± d(k)
T± (k) =
η2
T (k, τ ) = T− (k)
b(k) − d(k)
b(k) + d(k)
b(k) = λ + iρη k
d(k) =
b2 (k) + η 2 k(k − i)
30. O problema de Heston
Encontrar os valores para os parâmetros v, v , λ, η, ρ que minimizem
¯
a função
N
2
CH (Fi , Ki , τi ) − CBS (Fi , Ki , τi )
f (v, v , λ, η, ρ) =
¯
i=1
para uma superfície com N = 220 preços de opções.
Configuração do GA
Representação: lista de números reais, cada elemento da lista
representa 1 parâmetro
Taxa de crossover: 80%
Taxa de mutação: 2%
Tamanho da população: 80 indivíduos
Gerações: 100
Total de indivíduos avaliados: 800
31. Resultados
Score do melhor indivíduo (v = 0.15039, v = 0.03061, λ = 19.43169,
¯
η = 3.73731, ρ = 0.57450)
4500
4000
3500
Score
3000
2500
2000
1500
1000
500
0
0
10
20
30
40
50
Gerações
60
70
80
90
100
32. Resultados
Intervalo de scores (do melhor indivíduo ao pior indivíduo)
20000
18000
16000
14000
Score
12000
10000
8000
6000
4000
2000
0
0
10
20
30
40
50
Gerações
60
70
80
90
100
34. [Goldberg, 1989] David Edward Goldberg.
Genetic Algorithms in search, optimization, and machine
learning,
Addison Wesley Longman, Inc, 1989.
[Lawrence, 1991] Lawrence Davis.
Handbook of Genetic Algorithms,
Van Nostrand Reinhold, 1991.
[Whitley, 1989] Darrel Whitley.
The GENITOR Algorithm and Selection Pressure: Why
Rank-Based Allocation of Reproductive Trials is Best (1989),
Proceedings of the Third International Conference on Genetic
Algorithms, 1989.
[Whitley, 1992] Darrel Whitley.
An Executable Model of a Simple Genetic Algorithm,
Foundations of Genetic Algorithms 2, 1992.
[Whitley, 1993] Darrel Whitley.
A Genetic Algorithm Tutorial,