Buscar

Algoritmos Geneticos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FACULDADE SANTA TERESINHA 
CURSO: SISTEMAS DE INFORMAÇÃO 
DISCIPLINA: INTELIGÊNCIA ARTIFICIAL 
PROF. CAIO MAGNO AGUIAR DE CARVALHO 
 
 
Lucas Mendes Silva 
Wilson Ferreira Luz 
 
 
 
 
 
ALGORITMOS GENÉTICOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
São Luís – MA 
2021 
INTRODUÇÃO 
 
Nos últimos anos, a necessidade de se resolverem problemas que envolvem um grande 
número de variáveis, muitas vezes mal definidas e de natureza adaptativa, tem impulsionado a 
pesquisa e utilização de novas formas de sistemas de processamento. Tais sistemas têm por 
objetivo a resolução de problemas intratáveis, ou tratados de forma ineficiente, por sistemas 
"tradicionais" de computação. 
Dentro dessa perspectiva, a inteligência artificial (IA) é uma das áreas da Ciência da 
Computação que mais se empenha em resolver e implementar soluções para diversos tipos de 
problemas. Para que seja possível implementar aplicações e conseguir resolver determinadas 
problemas do cotidiano, a IA oferece uma gama variada de técnicas, das quais as mais utilizadas 
são: Redes Neurais, Sistemas Baseados em Casos, Sistemas Especialistas e Algoritmos 
Genéticos. 
Dentro deste contexto, este relatório terá enfoque pertinente técnica de algoritmos 
genéticos (AG), sendo esta, aplicada na resolução de problemas em duas grandes áreas: 
otimização1 e aprendizado de máquina. Os AG’s são algoritmos probabilísticos que fornecem 
um mecanismo de busca paralela e adaptativa baseado no princípio de sobrevivência dos mais 
aptos e na reprodução, sendo a metáfora da teoria da evolução das espécies iniciada pelo 
Fisiologista e Naturalista inglês Charles Darwin. 
Os princípios da natureza nos quais os AG’s se inspiram são simples. Como 
mencionado, se baseia na teoria de Darwim, ou seja, o princípio de seleção privilegia os 
indivíduos mais aptos com maior longevidade e, portanto, com maior probabilidade de 
reprodução. Indivíduos com mais descendentes têm mais chance de perpetuarem seus códigos 
genéticos nas próximas gerações. Tais códigos genéticos constituem a identidade de cada 
indivíduo e estão representados nos cromossomos. Estes princípios são imitados na construção 
de algoritmos computacionais que buscam uma melhor solução para um determinado problema, 
através da evolução de populações de soluções codificadas através de cromossomas artificiais. 
 
 
 
1 É a busca da melhor solução para um dado problema. Consiste em tentar várias soluções e usar a informação 
obtida para conseguir soluções cada vez melhores. 
FUNDAMENTAÇÃO TEÓRICA 
Os AG’s empregam conceitos relacionados a Computação Evolucionária, onde esta, 
compreende um conjunto de técnicas de busca e otimização inspiradas na evolução natural das 
espécies. Desta forma, cria-se uma população de indivíduos que vão reproduzir e competir pela 
sobrevivência. Os melhores sobrevivem e transferem suas características a novas gerações. 
Segundo Banzhaf (1998) as técnicas atualmente incluem: Programação Evolucionária, 
Estratégias Evolucionárias, Algoritmos Genéticos e Programação Genética. Estes métodos 
estão sendo utilizados, cada vez mais, pela comunidade de inteligência artificial para obter 
modelos de inteligência computacional (Barreto 1997). 
Algoritmos genéticos são usados para fins de otimização. Além disso, o algoritmo 
genético é baseado no método de busca aleatória. O principal problema de buscas aleatórias é 
o fato de que nós não podemos prever quanto tempo será necessário para a resolução do 
problema. Para evitar perdas de tempo significativas, são aplicados métodos desenvolvidos na 
biologia. Especificamente, métodos desenvolvidos nos estudos da origem das espécies e da 
evolução. Apenas os animais mais aptos sobrevivem durante o processo evolucionário. Como 
resultado disso, a aptidão de uma população cresce, o que lhe permite se ajustar ao ambiente 
dinâmico. 
 
