Inteligência Artificial I Aprendizagem (Parte II - Exemplo) Prof. a Joseana Macêdo Fechine
DSC/CCT/UFCG Inteligência Artificial I Resolução de Problemas (Parte VI) Informações Adicionais...
-
Upload
afonso-vasques-cortes -
Category
Documents
-
view
220 -
download
4
Transcript of DSC/CCT/UFCG Inteligência Artificial I Resolução de Problemas (Parte VI) Informações Adicionais...
DSC/CCT/UFCG
Inteligência Artificial IInteligência Artificial I
Resolução de Problemas (Parte Resolução de Problemas (Parte VI) VI)
Informações AdicionaisInformações Adicionais
Prof.Prof.aa Joseana Macêdo Fechine Joseana Macêdo Fechine [email protected]@dsc.ufcg.edu.br
Carga Horária: 60 horas
Universidade Federal de Campina GrandeUniversidade Federal de Campina GrandeDepartamento de Sistemas e Computação Departamento de Sistemas e Computação
Curso de Bacharelado em Ciência da Curso de Bacharelado em Ciência da ComputaçãoComputação
Figu
ra: C
apa
do L
ivro
Ham
burg
er, H
., Ri
char
ds, D
. Log
ic a
nd L
angu
age
Mod
els
for
Com
pute
r Sc
ienc
e, P
rent
ice H
all.
2
DSC/CCT/UFCG
Em Busca de Soluções
Tópico
Ilustrações – Algoritmos de Busca LocalAlgoritmos
Genéticos
3
DSC/CCT/UFCG
Algoritmos Genéticos
4
DSC/CCT/UFCG
Seleção: escolhemos os indivíduos que participarão
do processo reprodutório
Avaliação : Aplicamos a função de
avaliação a cada um dos indivíduos desta geração
Operadores genéticos: Aplicamos os operadores de recombinação e mutação
aos indivíduos escolhidos para “pais”
Satisfizemos o critério de parada ? (por nº de gerações ou por qua-lidade das soluções)
Não
Fim
Sim
Módulo de população :definimos a nova população a partir
da geração existente e dos filhosgerados
Filhos gerados sobrevivem e são copiados
sobre seus pais
Toda a antiga geração de pais
Cortes a serem efetuados :
Filho 1 :
Filho 2 :
Algoritmos Genéticos
Fonte:http://rico_linden.tripod.com/GA/
5
DSC/CCT/UFCG
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.
Algoritmos Genéticos
6
DSC/CCT/UFCG
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
Algoritmos Genéticos
7
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.
8
DSC/CCT/UFCG
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?
Algoritmos Genéticos
9
DSC/CCT/UFCG
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) A representação deve ser a mais simples possível;b) Se houver soluções proibidas ao problema, então elas não
devem ter uma representação;c) Se o problema impuser condições de algum tipo, estas devem
estar implícitas na representação.
Algoritmos Genéticos
10
DSC/CCT/UFCG
Algoritmos GenéticosTerminologia
Linguagem natural GA
cromossomo indivíduo,string, cromossomo, árvore
gene característica
alelo valor
locus posição
genótipo estrutura
fenótipo conjunto de parâmetros
11
DSC/CCT/UFCG
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.
Algoritmos Genéticos
12
DSC/CCT/UFCG
Codificação por permutação
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.
Algoritmos Genéticos
13
DSC/CCT/UFCG
Codificação por valor
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.
Algoritmos Genéticos
14
DSC/CCT/UFCG
Função de Avaliação
É 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.
Algoritmos Genéticos
15
DSC/CCT/UFCG
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.
Algoritmos Genéticos
16
DSC/CCT/UFCG
Algoritmos GenéticosSeleçã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.
17
DSC/CCT/UFCG
Algoritmos GenéticosSeleçã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.
18
DSC/CCT/UFCG
Seleção de Pais Exemplo:
Indivíduo Avaliação
0001 1
0011 9
0100 16
0110 36
Total 62
Pedaço da roleta (%)
Pedaço da roleta (º)
1.61 5.8
14.51 52.2
25.81 92.9
58.07 209.1
100.00 360.0
19
DSC/CCT/UFCG
Algoritmos GenéticosSeleção dos Pais
Exemplo (cont.) – Graficamente, temos:
20
DSC/CCT/UFCG
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ó.
Algoritmos Genéticos
21
DSC/CCT/UFCG
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.
Algoritmos Genéticos
22
DSC/CCT/UFCG
Operador de Crossover
Algoritmos Genéticos
gen
Pontos de Corte: 1 2 3 4
23
DSC/CCT/UFCG
Operador de Crossover
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).
Algoritmos Genéticos
24
DSC/CCT/UFCG
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
Algoritmos Genéticos
25
DSC/CCT/UFCG
Algoritmos GenéticosOperador de Crossover
Fonte: http://www.icmc.usp.br/~andre/research/genetic/index.htm
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.
26
DSC/CCT/UFCG
Algoritmos GenéticosOperador 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.
27
DSC/CCT/UFCG
Algoritmos GenéticosOperador de Mutação
O objetivo da mutação é evitar que as soluções na população fiquem apenas num mínimo local Filho1 antes : 1101111000011110 Filho2 antes : 1101100100110110 Filho1 depois : 1100111000011110 Filho2 depois : 1101101100110100
Fonte: http://www.icmc.usp.br/~andre/research/genetic/index.htm
Outro exemplo:
28
DSC/CCT/UFCG
Algoritmos Genéticos
Operadores em
Conjunto
(a) (b)
Pai 1
Pai 2
Selecionamos um ponto de corte
Pai 1
Pai 2
Depois dooperador de
crossover
Filho 1
Filho 2
Depois do operador de mutação
Filho 1
Filho 2 Gen alteradopela mutação
(c)(d)
29
DSC/CCT/UFCG
Algoritmos GenéticosMó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.
30
DSC/CCT/UFCG
Algoritmos GenéticosMó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.
31
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ão2. Problemas de convergência3. Escolha da Técnica de Seleção4. Lacuna entre gerações (generation gap)
32
DSC/CCT/UFCG
Algoritmos GenéticosAlgoritmo 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.
33
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