AlgoritmosGeneticos _01 - Computação UFCG
Download
Report
Transcript AlgoritmosGeneticos _01 - Computação UFCG
Figura: Capa do Livro Hamburger, H., Richards, D. Logic and Language Models for Computer Science, Prentice Hall.
Universidade Federal de Campina Grande
Departamento de Sistemas e Computação
Curso de Bacharelado em Ciência da Computação
Inteligência Artificial I
Resolução de Problemas (Parte VI)
Informações Adicionais
Prof.a Joseana Macêdo Fechine
[email protected]
Carga Horária: 60 horas
DSC/CCT/UFCG
Em Busca de Soluções
Tópico
Ilustrações – Algoritmos de Busca Local
Algoritmos Genéticos
2
DSC/CCT/UFCG
Algoritmos Genéticos
3
DSC/CCT/UFCG
Algoritmos Genéticos
Cortes a serem
efetuados :
Filho 1 :
Filho 2 :
Seleção: escolhemos os
indivíduos que participarão
do processo reprodutório
Operadores genéticos: Aplicamos os
operadores de recombinação e mutação
aos indivíduos escolhidos para “pais”
Avaliação :
Aplicamos a função de
avaliação a cada um dos
indivíduos desta geração
Não
Módulo de população :
definimos a nova população a partir
da geração existente e dos filhos
gerados
Satisfizemos o critério
de parada ? (por nº de
gerações ou por qualidade das soluções)
Filhos gerados
sobrevivem e
são copiados
sobre seus pais
Toda a antiga
geração de pais
Sim
Fonte:http://rico_linden.tripod.com/GA/
DSC/CCT/UFCG
Fim
4
Algoritmos Genéticos
Esboço do Algoritmo Genético
[Início] Geração aleatória de uma população de n cromossomos.
[Adaptação] Verificar a função objetivo f(x) de cada cromossomo x.
[População] Cria-se uma nova população pela repetição a seguir:
1.
[Seleção] Selecione um par de cromossomos da população de
acordo com a adaptação de cada um (os mais bem adaptados
tem maior chance de serem escolhidos)
2.
[Crossover] Produza dois descendentes (filhos) realizando
cruzamento com os cromossomos dos pais. O ponto para a
realização do cruzamento deve ser aleatório.
3.
[Mutação] Com uma certa probabilidade, o descendente sofre
mutação em cada posição no cromossomo.
4.
[Aceitação] Coloque os descendentes em uma nova
população, juntamente com a melhor solução da geração
velha.
5
DSC/CCT/UFCG
Algoritmos Genéticos
Esboço do Algoritmo Genético
[Troca] Substitua a população velha pela nova.
[Teste] Se a condição de finalização é satisfeita, pare, e retorne a
melhor solução da população atua.
[Adaptação]
[Laço] Volte ao passo 1
6
DSC/CCT/UFCG
Algoritmos Genéticos
Assim como na natureza, a informação deve ser
codificada nos cromossomos (ou genomas)
A reprodução, que no caso dos GA, é equivalente à
reprodução sexuada, se encarregará de fazer com
que a população evolua.
A mutação cria diversidade, mudando
aleatoriamente gens dentro de indivíduos.
A reprodução e a mutação são aplicadas em
indivíduos selecionados dentro da população.
7
DSC/CCT/UFCG
Algoritmos Genéticos
Questões importantes
Como criar cromossomos e qual tipo de codificação
usar?
É a primeira pergunta que deve ser feita ao resolver um
problema com AG.
A codificação dependerá fortemente do problema.
Como escolher os pais para a realização do crossover?
A geração de uma população a partir de duas soluções
pode causar a perda da melhor solução. O que fazer?
8
DSC/CCT/UFCG
Algoritmos Genéticos
Representação “Cromossomial”
Cada pedaço indivisível desta representação: gene.
A representação cromossomial é completamente
arbitrária.
É interessante apenas que algumas regras gerais
sejam seguidas:
a)
b)
c)
A representação deve ser a mais simples possível;
Se houver soluções proibidas ao problema, então elas não
devem ter uma representação;
Se o problema impuser condições de algum tipo, estas devem
estar implícitas na representação.
9
DSC/CCT/UFCG
Algoritmos Genéticos
Terminologia
Linguagem natural
GA
cromossomo
gene
indivíduo,string,
cromossomo, árvore
característica
alelo
valor
locus
posição
genótipo
estrutura
fenótipo
conjunto de parâmetros
10
DSC/CCT/UFCG
Algoritmos Genéticos
Codificação binária
É a mais comum devido a sua simplicidade
Cada cromossomo é uma string de bits – 0 ou 1
Crom: A = 1 0 1 1 0 0 1 0 1 1
Crom: B = 1 1 1 1 1 1 0 0 0 0
Exemplo de uso: problema da mochila
O problema: É dada uma lista de coisas com preços e
tamanhos. É fornecido o valor da capacidade da mochila.
Escolha as coisas de forma a maximizar o valor daquilo que
cabe dentro da mochila, sem ultrapassar sua capacidade.
Codificação: Cada bit é usado para dizer se a coisa
correspondente está ou não na mochila.
11
DSC/CCT/UFCG
Algoritmos Genéticos
Codificação por permutação
DSC/CCT/UFCG
Mais usado em problemas de ordenação
Cada cromossomo é uma string de números que representa uma
posição numa seqüência
Crom A: 1 5 3 2 6 4 7 9 8
Crom B: 8 5 6 7 2 3 1 4 9
Exemplo de uso: problema do caixeiro viajante
O problema: São dadas cidades e as distâncias entre elas. O
caixeiro viajante tem que visitar todas elas, sem viajar mais do
que o necessário. A solução do problema consiste em encontrar
a seqüência de cidades em que as viagens devem ser feitas de
forma que a distância percorrida seja a mínima possível.
Codificação: os cromossomos descrevem a ordem em que o
caixeiro irá visitar as cidades.
12
Algoritmos Genéticos
Codificação por valor
DSC/CCT/UFCG
Usado em problemas nos quais valores mais complicados são
necessários
Cada cromossomo é uma seqüência de valores
Crom A: 1.2324 5.3243 0.4556 2.3293 2.4545
Crom B: ABDJEIFJDHDIERJFDLDFLFEGT
Crom C: (back), (back), (right), (forward), (left)
Exemplo de uso: dada uma estrutura, encontrar pesos para
uma rede neural.
O problema: É dada uma rede neural com arquitetura definida.
Encontre os pesos entre os neurônios da rede de forma a obter
a resposta desejada da rede.
Codificação: Valores reais num cromossomo representam
pesos em uma rede neural.
13
Algoritmos Genéticos
Função de Avaliação
DSC/CCT/UFCG
É a maneira utilizada pelos AG para determinar a
qualidade de um indivíduo como solução do
problema em questão.
É uma nota dada ao indivíduo na resolução do
problema.
Será usada para a escolha dos indivíduos pelo
módulo de seleção de pais, sendo a forma de
diferenciar entre as boas e as más soluções para um
problema.
Dada a generalidade dos AG, a função de avaliação,
em muitos casos, é a única ligação verdadeira do
programa com o problema real.
14
Algoritmos Genéticos
Função de Avaliação
Também chamada de função de custo (função de aptidão).
Calcula então um valor numérico que reflete quão bons os
parâmetros representados no cromossomo resolvem o
problema.
Usa todos os valores armazenados no cromossomo (os
parâmetros) e retorna um valor numérico, cujo significado é
uma métrica da qualidade da solução obtida usando-se
aqueles parâmetros.
A função de avaliação deve ser tal que se o cromossomo c1
representa uma solução melhor do que o cromossomo c2,
então a avaliação de c1 deve ser maior do que a avaliação de
c2.
15
DSC/CCT/UFCG
Algoritmos Genéticos
Seleção dos Pais
O método de seleção de pais deve simular o
mecanismo de seleção natural:
Pais mais capazes geram mais filhos;
Pais menos aptos também podem gerar descendentes.
Temos que privilegiar os indivíduos com função de avaliação
alta, sem desprezar completamente aqueles indivíduos com
função de avaliação extremamente baixa;
Até indivíduos com péssima avaliação podem ter
características genéticas que sejam favoráveis à criação de um
indivíduo ótimo. Estas características podem não estar
presentes em nenhum outro cromossomo.
16
DSC/CCT/UFCG
Algoritmos Genéticos
Seleção dos Pais
Método simples e muito adotado: método da roleta
viciada.
Criamos uma roleta (virtual) na qual cada cromossomo
recebe um pedaço proporcional à sua avaliação (a soma
dos pedaços não pode superar 100%).
Rodamos a roleta.
O selecionado será o indivíduo sobre o qual ela parar.
17
DSC/CCT/UFCG
Seleção de Pais
Exemplo:
Indivíduo
Avaliação
Pedaço da
roleta (%)
Pedaço da
roleta (º)
0001
1
1.61
5.8
0011
9
14.51
52.2
0100
16
25.81
92.9
0110
36
58.07
209.1
Total
62
100.00
360.0
18
DSC/CCT/UFCG
Algoritmos Genéticos
Seleção dos Pais
Exemplo (cont.) – Graficamente, temos:
19
DSC/CCT/UFCG
Algoritmos Genéticos
Operadores de Crossover e Mutação
Iremos trabalhar agora com a versão mais simples
dos operadores genéticos.
Nesta versão, eles atuam em conjunto, como se
fossem um só.
20
DSC/CCT/UFCG
Algoritmos Genéticos
Operador de Crossover
Vamos começar com o operador de crossover mais
simples, chamado de operador de crossover de um
ponto.
Depois de selecionados dois pais pelo módulo de
seleção de pais, um ponto de corte é selecionado.
Um ponto de corte constitui uma posição entre dois
genes de um cromossomo.
Cada indivíduo de n genes contem n-1 pontos de
corte.
21
DSC/CCT/UFCG
Algoritmos Genéticos
Operador de Crossover
gen
Pontos de Corte:
1
2
3
4
22
DSC/CCT/UFCG
Algoritmos Genéticos
Operador de Crossover
DSC/CCT/UFCG
Depois de sorteado o ponto de corte, separa-se os
pais em duas partes: uma à esquerda do ponto de
corte e outra à direita.
É importante notar que: não necessariamente estas
duas partes têm o mesmo tamanho.
Primeiro filho: composto através da concatenação da
parte esquerda do primeiro pai com a parte direita do
segundo pai.
Segundo filho: composto através da concatenação
das partes que sobraram (a metade esquerda do
segundo pai com a metade à direita do primeiro pai).
23
Algoritmos Genéticos
Operador de Crossover
A operação deve ser realizada sobre os cromossomos
dos pais para a criação de descendentes
Crom1: 11010 | 00100110110
Crom2: 11011 | 11000011110
Filho 1: 11010 | 11000011110
Filho 2: 11011 | 00100110110
24
DSC/CCT/UFCG
Algoritmos Genéticos
Operador de Crossover
Outro exemplo:
Um exemplo de crossover de um ponto.
(a) dois indivíduos são escolhidos.
(b) um ponto (4) de crossover é escolhido.
(c) são recombinadas as características, gerando dois novos indivíduos.
Fonte: http://www.icmc.usp.br/~andre/research/genetic/index.htm
DSC/CCT/UFCG
25
Algoritmos Genéticos
Operador de Mutação
Depois de compostos os filhos, entra em ação o
operador de mutação.
Este opera da seguinte forma:
Ele tem associada uma probabilidade extremamente baixa
(da ordem de 0,5%);
Sortea-se um número entre 0 e 1.
Se ele for menor do que a probabilidade pré-determinada
então o operador atua sobre o gene em questão,
alterando-lhe o valor aleatoriamente.
Repete-se então o processo para todos os gens
componentes dos dois filhos.
26
DSC/CCT/UFCG
Algoritmos Genéticos
Operador de Mutação
O objetivo da mutação é evitar que as soluções na
população fiquem apenas num mínimo local
Filho1 antes
Filho2 antes
Filho1 depois
Filho2 depois
: 1101111000011110
: 1101100100110110
: 1100111000011110
: 1101101100110100
Outro exemplo:
Fonte: http://www.icmc.usp.br/~andre/research/genetic/index.htm
DSC/CCT/UFCG
27
Algoritmos Genéticos
(a)
(b)
Pai 1
Pai 1
Selecionamos um
ponto de corte
Operadores
em
Conjunto
Pai 2
Pai 2
Depois do
operador de
crossover
Filho 1
Filho 1
Depois do
operador de mutação
Filho 2
DSC/CCT/UFCG
(d)
Gen alterado
pela mutação
Filho 2
(c)
28
Algoritmos Genéticos
Módulo da População
Responsável pelo controle da população.
Por simplicidade, população não pode crescer
permite que armazenemos a população em um vetor de
tamanho constante.
Pais têm que ser substituídos conforme os filhos vão
nascendo
Pode parecer estranho, visto que estamos acostumados a
ver a população humana sempre crescendo.
Entretanto, simula bem ambientes de recursos limitados.
29
DSC/CCT/UFCG
Algoritmos Genéticos
Módulo da População
Forma simples de obtenção:
A cada atuação do operador genético são criados dois
filhos.
Estes vão sendo armazenados em um espaço auxiliar até
que o número de filhos criado seja igual ao tamanho da
população.
Neste ponto o módulo de população entra em ação.
Todos os pais são então descartados e os filhos copiados
para cima de suas posições de memória, indo tornar-se os
pais da nova geração.
30
DSC/CCT/UFCG
Algoritmos Genéticos
Aspectos Práticos
A implementação prática de um AG requer atenção
para várias questões:
1. Escolha da Função de Avaliação/Aptidão
2. Problemas de convergência
3. Escolha da Técnica de Seleção
4. Lacuna entre gerações (generation gap)
31
DSC/CCT/UFCG
Algoritmos Genéticos
Algoritmo Genético Aplicado ao Caixeiro Viajante
1. Uma população inicial é gerada aleatoriamente. Cada indivíduo
da população é uma rota. Lembrando que as cidades não
podem ser repetidas.
2. Cada indivíduo é avaliado definindo seu fitness (valor de
adequação) que é inversamente proporcional a distância total
da rota.
3. Um número aleatório de indivíduos (pode ser predefinido) é
selecionado na roleta.
4. Alguns dos indivíduos selecionados passam por alterações,
através dos operadores genéticos (crossover e mutação).
5. Uma nova população é gerada e repete-se os passos do 2 ao 5
até que um número pré-definido de gerações seja alcançado.
32
DSC/CCT/UFCG
Algoritmos Genéticos
Exemplo de simulação: solução para o Problema
do Caixeiro Viajante (PCV)
http://lsin.unisantos.br/lvcon/experimento?id=3
33
DSC/CCT/UFCG