580 likes | 707 Views
Tópicos de I.A. ALGORÍTMOS GENÉTICOS Prof. Mário Dantas. A IA usa sempre algumas metáforas. Cérebro e sistema nervoso conexionismo Linguagem + processos cognitivos IA simbólica Teoria da evolução computação evolutiva (algoritmos genéticos).
E N D
Tópicos de I.A. ALGORÍTMOS GENÉTICOS Prof. Mário Dantas
A IA usa sempre algumas metáforas... • Cérebro e sistema nervoso conexionismo • Linguagem + processos cognitivos IA simbólica • Teoria da evolução computação evolutiva (algoritmos genéticos)
Indagações de alguns séculos atrás... • Como explicar a diversidade de animais? • Como explicar sua evolução? • Qual é a influência do dos antepassados? • Qual é a influência do meio ambiente?
História da Teoria da Evolução Teoria da evolução: de Lamarck a De Vries • 1809: Jean-Baptiste Lamarck • Lei do uso e do desuso • pelo uso e desuso de suas aptidões, a natureza força os seres a se adaptarem para sobreviverem. • Lei dos caracteres adquiridos. • Os serem mais fortes são mais capazes de “trasmitir” suas aptidões às novas gerações
História da Teoria da Evolução • 1859: Charles Darwin • Existe uma diversidade de seres devido aos contingentes da natureza (comida, clima, ...) e é pela lei da Seleção Natural que os seres mais adaptados ao seus ambientes sobrevivem • contra lei do uso de desuso • Os caracteres adquiridos são herdados pelas gerações seguintes • o homem vem do macaco... • Na época, que isto tudo foi polêmico...
História da Teoria da Evolução • 1865: Gregor Mendel • Formalizou a “herança de características”, com a teoria do DNA (ervilhas) • 1901: Hugo De Vries • Só a seleção natural não é responsável pela produção de novas (mais adaptadas) espécies. Tem de haver uma mudança genética! • Formalizou o processo de geração de diversidade: Teoria da Mutação
Computação evolutiva • A Computação Evolucionária foi introduzida em 1960 por IngoRechenbergcom seu trabalho "Estratégias de Evolução" (Evolutionsstrategieno original). Sua idéia foi então desenvolvida por outros pesquisadores.
Computação evolutiva • 1975: JonhHolland: Idealizou os algoritmos genéticos • Adaptation in Natural & Artificial SystemsMIT Press, 1975 (2nd ed. 1992) • Porque a evolução é uma boa metáfora? • Muitos problemas computacionais • envolvem busca através de um grande número de possíveis soluções • requerem que o programa seja adaptativo, apto a agir em um ambiente dinâmico • A evolução biológica é • é uma busca massivamente paralela em um enorme espaço de problema • soluções desejadas = organismos mais adaptados
1. Introdução • 1.1 O quesãoAlgoritmosGenéticos? • São algoritmos de buscabaseados no mecanismo de seleção natural e genética. • Utilizam a representação das soluçõesatravés de cadeias de bits (strings), quesãomodeladas à maneira das cadeias de DNA dos seresvivosorgânicos. • Foramdesenvolvidospor John Holland naUniversidade de Michigan.
1. Introdução • 1.2 Objetivos do algoritmo original propostoporHolland: • Criarumaabstraçãoparaexplicarrigorosamente o processoadaptativo dos sistemasnaturais; • Projetarsistemas de software artificial queconservassemosmecanismosmaisimportantes dos sistemasnaturais.
FundamentosBiológicos • Cromossomos • Em cada célula há um mesmo conjunto de cromossomos. • cromossomos são cadeias de DNA e servem como modelo para todo o organismo. O cromossomo é constituído de genes, que são blocos de DNA. • Cada gene codifica uma determinada proteína. • Basicamente, podemos dizer que cada gene codifica uma determinada feição, por exemplo cor dos olhos. Conjunto de genes relacionados com determinada feição são chamados alelos. • Cada gene tem sua posição própria dentro do cromossomo. Essa posição é chamada local.
FundamentosBiológicos • Um conjunto completo de material genético (todos os cromossomos) é chamado genoma. Um conjunto particular de genes de um genoma é chamado genótipo. O genótipo mais o desenvolvimento que ocorre após o nascimento é a base para o fenótipo do organismo, que são suas características físicas e mentais, tais como: cor dos olhos, inteligência, etc.
FundamentosBiológicos • Reprodução • Durante a reprodução, ocorre inicialmente recombinação (ou cruzamento). • Os genes dos pais são combinados para formar um novo cromossomo. • Essa descendência recém criada pode sofrer uma mutação. • Mutaçãosignifica que os elementos do DNA são ligeiramente modificados. Essas mudanças são causadas principalmente por erros na cópia dos genes dos pais. • A adaptação de um organismo é medida pelo sucesso do organismo na vida (sobrevivência).
Espaço de Soluções • O espaço de todas as soluções possíveis (que é um conjunto entre as quais a solução procurada está) é chamado Espaço das Soluções (ou Espaço de Estados). • Cada ponto desse estado representa uma solução possível. • Cada uma das possíveis soluções pode ser "marcada" pelo seu valor (ou adequação) para o problema. • Com os Algoritmos Genéticos nós procuramos pela melhor solução dentre um número de possíveis soluções.
Espaço de Soluções • Procurar por uma solução se resume então em procurar por algum valor extremo (um mínimo ou máximo) no espaço de soluções.
AlgoritmosGenéticos • Solução de um problema através de algoritmos genéticos utiliza um processo evolucionário (a solução é desenvolvida). • O algoritmo começa com um conjunto de soluções (representadas por cromossomos) chamada população. • Soluções de uma população são utilizadas para formar uma nova população. • Isto é motivado pela esperança que a nova população será melhor do que a primeira. • Soluções que são selecionadas para formar novas gerações de soluções são selecionadas de acordo com sua adequação.
Esboço Básico do Algoritmo Genético • [Início] Gere uma população aleatória de ncromossomos (soluções adequadas para o problema) • [Adequação] Avalie a adequação f(x) de cada cromossomo x da população • [Nova população] Crie uma nova população repetindo os passos seguintes até que a nova população esteja completa • [Seleção] Selecione de acordo com sua adequação (melhor adequação, mais chances de ser selecionado) dois cromossomos para serem os pais • [Cruzamento] Com a probabilidade de cruzamento cruze os pais para formar a nova geração. Se não realizar cruzamento, a nova geração será uma cópia exata dos pais. • [Mutação] Com a probabilidade de mutação, altere os cromossomos da nova geração nos locus (posição nos cromossomos). • [Aceitação] Coloque a nova descendência na nova população • [Substitua] Utilize a nova população gerada para a próxima rodada do algoritmo • [Teste] Se a condição final foi atingida, pare, e retorne a melhor solução da população atual • [Repita] Vá para o passo 2
Operadores dos AlgoritmosGenéticos • O cruzamento e a mutação são as partes mais importantes do algoritmo genético. • O desempenho é influenciado principalmente por esses dois operadores.
A Codificação de um cromossomo • Um cromossomo deve de alguma maneira conter a informação da solução que ele representa. A forma mais comum de codificar é uma série (string) binária. Um cromossomo pode então se parecer como isto: Cromossomo 1: 1101100100110110 Cromossomo 2: 1101111000011110 • Cada bit da série representa alguma característica da solução
Cruzamento • O cruzamento opera em determinados genes dos cromossomos dos pais e cria novas descendências. • A maneira mais simples de fazer isso é escolher aleatoriamente alguns pontos de cruzamento e copiar tudo o que vem antes desse ponto de um dos pais e então copiar tudo o que vem depois desse ponto do outro pai.
Cruzamento Pai Mãe Indice de corte = 3 Filho 1 Filho 2 Cruzamento (Cross Over)
Mutações • Implementaçãodo Mecanismo de Mutação (Mutation) • Apóso cruzamento, osfilhospodemsofreralterações no seucódigogenético, chamadas de mutações. • Estaspodemocorrerem um oumaisalelos (bits), de acordo com umaprobabilidadepré-estabelecida. • Emvirtudedaprobabilidade de mutação ser, geralmentebaixanosseresvivos, eladesempenha um papelsecundárionaevolução das espécies.
Mutações Cromossomo Original Prob. de mutação<= 1% = 0,01 Após Mutação I = 1, M = rand() = 0,45 Sem mutação I = 1, M = rand() =0,3 Semmutação I = 1, M = rand() = 0,2 Sem mutação I = 1, M = rand() = 0,5 Sem mutação I = 1, M = rand() = 0,002 Mutação
Parâmetros dos AlgorítmosGenéticos • Probabilidade de Cruzamento: • Com qual freqüência o cruzamento é realizado. • Se a probabilidade de cruzamento é 100%, então toda a descendência é produzida por cruzamento. • Se a probabilidade é 0%, toda a nova geração é formada por cópia exata dos cromossomos da população antiga (mas isso não significa que a nova geração é a mesma!).
Parâmetros dos AlgorítmosGenéticos • Probabilidade de Mutação: • Com qual freqüência as partes dos cromossomos sofrerão mutação. • Se a probabilidade de mutação é 100%, todos os cromossomos são alterados, se é 0%, nenhum é alterado. • A mutação em geral evita que o AG caia num extremo (mínimo ou máximo) local. • A mutação não deve ocorrer com muita freqüência porque senão o AG tornar-se-á de fato uma busca aleatória.
Parâmetros dos AlgorítmosGenéticos • Tamanho da População: • Quantos cromossomos existem na população (em uma geração). • Se houver poucos cromossomos, o AG terá poucas possibilidade de realizar cruzamentos e somente uma parte pequena do espaço de soluções será explorada. • Por outro lado, se houver muitos cromossomos, os AG’s se tornarão lentos. • Pesquisas mostram que após determinado limite (que depende principalmente da codificação e do problema), não é conveniente aumentar a população porque isso não resolve o problema mais rapidamente do que com tamanhos moderados de população.
Seleção • Os cromossomos são selecionados de uma população para serem pais de um cruzamento. • O problema é como selecionar esses cromossomos. • De acordo com a teoria da evolução de Darwin, o melhor sobrevive para criar a descendência. • Há muitos métodos para selecionar o melhor cromossomo. • Exemplos são: seleção por roleta, seleção Boltzman, seleção por campeonato, seleção por classificação, seleção por estado estacionário, e outras.
SeleçãoporRoleta • Os pais são selecionados de acordo com sua adequação. O lado de cada seção da roleta é proporcional ao valor da adequação de cada cromossomo: quanto maior for esse valor, mais larga a secção.
SeleçãoporClassificação • O método anterior de seleção tem problemas quando há grandes diferenças entre os valores de adequação. Por exemplo, se a melhor adequação dos cromossomos é 90% da soma de todas as adequações, então haverá cromossomos com chances muito baixas de serem selecionados. • A Seleção por Classificação primeiro classifica a população e então atribui a cada cromossomo um valor de adequação determinado pela sua classificação. O pior terá adequação igual a 1, o segundo pior 2 etc. de forma que o melhor terá adequação igual a N (número de cromossomos na população).
SeleçãoporClassificação Agora todos os cromossomos tem uma chance de serem selecionados. Entretanto, este método pode resultar em menor convergência, porque os melhores cromossomos não se distinguem muito dos outros. Situação antes da Classificação (gráfico da adequação) Situação depois da Classificação (gráfico dos números de ordem)
Seleçãopor Estado Estacionário • Este não é um método particular de seleção de pais. A idéia principal deste tipo de seleção é que a nova população deve ter uma grande parte de cromossomos que sobreviverão para a próxima geração. • A seleção tipo Estado Estacionário dos AG’s funciona do seguinte modo: • Em cada nova geração uns poucos bons cromossomos (com alta adequação) são selecionados para a criação da descendência. A seguir alguns maus cromossomos (com baixa adequação) são removidos e novos descendentes são colocados em seus lugares. Todo o resto da população sobrevive para as próximas gerações.
Elitismo • Quando criamos uma nova população por cruzamento e mutação, nós temos uma grande chance de perder os melhores cromossomos. • Elitismo é o nome do método que primeiro copia os melhores cromossomos (ou os poucos melhores cromossomos) para a nova população. • O resto da população é construída das formas descritas acima. • Elitismo pode aumentar rapidamente o desempenho do AG, porque previne a perda da melhor solução já encontrada.
Codificação • A codificação dos cromossomos é a primeira questão a ser feita quando começamos a resolver um problema utilizando AG. • A codificação depende muito do problema.
CodificaçãoBinária • Codificação Binária é a mais comum principalmente porque foi a que os primeiros pesquisadores de AG usaram e devido à sua relativa simplicidade. • Na Codificação Binária, cada cromossomo é uma série de bits - 0or1. • Codificação Binária permite muitos possíveis cromossomos, mesmo com pequenos número de alelos. • Por outro lado, esta codificação não é natural para muitos problemas e algumas vezes é necessário fazer correções antes dos cruzamentos e/ou mutações.
CodificaçãoBinária • Exemplo de Problema: 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 das coisas que cabem dentro da mochila, sem ultrapassar sua capacidade. • Codificação: Cada bit é usado para dizer se a coisa correspondente está ou não na mochila.
CodificaçãoporPermutação • A Codificação por Permutação pode ser usada em problemas que envolvem ordenação como o "Problema do Caixeiro-Viajante" ou problemas de ordenação de tarefas. • Na Codificação por Permutação, cada cromossomo é uma série de números que representa uma posição em uma seqüência>. Exemplo de cromossomo com codificação por permutação
CodificaçãoporPermutação • A Codificação por Permutação é útil para solução de problemas de ordenação. • Para alguns tipos de cruzamentos e mutações, são necessárias correções para que os cromossomos fiquem consistentes (isto é contenham seqüências reais) para alguns problemas.
CodificaçãoporPermutação • Exemplo de Problema: Problema do Caixeiro Viajante (TravellingSalesmanProblem - TSP) • 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 visitará as cidades.
Codificação de Valores • A codificação direta dos valores pode ser usada em problemas em que são usados valores mais complicados tais como números reais. • Usar codificação binária para esse tipo de problema seria muito difícil. • Na Codificação de Valores, cada cromossomo é uma seqüência de alguns valores. • Esses valores podem ser qualquer coisa relacionada com o problema, tais como: números reais, caracteres ou qualquer outro objeto.
Codificação de Valores Exemplo de cromossomo com codificação de valores • Codificação de Valores é uma boa escolha para alguns problemas especiais. • Entretanto, para essa codificação, é frequentemente necessário desenvolver um método de cruzamento e mutação específico para o problema.
Codificação de Valores • Exemplo de Problema: Cálculo de 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 dos cromossomos representam os pesos da rede neural.
CodificaçãoemÁrvore • Codificação em Árvore é usada principalmente para desenvolver programas ou expressões, isto é, para programação genética. • Na Codificação em Árvore cada cromossomo é uma árvore de alguns objetos, tais como funções ou comandos de uma linguagem de programação.
CodificaçãoemÁrvore • A Codificação em Árvore é útil para desenvolver programas ou qualquer outra estrutura que pode ser codificada em árvores. • A programação na linguagem LISP é frequentemente utilizada para este propósito uma vez que os programas em LISP são diretamente representados na forma de árvores e podem ser facilmente processados como uma árvore, de forma que o cruzamento e a mutação podem ser realizados com relativa facilidade. Exemplo de cromossomo com codificação em árvore
CodificaçãoemÁrvore • Exemplo de Problema: Encontrar uma função que aproxime um dado par de valores • O problema: São dados os valores de entrada e de saída. A tarefa é encontrar uma função que forneça a melhor saída (isto é, a que dê o resultado mais próximo do desejado) para todas as entradas. • Codificação:cromossomos são funções representadas em uma árvore.
Cruzamento e Mutação • Cruzamento e Mutação são os dois operadores básicos de AG. • O desempenho do AG depende muito deles. • O tipo e a implementação desses operadores dependem da codificação e também do problema • Há diversas maneiras de como fazer o cruzamento e a mutação.
Codificação Binária • Cruzamento • Ponto de Cruzamento Único - um ponto de cruzamento é escolhido, a série binária desde o começo do cromossomo até o ponto de cruzamento é copiada do primeiro pais e o resto copiado do outro pai. 11001011+11011111 = 11001111
Codificação Binária • Dois pontos de cruzamento - são definidos dois pontos de cruzamento, a série binária desde o início do cromossomo até o primeiro ponto de cruzamento é copiada do primeiro pai, a parte do primeiro ponto de cruzamento até o segundo ponto é copiada do outro pai e o resto do cromossomo é copiado do primeiro pai novamente. 11001011 + 11011111 = 11011111
Codificação Binária • Cruzamento Uniforme - os bits são copiados aleatoriamente do primeiro ou segundo pai. 11001011 + 11011101 = 11011111
Codificação Binária • Cruzamento Aritmético - é realizada uma operação aritmética para obter a nova geração. 11001011 + 11011111 = 11001001 (AND)
Codificação Binária • Mutação • Inversão de Bit - determinados bits são invertidos 11001001 => 10001001