Algoritmos Genéticos Rodolfo Duarte e Sousa Algoritmos Genéticos Escrito por Rodolfo Duarte e Sousa [email protected] http://student.dei.uc.pt/~rsousa/sa Os algoritmos genéticos são uma técnica de solução baseada na teoria da evolução de Charles Darwin, que tem ganho bastante popularidade em todo o mundo ao longo dos últimos anos. Os algoritmos genéticos (AG) estão inseridos nos Sistemas Inspirados na Natureza, simulando sistemas naturais é possível aplica-los a solução de problemas reais. São métodos generalizados de simulação e optimização que simulam processos naturais de evolução, usando a teoria da evolução de Charles Darwin. Através da combinação e adaptação com outros operadores genéticos, são criados processos robustos e de aplicabilidade. Estes algoritmos são baseados nos processos genéticos dos organismos biológicos, aplicando uma possível solução a um problema de cromossoma composto por uma cadeia de bits e caracteres. Estes cromossomas representam indivíduos que são levados ao longo de períodos de tempo (igual aos processos reais) evoluindo de acordo com os princípios da sobrevivência dos mais aptos e de selecção natural, descritos pelo Darwin no seu livro “Origem das Espécies”. Simulando estes processos, AG são capazes de atingir soluções para problemas reais. Tal como na natureza, os indivíduos tentam competir por água, comida e território, predominando os mais fortes e morrendo aqueles que não conseguem viver ou reproduzir-se. Desta forma os genes dos mais fortes prevalecem e dão origem a novos indivíduos mais fortes e Simulação Avançada Pág. 1/7 Algoritmos Genéticos Rodolfo Duarte e Sousa mais adaptados ao meio em que vivem. Os AG usam uma analogia igual ao fenómeno da evolução da natureza, onde cada indivíduo representa uma possível solução para o problema. Dependendo da resposta que cada indivíduo dá ao problema, é atribuído um valor de adaptação. Aos indivíduos mais adaptados é dado a oportunidade de se reproduzir com outros da mesma espécie, produzindo descendentes com os genes de ambas as partes. Se um AG for correctamente desenvolvido os seus resultados serão possíveis soluções para o problema proposto. Os AG são eficientes para encontrar soluções óptimas em uma grande variedade de problemas, pois não impõem a rigidez dos modelos matemáticos usados pelos métodos tradicionais. Os operadores genéticos influenciam os indivíduos em sucessivas gerações, estendendo a simulação da solução até uma altura satisfatória. Estes operadores são necessários para que a população diversifique e mantenha características de adaptação adquiridas pelas gerações anteriores. Os operadores de selecção, é seleccionar os pais para aumentar a probabilidade de os indivíduos (com bons valores da função objectivo) se reproduzam. Pode-se eleger os pais usando um operador genético por exemplo o cruzamento. Às vezes a escolha de um mecanismo de selecção adequado permite um tratamento matemático mais rigoroso. Os operadores de mutação são úteis para a introdução e manutenção da diversidade genética dos indivíduos (alterando arbitrariamente as suas características) fornecendo assim, meios para o aparecimento de novos indivíduos na população. Desta forma este operador assegura que a probabilidade de chegar a qualquer ponto do espaço nunca será zero. Este operador tem uma taxa de probabilidade baixa. Simulação Avançada Pág. 2/7 Algoritmos Genéticos Rodolfo Duarte e Sousa O operador de cruzamento é responsável que durante a reprodução se herdem características dos indivíduos em causa. Este operador é considerado o mais predominante, desta forma a sua taxa de probabilidade deve ser superior à de mutação. É importante também, analisar de que maneira alguns parâmetros influenciam no comportamento dos AGs, para que se possa estabelecê-los conforme as necessidades do problema e dos recursos disponíveis. Alguns dos parâmetros genéticos mais utilizados: Tamanho da População: o tamanho da população influencia o desempenho global e eficiência dos AGs. Uma população pequena oferece uma pequena cobertura do espaço de simulação, limitando as soluções finais. Uma grande população fornece uma melhor cobertura do domínio do problema e previne a convergência prematura para soluções locais. Entretanto, com uma grande população tornam-se necessários recursos computacionais maiores, ou mais tempo computacional. Taxa de Cruzamento: quanto maior for esta taxa, mais rapidamente surge novos indivíduos. No entanto, isto pode originar um efeito indesejado pois maior parte da população será substituída podendo ocorrer perda de estruturas de alta aptidão. Com um valor baixo, o algoritmo pode tornar-se muito lento. Taxa de mutação: uma baixa taxa de mutação previne que uma dada posição fique estagnada em um valor, além de possibilitar que se chegue em qualquer ponto do espaço de simulação. Com uma taxa muito alta a simulação torna-se essencialmente aleatória. Intervalo de Geração: controla a percentagem da população que será substituída durante a próxima geração. Com um valor alto, a maior parte da população será substituída, mas com valores muito altos pode ocorrer perda de estruturas de alta aptidão. Com um valor muito baixo, o algoritmo torna-se lento. Simulação Avançada Pág. 3/7 Algoritmos Genéticos Rodolfo Duarte e Sousa No contexto para se encontrar uma solução óptima para problemas de optimização combinatória de grande escala, uma algoritmo genético básico funciona da seguinte forma. Uma população inicial de cromossomas (os pais em potencial de uma nova população) se mantém à margem de todo o processo evolutivo. A cada um deles se atribui uma característica que está relacionada com o objectivo do problema. Cada cromossoma está representado por um ponto no espaço de simulação. Desde o início que se tem concentrado grandes esforços estudando as muitas variações deste esquema básico dos AGs. Independentemente da sofisticação de um AG, existem cinco componentes que devem ser incluídas: 1. Uma representação, em termos de cromossomas, das configurações do nosso problema 2. Uma maneira de criar as configurações da população inicial 3. Uma função de evolução que permite ordenar os cromossomas de acordo com um a função objectivo 4. Operadores genéticos que permitam alterar a composição dos novos cromossomas gerados pelos pais durante a reprodução 5. Valores dos parâmetros que o algoritmo genético usa, tamanho da população, probabilidades associadas com aplicação dos operadores genéticos, etc. Simulação Avançada Pág. 4/7 Algoritmos Genéticos Rodolfo Duarte e Sousa Diagrama básico de um AG Há dois aspectos importantes na Programação de Algoritmos Genéticos que diferem um pouco da programação habitual. Primeiro: é muito mais difícil detectar erros na programação, já que as centenas de linhas de código se utilizaram unicamente como melhoras sobre um esquema inicial de evolução, em muitos casos o programa funcionará e ainda funcionará bons resultados executando funções incorrectas, ou que não fazem o que nós achamos que deveriam fazer. Isto pode ser resolvido com mais programação. Uma possível solução é estabelecer dois modos de execução do programa (modo “normal” e modo “debug”) de forma que no segundo modo se executem certas comprovações sobre os processos executados, realizando testes em modo debug e distribuindo o programa em modo normal. Segundo: quando se programa AG as ideias geniais nem sempre são tão geniais. Nem sempre as centenas de linhas de código consistem em melhoras sobre um esquema inicial de evolução. É muito comum a existência de parâmetros que diminuem o número de ciclos necessários para se chegar à resposta desejada, na prática não rentáveis dado o incremento da duração dos ciclos. Quando adicionamos uma ideia genial é interessante contemplar sempre no programa ambas as opções, a inclusão do contrário da ideia genial, e comparar os resultados em diversas situações. Aqui é onde se Simulação Avançada Pág. 5/7 Algoritmos Genéticos Rodolfo Duarte e Sousa encontra o verdadeiro problema, já que as opções que podem ser prejudiciais em execuções curtas poderiam ser muito úteis na execução mais longas (simulações mais complexas), e precisamente estas provas nem sempre são possíveis. O mesmo ocorre na natureza, em que as ideias geniais para resolver problemas ecológicos podem não ser tão geniais assim. Combates constantes a pragas nem sempre são bem sucedidos porque os cientistas se deparam com a mutação e uma posterior resistência ao mesmo combate. Um sistema com bom desempenho em um ambiente dinâmico, geralmente exige soluções adaptativas. Sistemas Adaptativos tentam resolver problema e problemas utilizando acumulando estas conhecimento informações para gerar sobre o soluções aceitáveis. Estes problemas, tipicamente, se encontram nas áreas de configuração de sistemas complexos, a locação de tarefas, selecção de rotas, e outros problemas de optimização. Alguns exemplos de sistemas adaptativos: Controle de sistemas dinâmicos Composição musical Simulação de modelos biológicos Evolução Interactiva de Imagens Uma tendência relativamente nova no campo dos AGs é a incorporação de técnicas de busca local. Traz alguns resultados desalentadores dos AGs a ser aplicados a algum problema (especialmente aos mais complexos) de optimização combinatória, os investigadores começaram a buscar novas maneiras para estender os AGs a obter melhores resultados. Um passo importante nesta direcção foi dado por Muhlenbein com o desenvolvimento de Algoritmos Genéticos Paralelos, Simulação Avançada Pág. 6/7 Algoritmos Genéticos Rodolfo Duarte e Sousa PGAs, que permitem que os indivíduos na população melhorem o seu desempenho mediante melhoras iterativas. Nos PGAs também permitem que os indivíduos se seleccionem entre eles por processos locais, o que facilita a sua implementação em sistemas concorrentes. Simulação Avançada Pág. 7/7