obra • Criar obras derivadas Sob as seguintes condições: • Atribuição • Uso não comercial • Compartilhamento pela mesma licença Obra sob licença Creative Commons Brazil 2.5 Alguns direitos reservados
em Ciências da Computação pela UFPI; • Pesquisador de Computação Heurística, Inteligência Artificial e Cibercultura; • Entusiasta do Software Livre; • Membro diretor da ENEC.
Genéticos em seu estado da arte; • Traçar um paralelo entre a Biologia e a Genética com os AG's; • Apresentar um histórico sobre a pesquisa de AG's; • Discutir as diversas características de um AG; • Apresentar e justificar diferentes tipos de codificação;
Operadores Genéticos; • Comentar algumas aplicações de AG's; • Conceituar problemas de Otimização Combinatória; • Discutir alguns tópicos pesquisados atualmente envolvendo AG's.
forem lineares: Problema de Programação Linear; • f(.), g(.) ou h(.) for não linear: Problema de Programação Não-Linear; • f(.), g(.) e h(.) forem lineares e uma variável for restrita aos inteiros: Problema de Programação Inteira;
da água de um rio para ser utilizada em seu processo produtivo. Durante a produção, componentes tóxicos A e B são adicionados a água desviada, que depois volta ao rio. Se não tratada, essa água poluirá o rio com estes componentes. A concentração de A e B permitida pela vigilância sanitária são de aº e bº gramas por ML (milhões de litros) de água por dia. *= ARENALES, ARMENTANO, MORABITO e YANASSE; Pesquisa Operacional para Cursos de Engenharia;
rio é de V ML por dia, e a fábrica precisa de pelo menos U ML de água por dia. Existem 3 tipos de tratamento que a empresa pode utilizar para diminuir a concentração resultante dos poluentes. Estes tratamentos tem custos diferenciados ($/ML) e resultam em níveis diferentes de concentração (gramas por ML) de cada um dos componentes.
em determinar a quantidade de água a ser tratada em cada tipo de tratamento, de modo que as exigências ambientais sejam atendidas e o custo total do tratamento seja mínimo. Tratamento 1 2 3 A a¹ a² a³ B b¹ b² b³ Custo/ML c¹ c² c³
nos quais as variáveis de decisão são discretas, onde a solução é um conjunto ou uma sequência de inteiros ou outros objetos discretos. Estes problemas possuem um número enorme de soluções viáveis.
Um conjunto de N itens está disponível para ser colocado em uma mochila com capacidade C unidades. Cada item i possui valor Vi e usa Ci unidades de capacidade. Determinar o subconjunto de itens a serem colocados na mochila, de modo a maximizar o somatório de Vi, porém levando em conta a capacidade máxima C da mochila.
de Steiner: Seja G=(N, A) um grafo não-orientado; X e W uma partição de N, tal que: O problema consiste em determinar um subconjunto de arcos B que ligue todos os nós W, de modo a minimizar o somatório do comprimento dos arcos de B. X⊆N ,W⊆N ,onde X∪W=N e X∩W=emptyset.
Viajante: Dado um conjunto N de cidades e uma matriz D de distância NxN, onde dij denota a distância da cidade i para a cidade j, com i,j = 1, 2, ..., n. Encontrar uma rota que visite cada cidade exatamente uma vez, e que tenha a distância total mínima.
Shop: Também conhecido como “Programação de Tarefas”, pode ser definido por um conjunto de máquinas M e N tarefas, onde cada tarefa consiste em uma sequência ordenada de M operações. Cada operação deve ser processada em uma única máquina por um determinado tempo. As operações de uma mesma tarefa devem ser executadas em máquinas diferentes, e cada tarefa possui uma ordem particular de processamento. Determinar a sequência que completa em menor tempo possível as tarefas propostas.
uma ligação histórica com a Programação Linear. No início dos estudos de Pesquisa Operacional, diversos cientistas “atacavam” problemas de Otimização Combinatória através de técnicas da PL. Porém, não tardou aparecerem as dificuldades...
Necessária muita habilidade para formular um problema de Otimização Combinatória; • Resolução: – As formulações frequentemente envolvem um número muito grande de variáveis e restrições, e os softwares de PL não conseguem resolver programas de grande porte;
uma vizinhança N(X, O) e uma solução particular Y; se esta solução tiver melhor desempenho que todas as outras soluções da vizinhança N(X, O), dizemos que Y é um ótimo local para o problema dado; – Problemas de Otimização Combinatória, frequentemente, tem muitos ótimos locais, dificultando a busca pelo Ótimo Globlal (Solução Ótima).
Combinatória levou os cientistas a utilizarem técnicas da PL no intuito de resolver tais problemas – e o avanços nesses estudos mostraram a dificuldade desse tipo de abordagem.
comum entre os pesquisadores que o desenvolvimento de computadores mais potentes seria suficiente para a resolução de problemas de Otimização Combinatória – porém, essa expectativa foi furstrada pelo desenvolvimento da teoria da complexidade computacional.
de polinômio, o custo computacional necessário de tempo de processamento dado o tamanho da entrada; • Existem problemas, conhecidos como NP-Completos, nos quais a definição de sua complexidade não se dá através de um polinômio.
consequências: • Que o esforço computacional para a solução exata de problemas desse tipo é demasiado grande, consumindo muitos ciclos de processamento; • O uso de memória é também grande, sendo comum o estouro de memória no uso de métodos exatos.
Viajante e um computador capaz de listar todas as possíveis soluções desse problema, na instância de 20 cidades, em uma hora, através do método de Enumeração Completa. O Problema do Caixeiro Viajante tem (n – 1)! + 1 Possíveis soluções (n = número de cidades). *= REEVES, Modern Heuristics Techniques in Modern Heuristics Search Methods
de algoritmos exatos para os problemas de Otimização Combinatória; porém, a maioria dos cientistas estão convictos disso. Existem muitos problemas de Otimização Combinatória que são NP-Completos.
indústrias, organizações e demais entidades desse tipo. Como então continuar os estudos nessa área, visto sua importante aplicabilidade somado a grandes dificuldades?
problema, mas heurísticas são flexíveis e capazes o suficiente em lidar com funções objetivo e/ou restrições mais complicadas (e mais realistas) do que algoritmos exatos.
Começam com uma solução incompleta, e vão incrementando elementos do problema até achar uma solução; • Melhoramento (Refinamento) – Começa com uma solução completa, que será gradualmente modificada buscando aperfeiçoar essa solução inicial.
para conquistar”, trata-se de métodos que dividem os problemas em componentes menores, tentando resolvê-los para depois uni-los e formar uma solução para o problema; • Aprendizagem – As diferentes opções são analisadas e combinadas como ramos de uma árvore; assim, com a definição de algum método, a busca pela melhor solução dar-se-á nesses ramos.
desenvolvidos ao passar dos anos. Apesar do conceito um tanto desanimador, a maioria das heurísticas modernas estão em um nível de desenvolvimento suficiente para serem consideradas boas alternativas para a resolução de problemas desse tipo.
para o desenvolvimento de heurísticas. Entre eles, houveram aqueles que foram buscar nos intricados processos biológicos evolutivos alguns dos conceitos-chave para a definição de um método que simulasse tal processo para a resolução de problemas NP.
das espécies, segundo a teoria darwinistas e genética, de forma a evoluir populações de soluções em busca de resultados cada vez melhores para um problema dado.
pesquisadas no ramo. Inclusive, junto com Colônia de Formigas, Programação Genética e Redes Neurais, deram origem a um ramo da computação conhecido como “Computação Natural” ou “Computação Evolucionária”.
segunda edição de seu livro que era normal ouvir comentários como: “Isso certamente não tem nada haver com Inteligência Artificial” “Por que alguém estudaria aprendizado pela imitação de um processo que leva bilhões de anos?”
população de indivíduos (soluções para um problema); • Os indivíduos são representados (codificados) por uma sequência de bits, a qual chamamos cromossomo;
poderão reproduzir a próxima geração, perpetuando assim seus genes; • Os Operadores Genéticos simulam nessa população as ações de cruzamento (crossover) e mutação existentes na dinâmica natural das espécies; • Faz-se então a próxima geração da população, que tornará a efetuar as operações do AG até o critério de parada ser atingido.
• População = Conjunto de Indivíduos • Cromossomo = Representação de um Indivíduo • Gene = Representação mínima do cromossomo • Seleção = Operador que indica os indivíduos que irão cruzar • Cruzamento = Operador que “cruza” genes dos indivíduos
espécies já mostra a forte influência biológica para a definição de um AG. A nomenclatura das características de um AG também são retiradas diretamente da literatura biológica-evolucionária.
conhecido, dedicou-se ao estudo do cruzamento de muitas espécies: feijões, chicória, bocas-de- dragão, plantas frutíferas, abelhas, camundongos e, principalmente, ervilhas cultivadas na horta do mosteiro onde vivia, analisando os resultados matematicamente durante cerca de sete anos.
de Mendel”, das quais as duas primeiras tiveram influência decisiva no processo de construção da teoria de AG's, em especial nas questões que tangem ao Operador de Cruzamento:
para a genética, em conjunto com a Teoria Evolucionária de Darwin. Por conta disso, a associação entre estas duas teorias também formam a base para a definição de AG's.
a teoria da evolução através da Seleção Natural. A bordo do navio Beagle, Darwin viajou o mundo coletando e estudando animais e vegetais de várias espécies, teorizando sobre a relação entre populações de uma mesma espécie com características diferentes em habitats também diferentes.
Origem das Espécies”, Darwin colocou para a ciência e para a sociedade da época sua teoria evolucionária: • Os indivíduos de uma espécie que conseguissem melhor se adaptar ao meio, teria mais chance de procriar e passar seus genes para a próxima geração – Seleção Natural; • Os filhos seriam resultados do cruzamento dos genes dos pais;
indivíduo poderia sofrer um processo de mutação, não descendendo então esse gene de nenhum de seus pais; • Como os mais aptos passariam seus genes adiante, espera-se que as gerações da espécie sejam cada vez melhores adaptadas ao habitát;
na teoria de Darwin, em conjunto com a idéia da maior adaptabilidade da população de acordo com a geração, foram de extrema importância para o desenvolvimento dos AG's, visto que estas teorias embasam um dos principais mecanismos da heurística.
seguintes etapas: – Criação da População Inicial; – Seleção de indivíduos para cruzamento; – Cruzamento; – Mutação; – Criação da prole; – Criação da próxima Geração; – Avaliação do Critério de Parada.
tem haver com a Codificação e a Decodificação. Essas características são de extrema importância para caracterizarmos o desempenho de um AG; porém, deixaremos para tratá-las pouco mais a frente.
inicial é gerada de forma aleatória. O projetista do AG deve levar em consideração algumas questões durante a modelagem: – O tamanho da População Inicial, normalmente, será também o tamanho das demais gerações do AG;
bastante rápido e com baixo custo computacional; porém não haverá uma busca mais extensiva do espaço de busca; – Já uma população grande tornará o AG mais demorado, utilizando muitos ciclos de processamento e mais memória; porém, é garantida uma busca mais completa, verificando mais áreas do espaço de busca; – Muitos trabalhos, dependendo do problema, utilizam uma população de 50 indivíduos, em média;
população inicial, o projetista deve estar atento para a geração de indivíduos que representam uma solução inviável – o que fazer com eles? – Dependendo do problema, eles poderíam ser descartados, alterados para trazê-los à viabilidade ou ainda poderíam ser mantidos na população, porém sofrendo uma penalidade na sua função de adaptação;
Pela teoria darwinista da Seleção Natural, aqueles indivíduos melhores adaptados ao meio, terão mais chance de procriar e passar seus genes para as gerações posteriores; • Em AG's, essa característica é dada pelo valor da função de adaptação (ou função objetivo) para um dado indivíduo;
processo de decodificação, onde é nos possível saber seu desempenho para a função de adaptação; • Um dos métodos mais utilizados para a Seleção é o Método da Roleta – O Método da Roleta é um método probabilístico de seleção, que tenta simular a dinâmica de seleção das espécies;
de desempenho da dos indivíduos da atual população; após, cria-se um número randômico entre [1 - ]; com esse número, somamos novamente os indivíduos até aquele em que o valor chegar a esse número – assim, teremos um indivíduo para o cruzamento; – Repetimos o processo para selecionar outro indivíduo, até o número de cruzamentos desejado. ∑desempenho dosindivíduos
a forma da penalidade que será dada a indivíduos inviáveis, caso eles estejam na população; – Também é bom ressaltar que, em alguns casos, um indivíduo por ter um bom desempenho, poderá cruzar muitas vezes; com o tempo, as gerações acabarão por tornar-se homogêneas; – Pode-se aplicar uma penalidade a esse indivíduo, como um limite na quantidade de cruzamentos.
ao processo de Cruzamento, onde os genes dos indivíduos-pais são trocados seguindo algum critério pré-definido pelo Operador de Cruzamento; • Em seguida, os indivíduos gerados são submetidos ao processo de Mutação;
uma verificação dos indivíduos gerados, afim de submeter a estes as mesmas restrições utilizadas para indivíduos gerados aleatoriamente na População Inicial; • Quando os processos de Seleção, Cruzamento e Mutação ocorrem o número de vezes especificados, teremos um conjunto de soluções das quais iremos gerar a próxima geração;
atentar para as políticas de constituição das gerações. Entre as opções que podemos elencar: – Toda geração é constituída apenas pela prole, descartando todos os indivíduos da geração anterior; – Utilizamos Elitismo na geração, de forma que uma porcentagem dos melhores indivíduos da geração passada compõem a nova geração; – Guardamos o melhor indivíduo encontrado;
nova Geração, deve-se avaliar o critério de parada do AG. Existem várias maneiras de definí-lo: – Número de Gerações; – Um valor pré-definido encontrado em qualquer indivíduo de uma geração; – Limite de Tempo; – Combinação de mais de um critério de parada.
maior importância para o desempenho do AG, ao lado do Operador de Cruzamento. • A Codificação garantirá a representação dos indivíduos de forma a serem suscetíveis aos operadores genéticos;
do espaço de busca, e como se dará a geração (ou não) de indivíduos inviáveis; • Por conta disso, a Codificação terá influência decisiva no custo computacional para a resolução do problema.
codificação binária (0 – 1) para representar soluções. Talvez, essa linha nos estudos seja derivada ainda das pesquisas que tentaram resolver problemas de Otimização Combinatória através de métodos da Programação Inteira.
pares ordenados (x, y), onde x indica a posição no eixo abscissa e y a posição no eixo da ordenada. • Para essa representação, precisaríamos de cromossomos com 8 genes, para representar 16 bits; • Essa representação não impede a presença de soluções inviáveis.
bits, onde cada bit seria uma rainha em cada coluna e o número nesse bit indicaria a linha em que está a rainha. • Essa representação reduz bastante o custo computacional em comparação com as outras representações apresentadas; • Ela ainda permite a representação de soluções inviáveis, mas em menor número do que outras representações.
Operador de Cruzamento quanto o Operador de Mutação; Para o desempenho do AG, o Operador de Cruzamento tem importância predominante sob o Operador de Mutação;
novos tipos de gene na população, garantindo assim uma diversidade mínima na mesma. • O Operador de Mutação, normalmente, tem um valor muito baixo, simulando a raridade com a qual o fenômeno ocorre também na natureza.
pela polícia. A polícia tem provas insuficientes para os condenar, mas, separando os prisioneiros, oferece a ambos o mesmo acordo: se um dos prisioneiros, confessando, testemunhar contra o outro e esse outro permanecer em silêncio, o que confessou é recompensado enquanto o cúmplice silencioso é punido. Se ambos ficarem em silêncio, a polícia punirá os dois levemente. Se ambos traírem-se mutuamente, cada um será torturado.
saber que decisão o outro vai tomar, em uma “história” de três decisões, e nenhum tem certeza da decisão do outro. A questão que o dilema propõe é: o que vai acontecer? Como o prisioneiro vai reagir?
utilizado para aprender uma estratégia para o Problema dos Dois Prisioneiros. • Gerar uma “população de estratégias”; • A Função Adaptação será a pontuação das estratégias; • A população será afetada pelos operadores genéticos, afim de construirmos outros indivíduos;
um valor mínimo da função de adaptação, de forma que os prisioneiros sofram o menos possível após as três decisões. Projetando um AG: • Escolher a Codificação; • Escolher o tipo de seleção, cruzamento e mutação; • Escolher o tamanho da população e o critério de parada;
X e W uma partição de N, tal que: O problema consiste em determinar um subconjunto de arcos B que ligue todos os nós W, de modo a minimizar o somatório do comprimento dos arcos de B. X⊆N ,W⊆N ,onde X∪W=N e X∩W=emptyset.
Dentre elas, destacam-se: • Projeto de circuitos eletrônicos; • Planejamento de redes de comunicação; • Tubulações de gás e óleo; • Distribuição de água para irrigação e redes de drenagem; • Projetos de instalação de redes elétricas e mecânicas; • Edificações; • Tráfego em redes de comunicação.
é NP, métodos convencionais de resolução mostram-se ineficientes devido ao alto custo computacional despendido para a resolução do problema. Em geral, seria preciso analisar todas as possibilidades, uma por vez, para se identificar o valor ótimo do problema.
binária, indicando quais vértices de Steiner estão na solução; • O tamanho do cromossomo será igual ao número total de vértices do problema menos o número de vértices especiais; • O operador de cruzamento será do tipo um ponto aleatório; • O operador de mutação terá valor 0,05;
utilizado para a decodificação, passando o valor da função de adaptação, e também para analisar a viabilidade das soluções; • Caso seja encontrada uma solução inviável, o AG irá descartá-la; • O tamanho da população será de 40, e o critério de parada será na geração 50;
por indivíduos formados pelos métodos genéticos da geração anterior; • Porém, só será membro da geração os indivíduos que tiverem sua função de adaptação igual ou menor que o indivíduo com o pior desempenho da atual geração;
B da OR-Library, de Beasley, onde existe um conjunto de grafos que variam de exemplos com 50 vértices, 63 arestas e 9 vértices especiais até 100 vértices, 200 arestas e 50 vértices especiais.
AG, o desenvolvedor deverá se preocupar com muitas características a serem utilizadas pelo programa, com relação as taxas de cruzamento, mutação, codificação, tamanho da população, número de gerações...
analisados e configurados de acordo com o problema a ser resolvido e a experiência do próprio projetista. Um bom projetista sempre deve estar atento a literatura específica da área, pesquisando as últimas implementações e analisando suas características.
passar de um certo número de gerações, para uma população uniforme, representando apenas um pequeno espaço no espaço de busca total das soluções. Ter uma busca em um espaço maior, a um custo computacional razoável, é interessante para obtermos uma probabilidade maior de termos uma boa resposta.
poderão impedir uma convergência abrupta das gerações. Um valor maior para mutação poderá criar uma maior diversidade na população; porém, a convergência não será impedida. É possível também gerar indivíduos aleatoriamente em uma geração que não seja a inicial - migração.
no ótimo local para aquele subespaço de busca. Nesse momento, fica ainda muito difícil o AG chegar em um resultado melhor através dos operadores genéticos convencionais.
processamento. Uma forma de aumentar essa capacidade é comprar máquinas mais potentes. Outra maneira é você distribuir o a execução em múltiplos processadores e compartilhar a memória, através das técnicas da Computação Distribuída ou Paralela.
um Sistema Distribuído, visto a sua estrutura de evoluir populações. A forma como o AG poderá ser distribuído deverá levar em conta a estrutura da busca pelo espaço de soluções possíveis. Veremos alguns tipos de paralelização:
AG Paralelo. Ele consiste em vários AG's executando um em cada processador, sob uma população única; • Os processadores sincronizam na avaliação do operador de seleção, e cada um submete os processos genéticos aos indivíduos selecionados;
cruzamento e mutação simultaneamente, ganhando tempo com a distribuição; • O problema é que teremos um conjunto de novos indivíduos e de pais previamente existentes que são candidatos a compor a nova população; • Assim, teremos que resolver essa questão através de modelos de sistemas distribuídos para gerar a nova população.
ambientes isolados (tipo ilhas), geram indivíduos melhores adaptados às peculiaridades desse ambiente do que ambientes de maior extensão; • Em populações pequenas e isoladas, temos uma pressão seletiva mais forte, mas as mudanças genéticas favoráveis se espalharão mais rapidamente.
de AG resolveram transportar essa idéia para a heurística; • Assim, nesse modelo Island, temos uma população inicial divida em nichos pequenos, submetidas a um AG independente para cada processador; • Periodicamente, indivíduos de nichos diferentes são trocados, no processo de migração;
P. L. Otimização Combinatória e Programação Linear, Editora Campus, Rio de Janeiro 2005; – FURTADO, Antonio L. Teoria dos Grafos: Algoritmos, Livros Técnicos e Científicos Editora S.A., Rio de Janeiro, 1973;
to Genetic Algorithms for Scientists and Engineers, World Scientific Publishing, 1999; – LINDEN, Ricardo. Algoritmos Genéticos – Uma importante ferramenta da Inteligência Computacional, Brasport, 2006; – REZENDE, Solange Oliveira (org.). Sistemas Inteligentes – Fundamentos e Aplicações, Editora Manole, São Paulo, 2003;