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