COMPONENTES PRINCIPAIS 
 
Indivíduo 
 
O indivíduo é meramente um portador do seu código genético. O código genético é uma 
representação do espaço de busca do problema a ser resolvido, em geral na forma de sequências 
de bits. Por exemplo, para otimizações em problemas cujos valores de entrada são inteiros 
positivos de valor menor que 255 podemos usar 8 bits, com a representação binária normal, ou 
ainda uma forma de código Gray. 
Problemas com múltiplas entradas podem combinar as entradas em uma única sequência 
de bits, ou trabalhar com mais de um "cromossomo", cada um representando uma das entradas. 
O código genético deve ser uma representação capaz de representar todo o conjunto dos valores 
no espaço de busca, e precisa ter tamanho finito. Abaixo, um quadro com a representação da 
codificação: 
Figura 1. Representação da codificação binária e de Gray 
 
Fonte: Próprios autores (2021) 
Seleção 
Em geral, usa-se o algoritmo de seleção por "roleta", onde os indivíduos são ordenados 
de acordo com a função-objetivo e lhes são atribuídas probabilidades decrescentes de serem 
escolhidos, probabilidades essas proporcionais à razão entre a adequação do indivíduo e a soma 
das adequações de todos os indivíduos da população. A escolha é feita então aleatoriamente de 
acordo com essas probabilidades. 
Dessa forma conseguimos escolher como pais os mais bem adaptados, sem deixar de 
lado a diversidade dos menos adaptados. Outras formas de seleção podem, ainda, ser aplicadas 
dependendo do problema a ser tratado. Como exemplos pode-se citar a seleção por "torneio" 
(onde são selecionados diversos pequenos subconjuntos da população, sendo selecionado o 
indivíduo de maior adequação de cada um desses grupos), a seleção por "classificação" ou 
"ranking" (semelhante à seleção por "roleta", com a diferença de que a probabilidade de seleção 
é relacionada à sua posição na ordenação dos indivíduos da população e não à sua adequação 
em si) e a seleção por "truncamento" (onde são selecionados os N melhores indivíduos da 
população, descartando-se os outros). 
Figura 2. Seleção por roleta 
 
Fonte: obitko.com (2021) 
 
Reprodução 
Tradicionalmente, é dividida em três etapas: acasalamento, recombinação e mutação. O 
acasalamento é a escolha de dois indivíduos para se reproduzirem (geralmente gerando dois 
descendentes para manter o tamanho populacional). A recombinação, ou crossing-over é um 
processo que imita o processo biológico homônimo na reprodução sexuada: os descendentes 
recebem em seu código genético parte do código genético do pai e parte do código da mãe. Esta 
recombinação garante que os melhores indivíduos sejam capazes de trocar entre si as 
informações que os levam a ser mais aptos a sobreviver, e assim gerar descendentes ainda mais 
aptos. Por último vem as mutações, que são feitas com probabilidade a mais baixa possível, e 
tem como objetivo permitir maior variabilidade genética na população, impedindo que a busca 
fique estagnada em um mínimo local. 
Em linhas gerais os AG’s , são implementados como uma simulação de computador em 
que uma população de representações abstratas de solução é selecionada em busca de soluções 
melhores. A evolução geralmente se inicia a partir de um conjunto de soluções criado 
aleatoriamente e é realizada por meio de gerações. A cada geração, a adaptação de cada solução 
na população é avaliada, alguns indivíduos são selecionados para a próxima geração, 
e recombinados ou mutados para formar uma nova população. A nova população então é 
utilizada como entrada para a próxima iteração do algoritmo. Assim, utilizam conceitos 
provenientes do princípio de seleção natural para abordar uma série ampla de problemas, em 
especial de otimização. 
Robustos, genéricos e facilmente adaptáveis, os AG’s consistem em uma técnica 
amplamente estudada e utilizada em diversas áreas. Basicamente, o que um algoritmo genético 
faz é criar uma população de possíveis respostas para o problema a ser tratado (inicialização) 
para depois submetê-la ao processode evolução, constituído pelas seguintes etapas: 
avaliação: avalia-se a aptidão das soluções (indivíduos da população) — é feita uma análise 
para que se estabeleça quão bem elas respondem ao problema proposto; 
seleção: indivíduos são selecionados para a reprodução. A probabilidade de uma dada solução 
i ser selecionada é proporcional à sua aptidão; 
cruzamento: características das soluções escolhidas são recombinadas, gerando novos 
indivíduos; 
mutação: características dos indivíduos resultantes do processo de reprodução são alteradas, 
acrescentando assim variedade à população; 
atualização: os indivíduos criados nesta geração são inseridos na população; 
finalização: verifica se as condições de encerramento da evolução foram atingidas, retornando 
para a etapa de avaliação em caso negativo e encerrando a execução em caso positivo. 
Após vários ciclos de evolução a população deverá conter indivíduos mais aptos. 
 
