Versão de Impressão

Propaganda
Proposta de Algoritmo Genético Seqüencial e Paralelo para o
Problema da Mochila
Ricardo de Jesus Carvalho, Gustavo Andrade Lemos, Adenevaldo da Silva Machado
Junior, Lairton Reis, Wilton Oliveira Ferreira, Marcelo Lisboa Rocha
Departamento de Ciência da Computação - Universidade Regional de Gurupi (UNIRG)
Alameda Madrid No. 545 – Jardim Sevilha - 77410-470 – Gurupi/TO – Brasil
{ricardoteclado, gustavolemos21, adenevaldo13, layrtonreis,
wilton_of}@hotmail.com, [email protected]
Resumo. Este artigo trata da implementação de algoritmos genéticos para o
Problema da Mochila, incluindo modelos de algoritmos paralelos e seqüenciais.
Resultados computacionais mostram que algoritmos genéticos resolvem bem o
problema, em especial, a versão paralela.
1. Introdução
Os algoritmos Genéticos (AGs) formam a parte da área dos Sistemas Inspirados na Natureza;
simulando os processos naturais e aplicando-os à solução de problemas reais. São métodos
generalizados de busca e otimização que simulam os processos naturais de evolução. No caso
específico deste trabalho, foram propostas duas versões de algoritmos genéticos, sendo uma
seqüencial e outra paralela, para o problema da mochila. O problema da mochila foi utilizado
neste trabalho, dada a sua complexidade (pertence à classe NP-difícil) [Garey and Johnson 1979]
e por sua grande aplicabilidade tanto prática quanto teórica [Goldberg 1989]. Estas duas versões
do algoritmo genético proposto são implementadas de modo a validar a aplicabilidade desta
técnica à solução de problemas complexos e que a implementação paralela do AG leva a uma
melhora no desempenho do mesmo.
O restante deste trabalho está organizado como se segue. Na seção 2 é descrito o
problema da mochila e a abordagem adotada. A seção 3 discorre a respeito dos algoritmos
genéticos e o seu contexto histórico. Já na seção 4, é apresentado o algoritmo genético proposto
neste trabalho. A seção 5 apresenta os testes e resultados computacionais realizados com as
instâncias geradas e com os algoritmos genéticos propostos (seqüencial e paralelo). Finalmente,
na seção 6, são colocadas as conclusões e possíveis trabalhos futuros.
2. O Problema da Mochila
O problema da mochila é um problema de otimização combinatória. O nome se dá devido ao
modelo de uma situação em que é necessário preencher uma mochila com objetos de diferentes
pesos e valores. O objetivo é que se preencha a mochila com o maior valor possível, não
ultrapassando o peso máximo (capacidade máxima suportada pela mochila). A solução do
problema da mochila foi obtida utilizando o algoritmo genético proposto nesse artigo no intuito
de procurar o maior valor sem ultrapassar a capacidade da mochila no menor tempo possível.
Para isso foram utilizado algoritmos em execução paralela e seqüencial pretendendo comparar o
melhor tempo e solução dos dois algoritmos.
154
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
3. Algoritmos Genéticos
Até meados do século 19, os naturalistas acreditavam que cada espécie havia sido criada
separadamente por um ser supremo ou através de geração espontânea. O trabalho do naturalista
Carolus Linnaeus sobre a classificação biológica de organismos despertou o interesse pela
similaridade entre certas espécies, levando a acreditar na existência de uma certa relação entre
elas. Outros trabalhos influenciaram os naturalistas em direção à teoria da seleção natural, tais
como os de Jean Baptiste Lamark, que sugeriu uma teoria evolucionária no "uso e desuso" de
órgãos; e de Thomas Robert Malthus, que propôs que fatores ambientais tais como doenças e
carência de alimentos, limitavam o crescimento de uma população.
Depois de mais de 20 anos de observações e experimentos, Charles Darwin
apresentou em 1858 sua teoria de evolução através de seleção natural, simultaneamente com
outro naturalista inglês Alfred Russel Wallace. No ano seguinte, Darwin publica o seu On the
Origin of Species by Means of Natural Selection com a sua teoria completa, sustentada por
muitas evidências colhidas durante suas viagens a bordo do Beagle.
Este trabalho influenciou muito o futuro não apenas da Biologia, Botânica e Zoologia,
mas também teve grande influência sobre o pensamento religioso, filosófico, político e
econômico da época. A teoria da evolução e a computação nasceram praticamente na mesma
época: Charles Babbage, um dos fundadores da computação moderna e amigo pessoal de Darwin
desenvolveu sua máquina analítica em 1833. Ambos provavelmente estariam surpresos e
orgulhosos com a ligação entre estas duas áreas.
Por volta de 1900, o trabalho de Gregor Mendel, desenvolvido em 1865, sobre os
princípios básicos de herança genética, foi redescoberto pelos cientistas e teve grande influência
sobre os futuros trabalhos relacionada à evolução. A moderna teoria da evolução combina a
genética e as idéias de Darwin e Wallace sobre a seleção natural, criando o princípio básico de
Genética Populacional: a variabilidade entre indivíduos em uma população de organismos que se
reproduzem sexualmente é produzida pela mutação e pela recombinação genética.
Este princípio foi desenvolvido durante os anos 30 e 40, por biólogos e matemáticos
de importantes centros de pesquisa. Nos anos 50 e 60, muitos biólogos começaram a desenvolver
simulações computacionais de sistemas genéticos. Entretanto, foi John Holland quem começou,
seriamente, a desenvolver as primeiras pesquisas no tema. Holland foi gradualmente refinando
suas idéias e em 1975 publicou o seu livro Adaptation in Natural and Artificial Systems, hoje
considerado a Bíblia de Algoritmos Genéticos [Goldberg 1989]. Desde então, estes algoritmos
vêm sendo aplicados com sucesso nos mais diversos problemas de otimização e aprendizado de
máquina.
4. Algoritmo Genético Proposto
Um algoritmo genético (AG) é uma técnica de procura utilizada na ciência da computação para
achar soluções aproximadas em problemas de otimização e busca. Algoritmos genéticos é uma
classe particular de algoritmos evolutivos que usam técnicas inspiradas pela biologia evolutiva
como hereditariedade, mutação, seleção natural e recombinação (ou crossover) [Resende and
Sousa 2004].
Algoritmos genéticos 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
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
155
aleatoriamente e é realizada através 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 multados para formar uma nova população. A nova população então é utilizada
como entrada para a próxima iteração do algoritmo [Reeves 1993].
Algoritmos genéticos diferem dos algoritmos tradicionais de otimização em
basicamente quatro aspectos:
 Baseiam-se em uma codificação do conjunto das soluções possíveis, e não nos parâmetros