Figura 3. Fluxograma da estrutura de funcionamento de um AG tradicional. 
 
Fonte: Adaptado de Diogo C. Lucas (2002) 
 
A figura 1, se transformada também pode ser definida na forma de um algoritmo, sendo: 
 
Figura 4. Algoritmo genético simples 
 
Fonte: Adaptado de Diogo C. Lucas (2002) 
 
O primeiro passo de um Algoritmo o Genético típico a geração de uma população inicial 
de cromossomos, que é formada por um conjunto aleatório de cromossomos que representam 
possíveis soluções do problema a ser resolvido. Durante o processo evolutivo, esta população 
avaliada e cada cromossomo recebe uma nota, refletindo a qualidade da solução que ele 
representa. Em geral, os cromossomos mais aptos são selecionados e os menos aptos são 
descartados (Darwinismo). 
 
OPERADORES DOS ALGORITMOS GENÉ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. Antes de detalharmos 
mais cruzamento e mutação, vejamos mais alguma informação sobre cromossomas. 
A codificação de um cromossomo 
 
Binaria - 
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 cromossoma 
pode então se parecer como isto: 
Quadro 1. Cruzamento 
Cromossomo 1 1101100100110110 
Cromossomo 2 1101111000011110 
Fonte: obitko.com (2021) 
Cada cromossomo é representado por uma série binária. Cada bit da série representa 
alguma característica da solução. É claro, há muitas outras formas de codificar. A codificação 
dependerá principalmente do problema a ser solucionado. Por exemplo, um pode codificar 
diretamente números inteiros ou reais, algumas vezes é útil codificar algumas permutações, 
e assim por diante. 
Por Permutaçã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 cromossoma é uma série de números que representa uma 
posição em uma sequência. 
Quadro 2. Exemplo de cromossoma com codificação por permutação 
Cromossoma A 1 5 3 2 6 4 7 9 8 
Cromossoma B 8 5 6 7 2 3 1 4 9 
Fonte: obitko.com (2021) 
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 cromossomas 
fiquem consistentes (isto é, contenham sequências reais) para alguns problemas. 
Exemplo de Problema: Problema do Caixeiro Viajante (Travelling Salesman Problem - 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 sequê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 cromossomas 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 cromossoma é uma sequência de alguns valores. Esses 
valores podem ser qualquer coisa relacionada com o problema, tais como: números reais, 
caracteres ou qualquer outro objeto. 
Quadro 2. Exemplo de cromossoma com codificação de valores 
Cromossoma A 1.2324 5.3243 0.4556 2.3293 2.4545 
Cromossoma B ABDJEIFJDHDIERJFDLDFLFEGT 
Cromossoma C (atrás), (atrás), (direita), (frente), (esquerda) 
Fonte: obitko.com (2021) 
 
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. 
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 cromossomas representam os pesos da rede neural. 
 
Codificação em Á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 cromossoma é 
uma árvore de alguns objetos, tais como funções ou comandos de uma linguagem de 
programação. 
Figura 5. Exemplo de cromossoma com codificação em árvore 
Cromossomo A Cromossomo B 
 
 
( + x ( / 5 y ) ) ( do_until step wall ) 
Fonte: obitko.com (2021) 
 
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 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. 
 
Cruzamento 
Depois de decidirmos que codificação usaremos, podemos proceder a operação de 
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. O Cruzamento pode ser ilustrado da 
seguinte maneira: 
Quadro 3. Cruzamento 
Cromossomo 1 11011 | 00100110110 
Cromossomo 2 11011 | 11000011110 
Descendência 1 11011 | 11000011110 
Descendência 2 11011 | 00100110110 
Fonte: obitko.com (2021) 
Há outras maneiras de fazer cruzamento. Por exemplo, nós podemos escolher mais 
pontos de cruzamento. O cruzamento pode ser um pouco complicado e depender 
principalmente da codificação dos cromossomas. Cruzamentos específicos feitos para 
problemas específicos podem melhorar o desempenho dos algoritmos genéticos. 
 
Mutação 
Depois que um cruzamento é realizado, acontece a mutação. A mutação tem a intenção 
de prevenir que todas as soluções do problema dessa população caiam em um ponto ótimo 
local. A operação de mutação muda aleatoriamente a descendência criada pelo cruzamento. 
No caso de uma codificação binária, podemos mudar aleatoriamente alguns bits escolhidos 
de 1 para 0, ou de 0 para 1. A mutação pode então ser ilustrada como a seguir: 
Quadro 4. Mutação por descendência 
Descendência Original 1 1101111000011110 
Descendência Original 2 1101100100110110 
Descendência Mutada 1 1100111000011110 
Descendência Mutada 2 1101101100110110Fonte: obitko.com (2021) 
 
A técnica da mutação (da mesma forma que a do cruzamento) depende muito da 
codificação dos cromossomas. Por exemplo, quando codificamos permutações, mutações 
podem ser realizadas como uma troca de dois genes. 
 
IMPLEMENTAÇÃO DE ALGORITMOS GENÉTICOS 
Para ilustrar o uso de um algoritmo genético, utilizaremos o exemplo de Kumazawa 
(2003), aluno d curso de ciência da computação na USP. Então, o primeiro passo na 
implementação do algoritmo genético é gerar a população inicial. No algoritmo genético aqui 
desenvolvido, cada membro desta população é um vetor de comprimento L denominado de 
cromossomo do indivíduo. O indivíduo formado é uma representação da matriz de 
transformação . Desse modo, os componentes do cromossomo do indivíduo são os elementos 
determinantes da matriz de escala e os ângulos que determinam a matriz , como ilustra a 
figura 6: 
Figura 6. Elementos componentes do cromossomo de cada indivíduo da população gerada pelo algoritmo 
genético 
 
Fonte: Adaptado de Kumazawa (2003) 
 
 
 
O algoritmo genético implementado gera a população inicial aleatoriamente (figura 7). 
Figura 7. Visão geral de funcionamento do algoritmo genético 
 
Fonte: Adaptado de Kumazawa (2003) 
A partir de então os indivíduos que formam a população trocam as informações dos seus 
genes segundo o operador de recombinação (crossover), que possibilita formar novos 
indivíduos que podem possuir tanto as melhores como as piores características dos indivíduos 
iniciais. Os pontos de recombinação são estabelecidos aleatoriamente. A figura 8 representa o 
código em MATLAB que implementa a função de crossover. 
Figura 8. Operador de crossover implementado no MATLAB: pai 1 e pai 2 são os cromossomos que 
serão cruzados; prob cross representa a quantidade de pontos que sofreram recombinação; filho cross 1 é o 
resultado da recombinação dos cromossomos pais 
 
Fonte: Adaptado de Kumazawa (2003) 
Após serem gerados, os indivíduos passam através de um operador de mutação. Esse 
operador é responsável por alterar determinadas partes aleatórias do gene do indivíduo de forma 
a buscar uma melhoria do indivíduo gerado. O resultado desse operador pode ser positivo caso 
o indivíduo gerado seja melhor que os indivíduos geradores dele ou negativo caso o indivíduo 
mutado seja inferior aos indivíduos geradores. A Figura 9 representa o código em MATLAB 
que implementa a função de mutação. 
Figura 9. Operador de mutação implementado no MATLAB: filho representa o cromossomo do 
indivíduo a sofre mutação; prob mutacao representa a porcentagem do indivíduo que sofrerá alteração; filho 
mutado representa o resultado da mutação sobre o cromossomo de entrada 
 
Fonte: Adaptado de Kumazawa (2003) 
Para definir quem são os indivíduos mais apropriados para resolver o problema deve-se 
definir uma função de avaliação (fitness) do algoritmo genético. Após passar pela função de 
avaliação, os indivíduos são ordenados segundo os valores obtidos pela função de avaliação. O 
melhor indivíduo, isto é, aquele com menor valor de avaliação, é escolhido para integrar uma 
nova população. Os outros indivíduos que completarão a nova população são criados da mesma 
forma que os indivíduos iniciais. 
Denomina-se de geração cada uma das interações feitas pelo algoritmo genético ao 
obter uma nova população. Denominamos por execução cada uma das rodadas que o algoritmo 
realiza com uma população por um determinado número de gerações. Desse modo são 
executadas tantas iterações quanto forem necessárias para que o algoritmo determine um 
resultado razoável. Assim, tendo determinado um indivíduo que possua um valor de erro 
segundo a função de fitness que seja da ordem de , obtêm-se um cromossomo que gera 
um indivíduo próximo ao indivíduo representativo da matriz de transformação que leva as 
matrizes abstratas e calculadas às matrizes e respectivamente procuradas. 
APLICAÇÕES DOS ALGORITMOS GENÉTICOS 
Os Algoritmos genéticos têm sido utilizados para resolver problemas complexos (tais 
como os problemas NP-difíceis2), para aprendizado de máquinas e também para o 
desenvolvimento de programas simples. Eles têm sido também usados em algumas aplicações 
artísticas como pintura e música. 
Por ser um tema multidisciplinar, os AGs possuem aplicações em diversas áreas, como, 
por exemplo, para a resolução do problema da inversão sísmica, no qual os AGs são utilizados 
para determinar a estrutura dos dados de subsolo a partir da prospecção geológica a fim de obter 
de uma seção geológica ou um modelo 3D (LINDEN, 2008). 
Silveira e Barone (1998) apresentam em seu artigo o uso dos AGs para construção de 
jogos educativos computadorizados que auxiliam na aprendizagem dos alunos, além de 
estimularem a criatividade, atenção e memória. Um último exemplo de aplicação mais recente 
dos AGs é seu uso para montagem e seleção de portfólios de crédito, para que estes possam ser 
utilizados como referência para definições de orçamentos futuros, tendo como base uma 
rentabilidade alvo para o ano desejado, apoiando assim gestores de portfólio de crédito durante 
a tomada de decisões (BORDIGNON, 2020). 
O uso de algoritmos genéticos se estende a um dos recursos mais preciosos da 
humanidade, o petróleo e o gás, de acordo com LINDEN (2008), o problema da inversão 
sísmica, que é extremamente importante no campo da geologia, consiste na determinação da 
estrutura dos dados de subsolo a partir da prospecção geológica, tendo como objetivo primário 
obter uma seção geológica ou um modelo 3D. Este problema é extremamente suscetível à 
aplicação de algoritmos genéticos, pois sua função objetivo é extremamente irregular, sendo 
altamente não linear, possuindo muitos mínimos e máximos locais e podendo apresentar 
descontinuidades. Uma abordagem bastante tradicional (MONTESINOS, 2005), usando apenas 
algoritmos genéticos, foi usada para a inversão de dados de anomalias gravitacionais 
correspondendo a contrastes de densidade fixos a priori para a obtenção da distribuição 
tridimensional de fontes sub-superficiais. 
 
2 NP-difícil (ou NP-hard, ou NP-complexo) na teoria da complexidade computacional, é uma classe de 
problemas que são, informalmente, "Pelo menos tão difíceis quanto os problemas mais difíceis em NP 
Foi apresentado em 1999 na CEC99 – IEEE – International Conference on Evolutionary 
Computation um ambiente interativo, utilizando Algoritmos Genéticos, para a avaliação de 
músicas (sequências de acordes) tocadas em arquivos MIDI. No caso, os indivíduos da 
população foram definidos em grupos de quatro vozes (soprano, contralto, tenor e baixo) ou 
coros. Cada um é avaliado segundo três critérios: melodia, harmonia e oitavas. A composição 
destes três critérios definia a aptidão (fitness) definida pela função de seleção, que retorna o 
melhor indivíduo ou melhor coro. Um ciclo genético é operacionalizado, criando novos 
indivíduos dos anteriores e procurando sempre pelo melhor. Quando um novo grupo é 
selecionado, ele é tocado em MIDI. A duração do ciclo genético determina o ritmo da evolução. 
O sistema criado foi denominado Vox Populi. (FOGEL, 1999). 
Os AG’s podem ser utilizados também em Telecomunicações, Segundo Blanchard 
(1994), no WCCI'94 – World Congress on Computational Intelligence – ocorrido em Orlando, 
na Flórida, mostrou uma série de soluções promissoras a situações reais utilizando Algoritmos 
Genéticos. Blanchard mostrou o caso da US West, uma companhia regional de 
telecomunicações do estado do Colorado, que vem usando um sistema baseado em AGs que 
possibilita projetar, em duas horas, redes óticas especializadas, trabalho que levaria seis meses 
utilizando especialistas humanos. O sistema produz resultados ainda 10% (dez por cento) 
melhores que os realizados pelo homem. A companhia estimava, naquele momento, que o 
sistema possibilitará uma economia de 100 milhões de dólares até o final do século. 
 
VANTAGENSE DESVANTAGENS DOS AG’s 
Uma vantagem dos AG é o seu paralelismo. AG percorre o espaço das soluções usando 
mais indivíduos (e com genótipos em vez de fenótipos) de forma que eles são menos 
susceptíveis de "enroscar" em um extremo local do que os outros métodos. Eles também são 
muito simples de implementar. Uma vez que você implantou a parte básica do AG, você 
simplesmente precisa escrever um novo cromossomo (apenas um objeto) para resolver outro 
problema. Com uma codificação, você simplesmente muda a função de adequação e está 
tudo pronto. Entretanto, para alguns problemas, a escolha e implementação da função de 
adequação pode ser difícil. 
A desvantagem dos AG é o tempo de processamento. Os AG podem ser mais lentos do 
que os outros métodos. Porém, desde que possamos terminar o cálculo sem restrições severas 
de tempo, o tempo mais longo é aceitável (principalmente com os computadores cada vez 
mais rápidos). Para se ter uma ideia sobre os tipos de problemas resolvidos com AG, é 
apresentada a seguir uma lista de algumas aplicações: 
• Sistemas dinâmicos não lineares - predição, análise de dados; 
• Projeto de Redes Neurais, ambos: determinação da arquitetura e dos pesos; 
• Trajetória de Robôs; 
• Desenvolvimento de programas em LISP (programação genética); 
• Planejamento estratégico; 
• Determinação da forma de moléculas de proteínas; 
• Determinação de rotas e sequenciamento de tarefas; 
• Determinação de funções para criação de imagens. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CONCLUSÃO 
 
Os AG’s são algoritmos de busca ou otimização inspirados na seleção natural e 
reprodução genética que combinam processos naturais, necessários à evolução dos mais aptos, 
com troca de informação estruturada, porém randômica, para formar um algoritmo de busca 
baseado na habilidade inovadora da busca humana (GOLDBERG, 1989). 
Os AG’s possuem uma larga aplicação em muitas áreas científicas, entre as quais podem 
ser citados problemas de otimização de soluções, aprendizado de máquina, desenvolvimento de 
estratégias e fórmulas matemáticas, análise de modelos econômicos, problemas de engenharia, 
diversas aplicações na Biologia como simulação de bactérias, sistemas imunológicos, 
ecossistemas, descoberta de formato e propriedades de moléculas orgânicas (MITCHELL, 
1995). 
Como visto ao longo deste trabalho, os algoritmos genéticos fazem uso de modelos 
computacionais baseados nos processos naturais para resolver problemas, e, apesar de existir 
diversos modelos computacionais, todos eles têm em comum o conceito de simulação da 
evolução das espécies através da seleção, mutação e reprodução, processos que são totalmente 
dependentes do desempenho dos indivíduos desta espécie dentro do ambiente (LINDEN, 2008). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Referências bibliográficas 
Algoritmos Genéticos – Matemática. Mql5.com, 2016. Disponível em 
<https://www.mql5.com/pt/articles/1408>. Acesso em 27 de nov. 2021. 
BARRETO, J. Inteligência Artificial. No Limiar do Século XXI. ISBN 859003822X. ρρρ 
Edições, 1997. 
BANZHAF, W; NORDIN, P.; KELLER, R. E. & FRANCONE, F. D. Genetic 
Programming: an introduction. ISBN 155860510X. Morgan Kaufmann, 1998 
BLANCHARD, W. Notes on the simulation of evolution, IEEE Transactions on Neural 
Networks, Vol. 5:1, pp. 130, 1994. 
BORDIGNON, A. W. B. Algoritmo Genético Multiobjetivo: Uma Aplicação Para Seleção 
De Portfólios De Crédito. Orientador: Profa. Dra. Élia Yathie Matsumoto. 2020. Dissertação 
de mestrado - Engenharia Financeira, Fundação Getúlio Vargas – Escola de Economia de São 
Paulo, São Paulo, 2020. 
FOGEL, D. Evolutionary computation toward a new philosophy of machine intelligence, 
2nd edition, IEEE Press, 1999. 
GOLDBERG, David E. Genetic Algorithms in Search, Optimization and Machine 
Learning. 1ed. Boston: Addison-Wesley Publishing Company, 1989. 432 p. 
Introdução aos Algoritmos Genéticos.Obtiko.com, 2021. Disponível em < 
https://www.obitko.com/tutorials/genetic-algorithm/portuguese/encoding.php>. Acesso em 27 
de nov. 2021. 
KUMAZAWA, Anselmo Hitoshi. Funcionamento do algoritmo genético. USP, 2003. Disponível 
em < https://bcc.ime.usp.br/tccs/2003/anselmo/node12.html>. Acesso em em 28 de nov. 2021. 
LINDEN, R., “Algoritmos Genéticos”, 1ª Edição, Ed. Brasport, Brasil,2006. 
LINDEN, R. Algoritmos Genéticos (2a edicao). Brasport, Brasil, 2008. 
MONTESINOS, F. G; ARNOSO, J.; VIEIRA, R., 2005. Using a genetic algorithm for 3-D 
inversion of gravity data in Fuerteventura (Canary Islands), Int J Earth Sci (Geol 
Rundsch) n. 94: pp. 301–316>. 
MITCHELL, Melanie. Genetic Algortihms: An Overview. Complexity, p. 31-39, 1995.

Outros materiais