da otimização em si;
 Os resultados são apresentados como uma população de soluções e não como uma solução
única;
 Não necessitam de nenhum conhecimento derivado do problema, apenas de uma forma de
avaliação do resultado;
 Usam transições probabilísticas e não regras determinísticas.
4.1. Operadores Genéticos
O princípio básico dos operadores genéticos é transformar a população através de sucessivas
gerações, estendendo a busca até chegar a um resultado satisfatório [Michalewicz 1996]. Os
operadores genéticos são necessários para que a população se diversifique e mantenha
características de adaptação adquiridas pelas gerações anteriores.
O operador de mutação é necessário para a introdução e manutenção da diversidade
genética da população, alterando arbitrariamente um ou mais componentes de uma estrutura
escolhida, como é ilustrado na figura abaixo, fornecendo assim, meios para introdução de novos
elementos na população. Desta forma, a mutação assegura que a probabilidade de se chegar a
qualquer ponto do espaço de busca nunca será zero, além de contornar o problema de mínimos
locais, pois com este mecanismo, altera-se levemente a direção da busca. O operador de mutação
é aplicado aos indivíduos com uma probabilidade dada pela taxa de mutação Pm; geralmente se
utiliza uma taxa de mutação pequena, pois é um operador genético secundário.
Exemplo de mutação.
O cruzamento é o operador responsável pela recombinação de características dos pais
durante a reprodução, permitindo que as próximas gerações herdem essas características. Ele é
considerado o operador genético predominante, por isso é aplicado com probabilidade dada pela
taxa de crossover Pc, que deve ser maior que a taxa de mutação.
156
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
Este operador pode, ainda, ser utilizado de várias maneiras; as mais utilizadas são:
Um-ponto: um ponto de cruzamento é escolhido e a partir deste ponto as informações
genéticas dos pais serão trocadas. As informações anteriores a este ponto em um dos pais são
ligadas às informações posteriores à este ponto no outro pai, como é mostrado no exemplo da
figura abaixo:
Multi-pontos: é uma generalização desta idéia de troca de material genético através
de pontos, onde muitos pontos de cruzamento podem ser utilizados.
Uniforme: não utiliza pontos de cruzamento, mas determina, através de um
parâmetro global, qual a probabilidade de cada variável ser trocada entre os pais.
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.
4.2. Aplicações
Um sistema com bom desempenho em um ambiente dinâmico, geralmente exige soluções
adaptativas. Sistemas adaptativos tentam resolver problemas acumulando conhecimento sobre o
problema e utilizando estas informações para gerar soluções aceitáveis. Estes problemas,
tipicamente, se encontram nas áreas de configuração de sistemas complexos, alocação de tarefas,
seleção de rotas, e outros problemas de otimização e aprendizado de máquina [Michalewicz and
Fogel 2004].
Seguem-se alguns exemplos de sistemas adaptativos:

Controle de Sistemas Dinâmicos;

Indução e Otimização de Bases de Regras;

Encontrar Novas Topologias Conexionistas:
o
Engenharia de Sistemas Neurais Artificiais;
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
157
o

Modelagem de Estruturas Neurais Biológicas;
Simulação de Modelos Biológicos:
o
Comportamento;
o
Evolução;

Evolução Interativa de Imagens;

Composição Musical.
5. Testes e Resultados Computacionais
Neste trabalho foram implementadas duas versões do algoritmo genético proposto para o
problema da mochila, sendo uma seqüencial (AG-S) e outra paralela (AG-P) para máquinas
multicore (com múltiplos núcleos). Ambos foram codificados na linguagem de programação “C”
e testados em uma máquina com processador Intel Core 2 Duo E4500 2.2 GHz (possui dois
núcleos), 2 Gb de RAM e utilizando a configuração padrão do sistema operacional Windows XP.
Já a versão paralela fez uso da API OpenMP [OpenMP 1997] para possibilitar a exploração os
recursos de múltiplos núcleos disponível. No restante desta seção serão descritos os processos de
geração das instâncias (problemas) para realização dos testes, como também os resultados
computacionais obtidos para ambas as versões do algoritmo genético proposto.
5.1. Instâncias de Teste
As duas versões do algoritmo genético proposto foram testadas em trinta instâncias geradas pelos
autores e com as características conforme apresentada na Tabela 1.
Quantidade de itens
Quantidade de Instância
10
5
50
5
100
5
250
5
500
5
Tabela 1. Características das instâncias de teste utilizadas.
Para realização dos testes, foram criados cinco (5) conjuntos de instância, onde cada
conjunto possui cinco (5) instâncias (problemas). Em cada instância, os itens têm valores e pesos
158
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
diferentes, como também a capacidade da mochila. Nas instâncias criadas, os valores e pesos dos
itens são gerados aleatoriamente, como também a capacidade da mochila em cada instância, são
todos determinados como parâmetros pelos autores.
5.2. Resultados
A partir das instâncias geradas e com as características conforme apresentadas na Tabela 1,
foram realizados testes computacionais e obtidos resultados para as versões propostas do
algoritmo genético.
As duas versões do algoritmo genético foram executadas para as instâncias de teste
utilizando os parâmetros especificados na Tabela 2.
Parâmetro
Valor
Tamanho da população
60
Numero de gerações
5000
Probabilidade de crossover
0.9 (90%)
Probabilidade de mutação
0.01 (1%)
Tabela 2. Parâmetros considerados na execução das versões do algoritmo
genético.
Dados estes valores para os parâmetros, os mesmos foram usados para todas as
execuções, ou seja, nenhum ajuste dos parâmetros foi realizado para uma instância em particular.
Como o processador da máquina utilizada nos testes (Intel Core 2 Duo E4500) possui
apenas dois núcleos, este foi o número máximo considerado na execução dos testes para o AG-P.
Os resultados computacionais obtidos pela execução de ambas as versões do
algoritmo genético (AG-S e AG-P), sobre as instâncias de teste são apresentados nas Tabelas 3 e
4. Em ambas as tabelas são apresentadas as seguintes informações: a identificação do conjunto
de instâncias na primeira coluna; o tempo médio de execução em segundos de CPU para as cinco
instâncias de cada conjunto é apresentado na segunda coluna; e finalmente na terceira coluna, é
apresentada a solução média para as cinco instâncias de cada conjunto.
Conjunto de Instâncias
Tempo médio
Solução média
10
0,896
38,0
50
11,137
87,0
100
34,484
158,8
250
212,434
281,0
500
713,453
245,8
Tabela 3. Resultados computacionais para o algoritmo genético seqüencial AG-S.
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
159
Conjunto de Instâncias
Tempo médio
Solução média
10
0,294
38,0
50
3,721
108,2
100
13,781
296,6
250
97,731
568,2
500
410,265
799,6
Tabela 4. Resultados computacionais para o algoritmo genético paralelo AG-P.
Desempenho de AG-S x AG-P
700
Tempo Médio (segs)
900
Tempo médio AG-S
600
Tempo médio AG-P
800
Solução média AG-S
700
Solução média AG-P
600
500
500
400
400
300
300
200
Solução Média
800
200
100
100
0
0
10
50
100
250
500
Conjunto de Instâncias
Figura 1. Desempenho das duas versões do algoritmo genético proposto (AG-S x AG-P).
Observando os resultados apresentados nas Tabelas 3 e 4 e no gráfico da Figura 1,
pode-se observar que a versão paralela do algoritmo genético proposto (AG-P) apresentou
melhor desempenho, tanto no tocante a qualidade das soluções médias apresentadas (chegando a
até 225% de melhora nas instâncias de maior dimensionalidade) quanto no tempo médio de
execução (melhora de 42% a 67%) em relação à versão seqüencial (AG-S). Desta forma,
verifica-se a boa eficiência da versão paralela do algoritmo genético proposto, pois para dois
núcleos a redução de tempo esperada é de 50% e os tempos médios de execução obtidos ficaram
próximos ao esperado.
160
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
6. Conclusão
Neste trabalho foram apresentadas duas versões de algoritmo genético para a solução do
problema da mochila. Os mesmos foram executados sobre trinta instâncias diferentes. Quanto
aos resultados dos testes computacionais realizados, os desempenhos obtidos pelo AG seqüencial
(AG-S) em relação ao AG paralelo (AG-P) foram comparados e observou-se que o algoritmo
executado em paralelo (AG-P) obteve as melhores soluções médias e em menor tempo médio de
execução computacional para todas as instâncias.
Assim, chega-se a conclusão que os resultados parciais obtidos são animadores,
principalmente no caso paralelo, soluções boas numa quantidade de tempo razoável, visto que
não foi realizado nenhum estudo quanto aos parâmetros utilizados no AG.
Referencias Bibliográfica
Garey, M.R and Johnson, D.S. (1979). “Computers and Intractability A guide to the theory of
NP-completeness”, W.H. Freeman and Co.
Goldberg, D.E. (1989) “Genetic Algorithm in Search, Optimization, and Machine Learning”.
Addison-Wesley Publishing Company.
Michalewicz, Z. (1996) “Genetic Algorithms + Data Structures = Evolution Programs”. Third
Edition, Springer.
Michalewicz, Z.; Fogel, D. (2004) “How to solve it: modern heuristics”. 2. ed. New york:
Springer, 2004.
OpenMP: A proposed Industry Standard API for Shared Memory Programming. White Paper,
October 1997. URL: http://www.openmp.org/openmp/mp-documents/paper/paper.html.
Reeves, C. R. (1993) "Genetic algorithms", in C.R. Reeves (ed), Modern heuristic techniques for
combinatorial problems, Blackwell Scientific Publications, Oxford, p. 151-196.
Resende, Mauricio G. C.; Sousa, Jorge Pinho de (Ed.). Metaheuristics: computer decisionmaking.Kluwer Academic Publishers, 2004.
X Encoinfo – Encontro de Estudantes de Informática do Tocantins
161
Download