metaheurÍsticas evolutivas para o problema de … · campos terrestres. há toda uma logística no...
TRANSCRIPT
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE TECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO
METAHEURÍSTICAS EVOLUTIVAS PARA O PROBLEMA DE ROTEAMENTO DE
UNIDADES MÓVEIS DE PISTONEIO
JOÃO PAULO LIMA DO NASCIMENTO
NATAL-RN
2010
ii
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE TECNOLOGIA
PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO
METAHEURÍSTICAS EVOLUTIVAS PARA O PROBLEMA DE ROTEAMENTO DE
UNIDADES MÓVEIS DE PISTONEIO
por
JOÃO PAULO LIMA DO NASCIMENTO
GRADUADO EM CIÊNCIA DA COMPUTAÇÃO, UERN, 2004
DISSERTAÇÃO SUBMETIDA AO PROGRAMA DE PÓS-GRADUAÇÃO EM
ENGENHARIA DE PRODUÇÃO DA UNIVERSIDADE FEDERAL DO RIO GRANDE
DO NORTE COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO
DO GRAU DE
MESTRE EM ENGENHARIA DE PRODUÇÃO
DEZEMBRO, 2010
© 2010 JOÃO PAULO LIMA DO NASCIMENTO
TODOS DIREITOS RESERVADOS.
O autor aqui designado concede ao Programa de Pós-Graduação em Engenharia de Produção
da Universidade Federal do Rio Grande do Norte permissão para reproduzir, distribuir,
comunicar ao público, em papel ou meio eletrônico, esta obra, no todo ou em parte, nos
termos da Lei.
Assinatura do Autor: ___________________________________________
APROVADO POR:
________________________________________________________________
Dario José Aloise (presidente, PEP/UFRN)
________________________________________________________________
Daniel Aloise (examinador, PEP/UFRN)
________________________________________________________________
Caroline Thennecy de Medeiros Rocha (examinador, PEP/UFRN)
________________________________________________________________
Josemir Araújo Neves (examinador externo, EMPARN)
iii
Dedico e ofereço com ternura e gratidão, o presente
trabalho, aos meus familiares e amigos.
iv
AGRADECIMENTOS
A Deus por todo fortalecimento espiritual, luz e por todas as permissões concedidas,
indispensáveis para a conclusão deste trabalho.
Aos meus familiares e amigos, por toda formação e incansável apoio e motivação
para caminhar fortemente pelo desafio da vida.
À UFRN e ao PEP pela formação acadêmica e cidadã.
Ao meu orientador Dario José Aloise, pela força e confiança nos momentos mais
difíceis do desenvolvimento deste trabalho.
Ao meu grande amigo Allison Guedes, que me apoiou enquanto estava em missão de
estudos no Rio de Janeiro.
À CAPES, por fornecer recursos necessários enquanto atuante no PROCAD-NF, no
PEP-UFRJ.
A todos os professores do PEP-UFRJ, especialmente aos professores Samuel
Jurkiewicz e Laura Bahiense.
Meus sinceros AGRADECIMENTOS!!!
v
Resumo da Dissertação apresentada à UFRN/PEP como parte dos requisitos necessários para
a obtenção do grau de Mestre em Engenharia de Produção.
METAHEURÍSTICAS EVOLUTIVAS PARA O PROBLEMA DE ROTEAMENTO DE
UNIDADES MÓVEIS DE PISTONEIO
JOÃO PAULO LIMA DO NASCIMENTO
Dezembro/2010
Orientador: Dario José Aloise
Curso: Pós-Graduação em Engenharia de Produção
O presente trabalho apresenta estratégias metaheurísticas baseadas no framework dos
Algoritmos Evolutivos (Genéticos e Meméticos) com a adição da técnica Vocabulary
Building para a resolução do Problema de Otimização do Emprego de Unidades Móveis de
Pistoneio (UMPs). Por se tratar de um problema NP-árduo, uma modelagem matemática é
formulada para o problema, permitindo a construção de instâncias testes que são utilizadas
para validar as metaheurísticas evolutivas desenvolvidas.
Palavras-Chave: Algoritmos Evolutivos, Vocabulary Building, Roteamento de Veículos,
Unidade Móvel de Pistoneio, Otimização Combinatória, NP-árduo.
vi
Abstract of Master Thesis presented to UFRN/PEP as fulfillment of requirements to the
degree of Master of Science in Production Engineering
EVOLUTIONARY METAHEURISTICS APPLIED TO ROUTING PROBLEM OF
UNITS MOBILE RECOVERY OF OIL
December/2010
Thesis Supervisor: Dario José Aloise
Program: Master of Science in Production Engineering
This paper presents metaheuristic strategies based on the framework of evolutionary
algorithms (Genetic and Memetic) with the addition of Technical Vocabulary Building for
solving the Problem of Optimizing the Use of Multiple Mobile Units Recovery of Oil (MRO
units). Because it is an NP-hard problem, a mathematical model is formulated for the
problem, allowing the construction of test instances that are used to validate the evolutionary
metaheuristics developed.
Keywords: Evolutionary Algorithms, Vocabulary Building, Vehicle Routing, Mobile Unit
Recovery of Oil, Combinatorial Optimization, NP-hard.
vii
SUMÁRIO
Lista de tabelas .............................................................................................................. ix
Lista de figuras ............................................................................................................... x
Lista de abreviaturas, siglas e símbolos ........................................................................... xi
Capítulo 1 - Introdução .................................................................................................. 12
1.1 Contextualização do Objeto de Estudo e Justificativa ............................................ 12
1.2 Apresentação do Problema.................................................................................... 12
1.3 Objetivos ............................................................................................................. 13
1.3.1 Geral ........................................................................................................... 13
1.3.2 Específicos.................................................................................................. 13
1.4 Hipóteses .............................................................................................................. 14
1.5 Metodologia ......................................................................................................... 14
1.6 Estrutura do Trabalho ........................................................................................... 14
Capítulo 2 – O Problema de Roteamento de Unidades Móveis de Pistoneio - PRUMP .... 16
2.1 A Produção de Petróleo na Bacia Potiguar ........................................................... 16
2.2 Descrição do Problema ......................................................................................... 20
2.3 Formulação Matemática........................................................................................ 22
2.3.1 Maximização da Produção .......................................................................... 23
2.3.2 Minimização de Tempos de Percurso .......................................................... 26
2.4 Problemas Correlatos ............................................................................................ 27
2.4.1 Problema do Caixeiro Viajante.................................................................... 27
2.4.2 O Problema da Orientação – PO .................................................................. 30
2.4.3 O Problema do Caixeiro Viajante Coletor de Prêmios ................................. 32
2.4.4 O Problema de Roteamento de Veículos ..................................................... 32
2.5 Complexidade....................................................................................................... 35
2.6 Trabalhos já Realizados ........................................................................................ 37
Capítulo 3 – Algoritmos Evolutivos e Vocabulary Building ............................................ 38
3.1 Algoritmos Genéticos ........................................................................................... 38
3.1.1 Princípios .................................................................................................... 38
3.1.2 Definições ................................................................................................... 39
3.1.2.1 Cromossomo e Genes ............................................................................ 39
3.1.2.2 População e Gerações ............................................................................ 40
3.1.2.3 Seleção .................................................................................................. 41
3.1.2.4 Operadores Genéticos ............................................................................ 43
3.1.2.4.1 Cruzamento .................................................................................... 43
3.1.2.4.2 Mutação ......................................................................................... 45
3.1.3 Estrutura ..................................................................................................... 47
3.2 Algoritmos Meméticos ......................................................................................... 48
3.3 Vocabulary Building ............................................................................................. 51
Capítulo 4 – Metaheurísticas aplicadas ao PRUMP ......................................................... 53
4.1 Algoritmo Genético Puro (AGP) ........................................................................... 53
4.1.1 Estrutura dos Cromossomos e Genes ........................................................... 53
4.1.2 População .................................................................................................. 55
4.1.3 Gerações .................................................................................................... 55
4.1.4 Função de Aptidão ...................................................................................... 55
viii
4.1.5 Seleção ....................................................................................................... 57
4.1.6 Operação de Cruzamento ............................................................................ 58
4.1.7 Operação de Mutação.................................................................................. 59
4.2 Algoritmo Memético (AM) ................................................................................... 60
4.3 Vocabulary Building (VB) .................................................................................... 63
Capítulo 5 – Testes Computacionais e Resultados Obtidos .............................................. 68
5.1 Caracterização e Metodologia ............................................................................... 68
5.2 Testes Preliminares: instâncias de 11 Poços .......................................................... 70
5.3 Testes realizados com instâncias de 99 Poços ....................................................... 73
Capítulo 6 – Conclusões e Sugestões para Trabalhos Futuros .......................................... 78
6.1 Conclusões ........................................................................................................... 78
6.2 Sugestões para Trabalhos Futuros ......................................................................... 78
Referências Bibliográficas .............................................................................................. 80
Apêndice......................................................................................................................... 85
ix
LISTA DE TABELAS
Tabela 2.1 – Semelhanças e diferenças entre o PCV e o PRUMP .....................................30
Tabela 4.1 – Matriz de Adjacências para Exemplo ...........................................................56
Tabela 5.1 – Testes para obtenção dos valores dos parâmetros do AG ..............................69
Tabela 5.2 – Comparação de Resultados Exatos e Heurísticos para as instâncias ITP11 ...71
Tabela 5.3 – Comparação de Resultados Exatos e Heurísticos para as instâncias IP99 ......75
x
LISTA DE FIGURAS
Figura 2.1 – Bacia Potiguar ............................................................................................. 17
Figura 2.2 – Unidade Móvel de Pistoneio ........................................................................ 18
Figura 2.3 – Esquema Gráfico de um Campo Terrestre ................................................... 19
Figura 2.4 – Representação gráfica dos caminhos yijk ...................................................... 25
Figura 2.5 – Prova da equação da ordem do caminho yijk................................................. 26
Figura 2.6 – PRV transformado num PCV ampliado ....................................................... 35
Figura 2.7 – Classes de Problemas .................................................................................. 36
Figura 3.1 – Exemplo de Cromossomo para o PCV ......................................................... 40
Figura 3.2 – Crossover de um ponto ................................................................................ 44
Figura 3.3 – Crossover de dois pontos ............................................................................. 44
Figura 3.4 – Crossover Unifome usando Máscara ............................................................ 45
Figura 3.5 – Esquema do Cromossomo de Mutação ........................................................ 46
Figura 3.6 – Esquema da Troca de Posição...................................................................... 46
Figura 3.7 – Inversão de Genes ....................................................................................... 46
Figura 3.8 – Estrutura básica do AG desenvolvido no trabalho ........................................ 48
Figura 3.9 – Operadores de recombinação e mutação agindo como estratégias de
diversificação junto a AMs. ............................................................................................. 49
Figura 3.10 – Estrutura Geral de um AM......................................................................... 51
Figura 4.1 – Exemplo de Cromossomo para 3 UMPs ...................................................... 54
Figura 4.2 – Grafo com rotas para 3 UMPs ..................................................................... 54
Figura 4.3 – Cromossomos com produção e tempos de jornada ....................................... 57
Figura 4.4 – Cruzamento entre Cromossomos ................................................................. 58
Figura 4.5 – Mutação ...................................................................................................... 60
Figura 4.6 – Processo de Busca Local do AM ................................................................. 61
Figura 4.7 – Estrutura de um Vocábulo ........................................................................... 63
Figura 4.8 – Exemplos de Vocábulos .............................................................................. 64
Figura 4.9 – Inserção de Vocábulos ................................................................................. 66
Figura 5.1 – Malha com 11 poços.................................................................................... 72
Figura 5.2 – Malha com 99 poços.................................................................................... 74
xi
LISTA DE ABREVIATURAS, SIGLAS E SÍMBOLOS
AG – Algoritmo Genético
AGP – Algoritmo Genético Puro
AM – Algoritmo Memético
AM+VB – Algoritmo Memético com Vocabulary Building
BSW – Basic Sediment and Water
ETO – Estação de Tratamento de Óleo
GLP – Gás Liquefeito de Petróleo
GRASP – Greedy Randomized Adaptive Search Procedures
NP – Nondeterministic Polynomial
NPC – NP-Completo
PCV – Problema do Caixeiro Viajante
PCVCP – Problema do caixeiro Viajante Coletor de Prêmios
PO – Problema de Orientação
POE-UMP – Problema do Emprego de Unidades Móveis de Pistoneio
PRUMP – Problema de Roteamento das Unidades Móveis de Pistoneio
PRV – Problema de Roteamento de Veículos
PSRV – Problema de Sequenciamento e Roteamento de Veículos
PSV – Problema de Sequenciamento de Veículos
TCPU – Tempo de Processamento Computacional
UMP – Unidade Móvel de Pistoneio
VB – Vocabulary Building
12
Capítulo 1
[Introdução]
1.1 Contextualização do Objeto de Estudo e Justificativa
Atualmente, é importante para qualquer empresa se manter competitiva no mercado
global, a perfeita utilização de seus recursos, investir em pesquisas em seu setor de atuação
e evitar gastos desnecessários. Não diferente, a PETROBRAS ao longo de décadas vem
investindo em tecnologias de produção e exploração de petróleo no Brasil, otimizando seus
recursos para melhor desenvolver seus produtos.
A exploração de petróleo no Brasil acontece tanto em campos terrestres assim
como em campos marítimos. Nesse trabalho, é dada ênfase à exploração de petróleo em
campos terrestres. Há toda uma logística no transporte de óleo e gás através de uma frota
de veículos, desde sua origem nos campos de exploração até o consumidor final que deve
ser considerada.
Otimizando-se toda a logística do transporte terrestre condutor do petróleo tem-se
ganhos maiores na produção total, uma vez que se economiza com os gastos provenientes
do transporte e a obtenção do produto se dá em menos tempo.
1.2 Apresentação do Problema
Os poços terrestres de petróleo da bacia potiguar são explorados há cerca de 30
anos, onde na maioria é empregado o método de elevação artificial, correspondendo a
cerca de 98% dos poços. Um desses métodos é a utilização de veículos equipados para
coleta e transporte de petróleo denominados por Unidade Móvel de Pistoneio – UMP.
Estes veículos se encontram inicialmente num depósito de onde partem em busca dos
13
poços para pistoneio, e após conclusão de suas respectivas jornadas, retornam ao depósito
de origem. O problema consiste em traçar as melhores rotas para cada veículo de forma
que seja maximizada toda a produção de petróleo respeitando-se suas jornadas de trabalho.
Na literatura, este problema é conhecido por: Problema de Otimização do Emprego de
Unidades Móveis de Pistoneio – POE-UMP. Neste trabalho, o problema abordado será
denominado por Problema de Roteamento de Unidades Móveis de Pistoneio – PRUMP,
pela ênfase à aplicação a mais de uma UMP.
1.3 Objetivos
Os objetivos deste trabalho estão subdivididos em objetivo geral e objetivos
específicos.
1.3.1 Geral
O objetivo principal deste trabalho é o desenvolvimento de Algoritmos Evolutivos
e técnicas heurísticas aplicadas a uma frota de veículos do PRUMP.
1.3.2 Específicos
Com a implementação dos Algoritmos Evolutivos para o PRUMP com múltiplos
veículos, será possível atender os seguintes objetivos específicos:
Consolidar um método heurístico que solucione o PRUMP com mais de um
veículo;
Aplicar instâncias utilizadas em métodos exatos para comparação;
Abrir caminho para pesquisas, desenvolvimento e aperfeiçoamento de
métodos heurísticos para o PRUMP com mais de um veículo.
14
1.4 Hipóteses
Acredita-se que através de um método heurístico seja possível aproximar-se em
tempo viável das soluções ótimas obtidas através dos métodos exatos que para instâncias
muitos maiores leva-se um tempo demasiado.
1.5 Metodologia
O desenvolvimento deste trabalho foi realizado em etapas, as quais são:
Contextualização do Problema abordado;
Revisão da literatura acerca do problema de estudo;
Adaptação de modelos matemáticos propostos para o PRUMP;
Revisão e contextualização de Algoritmos Evolutivos e outras heurísticas;
Definição de Algoritmos Genético e Memético e a técnica Vocabulary
Building para o PRUMP;
Implementação na linguagem de programação C++ das metaheurísticas
propostas;
Desenvolvimento e comparação de resultados usando instâncias simuladas.
1.6 Estrutura do Trabalho
O presente trabalho se encontra organizado em capítulos:
O capítulo 2 aborda todo o referencial teórico acerca do PRUMP, apresentando sua
formulação matemática e definições, comparando com outros problemas correlatos
existentes na literatura.
O capítulo 3 discute os conceitos sobre Algoritmos Evolutivos (Genético e
Memético) e a técnica Vocabulary Building.
O capítulo 4 apresenta os conceitos e definições da implementação das
metaheurísticas utilizadas no trabalho.
O capítulo 5 apresenta os testes computacionais realizados com instâncias de
exemplo criadas para validação dos métodos heurísticos desenvolvidos. Instâncias
15
utilizadas em trabalhos anteriores acerca do POE-UMP foram utilizadas para efeitos de
comparação com suas soluções obtidas através de métodos exatos.
O capítulo 6 discute as conclusões obtidas e apresenta as sugestões para trabalhos
futuros.
Ao final as referências bibliográficas são listadas.
Um apêndice contendo os gráficos de comparação das evoluções das
metaheurísticas aplicadas ao PRUMP é apresentado ao final.
16
Capítulo 2
[O Problema de Roteamento de Unidades Móveis de
Pistoneio - PRUMP]
2.1 A Produção de Petróleo na Bacia Potiguar
O petróleo é a principal fonte de energia na atualidade. Composto por
hidrocarbonetos faz parte de diversos produtos do nosso dia-a-dia. Além dos combustíveis,
ele também está presente em fertilizantes, plásticos, tintas, borracha, entre outros. De
origem fóssil, o petróleo levou milhões de anos para se formalizar nas rochas sedimentares.
No Brasil, a maior parte das reservas situa-se nos campos marítimos, alcançando
profundidades maiores do que as dos demais países produtores (PETROBRAS, 2010).
No Nordeste, precisamente nos estados do Ceará e Rio Grande do Norte, juntos
produz-se cerca 103 mil barris de petróleo por dia, sendo 85% dessa produção dos campos
terrestres. São quatro milhões de metros cúbicos (m³) por dia, transportados em 556
quilômetros (km) de oleodutos e 542 km de gasoduto e a região também apresenta mais de
500 km de rede elétrica de alta tensão (PETROBRAS, 2010).
No Rio Grande do Norte são fabricados três produtos: gás natural (3,76 milhões de
m³/dia), GLP (Gás Liquefeito de Petróleo – 334 toneladas/dia) e óleo diesel (4,5 mil
barris/dia – 1 barril equivale a 159 litros). Há 23 plataformas marítimas, 62 campos
terrestres, cerca de 5000 poços e 67 estações coletoras (PETROBRAS, 2010).
A produção envolve cinco segmentos da indústria: exploração, explotação,
transporte, refino e distribuição. A exploração consiste em estudos antecipados acerca do
local para a produção, que irão determinar a viabilidade econômica de se extrair petróleo
daquele lugar. A explotação ocorre quando existe viabilidade econômica na extração de
petróleo e utiliza técnicas de perfuração através do uso de sondas, oferecendo um
revestimento metálico ou de concreto para o poço. O transporte do petróleo pode ser
17
realizado através de bombeamento por tubulações marítimas e terrestres, ou transportados
por carretas e navios para as refinarias. Nas refinarias, existe um complexo de tubulações,
tanques, vasos, torres, compressoras dentre todo um conjunto que fracionam e processam o
petróleo em seus derivados, tais como o gás de cozinha, querosene, combustível de
automóveis, óleos lubrificantes, material para asfaltos, dentre muitos. E finalmente, a partir
das refinarias os derivados do petróleo, são distribuídos aos centros consumidores, tais
como mercados e postos de combustíveis.
Um poço de petróleo é resultante da perfuração vertical realizada com propósitos
de extração e medem de cinco a sete polegadas na Bacia Potiguar (região que compreende
campos de poços para extração situados no Rio Grande do Norte e Ceará, ver Figura 2.1).
Um poço contém elementos pressurizados tais como óleo, água (geralmente salobra) e gás
natural. Desses, apenas o óleo e o gás são comercializáveis. A água também é extraída para
que o poço possa ser realimentado de maneira mais eficiente. A pressão exercida sobre
estes fluídos de um poço implicam em sua capacidade de surgência.
Figura 2.1 – Bacia Potiguar.
Fonte: (Aloise et al., 2009).
Um poço é surgente quando possui energia sob forma potencial suficiente para
elevar o óleo até um ponto para sua captação (elevação natural). Devido à pressão ser alta
nesses poços, é comum o uso de válvulas para controle de uma vazão desejada. Quando o
poço não possui tal pressão suficiente para elevação, sendo necessário o uso de
18
equipamentos que são capazes de fazer o bombeamento do óleo até a superfície (elevação
artificial), são classificados como não surgentes (BARROS, 2001 apud NEVES, 2000). Os
métodos de elevação artificial são métodos de bombeio em que se adiciona pressão ao
fluido para que ele possa vencer as perdas de cargas. São empregados diversos tipos de
processos mecânicos para fazer com que o petróleo tenha condições de chegar à superfície,
cada um se diferenciando de acordo com suas particularidades.
A quantidade de petróleo é finita. Devido a esse fator, a produção num dado poço
irá diminuir até chegar ao seu fim e o poço abandonado (fechado), devido a manutenção
dos equipamentos para bombeio. não serão mais justificáveis (economicamente inviáveis).
No decorrer do tempo, a constante produção faz com que poços surgentes se tornem não
surgentes (bombeáveis), e estes por sua vez, se tornam pistoneáveis, com baixa produção
de petróleo, pois não necessitam mais de um equipamento permanente para bombeamento.
Os poços pistoneáveis são explotados por veículos equipados com acessórios para elevação
de fluídos, denominado Unidade Móvel de Pistoneio (UMP).
As UMPs são utilizadas para explotação em poços com baixa produção de petróleo
devido ao seu baixo custo em comparação ao uso de equipamentos fixos. Portanto, seu
custo é compensado pela produção sobre os vários poços percorridos em sua jornada de
trabalho. Ao chegar num determinado poço, é montado todo o equipamento necessário
para a explotação do petróleo. É introduzido um copo de pistoneio suspenso por um cabo
de aço e, assim, viabiliza-se a retirada do fluido por levantamento em ações repetidas até
que se chegue ao limite de capacidade do poço, ou seja, num nível bastante baixo.
Esvaziado um poço, o conjunto é desconectado e então se desloca para outro mais adiante
(Figura 2.2).
Figura 2.2 – Unidade Móvel de Pistoneio.
Fonte: (Aloise et al., 2009).
19
Diariamente, é definido para cada UMP um trajeto contendo poços para pistoneio.
Estes poços situam-se numa região denominado Campo de Produção. Os vários poços
espalhados por um campo terrestre são, via de regra, todos acessíveis através de estradas,
de modo que é aceitável considerar que de um poço qualquer se chega a qualquer outro
pelas estradas, formando um conjunto conexo. Na Figura 2.3, é ilustrado um exemplo do
esquema de um campo terrestre. Neste esquema, os círculos são poços de petróleo,
enquanto o quadrado simboliza a ETO ( Estação de Tratamento de Óleo ). As linhas
correspondem aos trechos de estradas que interligam os nós ( poços ou ETO ) entre si. A
ETO é o local para onde converge toda a produção desse campo.
Figura 2.3 – Esquema Gráfico de um Campo Terrestre.
Fonte: (Barros, 2001).
A UMP se destina a operar exclusivamente nos poços disponíveis para pistoneio,
admitindo-se a possibilidade de que os demais poços possam servir como pontos de
passagem ou nós de transbordo, já que podem estar no caminho entre dois ou mais poços
de interesse. Embora um único poço disponível para pistoneio possa representar uma
pequena quantidade mensal de óleo produzido, quando esse valor é comparado com o
universo do campo, o somatório do que se pode produzir quando são considerados todos os
poços pistoneáveis pode ser significativo, justificando-se o uso da UMP. Além disso, a
tendência natural de esgotamento de uma jazida sugere que o amadurecimento dos poços
Poços não disp. p/ Pistoneio
ETO
Poços disponíveis p/ Pistoneio
ETO
20
encaminha-os à condição futura de poços pistoneáveis, aumentando-lhes a importância.
Na Bacia Potiguar, os poços pistoneáveis representam 4 % do total (BARROS, 2001).
2.2 Descrição do Problema
As UMPs têm que extrair óleo dos poços pistoneáveis. Portanto, devem atender a
um ou mais poços durante um dia de operação. O mais importante não é passar por muitos
poços, mas operar sobre um conjunto deles que proporcione um bom retorno em termos de
total de óleo produzido. Idealmente, o objetivo deve ser o de buscar produzir o máximo
possível de óleo a cada dia de trabalho. Isso caracteriza o problema
como sendo de otimização.
Porém, toda essa operação de pistoneio se encontra sujeita a um conjunto definido
de restrições que implicam na delimitação direta ou indiretamente da produção total num
campo de produção. Portanto, há um número finito de combinações possíveis baseado na
decisão de qual trajeto deve ser percorrido para se ter uma maior produção, respeitando-se
as restrições existentes. Trata-se, portanto de um problema de otimização sujeito a
restrições. No presente trabalho, o problema é conhecido por Problema de Roteamento de
Unidades Móveis de Pistoneio (PRUMP).
Para um melhor entendimento do problema, as principais restrições são discutidas
nos tópicos seguintes:
A quantidade de UMPs: neste trabalho, é definido um número m que se refere à
quantidade disponível de UMPs para pistoneio para um determinado campo de
produção. Quanto mais unidades disponíveis, maior será a produção obtida dentro
de uma jornada de trabalho. A inclusão de novas UMPs ao problema implica um
aumento no consumo de combustível utilizado pelas mesmas, mas que é diluído
devido a uma maior produção, sendo, portanto desconsiderado neste trabalho.
Alguns trabalhos anteriores consideraram apenas uma única UMP para pistoneio.
Para mais detalhes acerca desses trabalhos, consultar Aloise et al. (2009).
Quantidade de Depósitos: um campo de produção terrestre pode conter uma ou
mais estações de coleta de fluidos. As estações podem apresentar diversas funções
e, em princípio, podem estar localizadas em qualquer ponto do campo de petróleo.
Neste trabalho, é considerado apenas um único depósito, conhecido por estação
21
central com função de ETO. As UMPs iniciam nesse depósito, dirigem-se aos
poços designados e depois retornam ao depósito de origem, onde deixam todo
fluido extraído.
A capacidade de transporte de uma UMP: uma UMP possui um pequeno tanque
que suporta até 5 m3 de óleo. Entretanto, para que se possa lhe dar maior eficiência,
utiliza-se um caminhão-tanque de apoio, cuja função é a de remover da UMP os
fluidos já pistoneados e transportá-los para a ETO, de modo a garantir que o tanque
da UMP nunca estará cheio, ou seja, capacidade ilimitada. Essa é a forma
considerada neste trabalho para efeitos de simplificação do modelo.
Jornada diária de uma UMP: cada UMP deve seguir o percurso fechado que lhe é
destinado, respeitando o tempo total de sua jornada de trabalho. Então cada UMP k
possui uma jornada de trabalho (Lk). Nos campos da Bacia Potiguar, para efeitos
deste trabalho, as jornadas diárias são de 8 ou 16 horas (Lk = 480 minutos ou 960
minutos, respectivamente). Durante o percurso de uma UMP k, depois de concluído
o pistoneio de um poço i, passa-se a outro poço j. Não se pode pistonear mais poços
ultrapassando o limite Lk. Uma rota a ser cumprida em certo dia, em princípio, não
conterá todos os poços. Os poços que não forem explotados num dia qualquer
poderão ser objeto de atuação das UMPs nos dias subseqüentes, dependendo do
grau de atratividade que apresentem.
O tempo do trajeto de uma UMP k de um poço i para um poço j (tij): o tempo
que a UMP k gasta para se deslocar entre os poços ou entre um poço e a ETO deve
ser considerado para compor o tempo total da rota a ser cumprida e este, por sua
vez, é limitado pela jornada diária Lk. Por transportar equipamentos, uma UMP é
um veículo pesado, e mesmo em estradas de asfalto, sua velocidade média
registrada foi de 12 km/h (200m/min). Portanto, admitindo-se uma velocidade
média, é possível montar uma matriz de distâncias e convertê-las em medidas de
tempo, ou seja, tempo de deslocamento de uma UMP entre cada poço ou de um
poço para a ETO, definida no modelo como tij.
Tempo de atuação de uma UMP k num poço i: a ação de uma UMP k sobre um
poço i qualquer corresponde ao esvaziamento desse poço e o tempo que dura essa
ação que consiste em três etapas chamadas de Tempo de montagem, Tempo de
operação e Tempo de desmontagem. Pare este trabalho adota-se a soma dos tempos
22
dessas três etapas, que será definido como t’i (tempo total de atuação de uma UMP
k num poço i).
Fator BSW de um poço: o óleo extraído de um poço não está sozinho. Na
verdade, ele faz parte de uma mistura composta de água (salobra) e outros
sedimentos. Logo, o fator BSW (Basic Sediment and Water) indica a taxa de água e
sedimentos composta do volume extraído. Essa taxa varia de 0 a 100%, quanto
mais próxima de 100% mais impuro estaria o óleo. É considerado um fator médio
nos trabalhos acerca do POE-UMP. Neste trabalho, adotou-se uma simplificação
utilizada em Aloise et al. (2009) em que pi = vi * (1 - BSWi), onde pi se refere ao
total de produção de óleo puro obtida no poço i equivalente ao produto do volume
estimado vi pela taxa BSW do poço i.
Os caminhos existentes entre os poços (estradas), os poços e o depósito (ETO) são
modelados como um grafo onde os vértices são os poços, sendo o depósito o vértice
inicial de índice zero (p0), e os caminhos existentes entre cada vértice são os arcos. A
seguir um resumo das definições apresentadas anteriormente é apresentado.
Dados de entrada:
m – número de UMP’s;
n – número total de poços;
pi – produção de óleo no poço i;
t’i – tempo de operação (montagem, explotação e desmontagem) no poço i;
Lk – jornada de trabalho definida para uma UMP k;
tij – tempo de trajeto entre os poços i e j.
2.3 Formulação Matemática
Neste trabalho são revisitados dois modelos matemáticos para o PRUMP. No
subitem 2.3.1 uma formulação para a maximização da produção de óleo é apresentada
(NEVES; DIDIER, 2007). No subitem 2.3.2, uma formulação para a minimização de
tempos de percurso após a obtenção da produção ótima foi desenvolvida de acordo com
Aloise, Santos e Duhamel (2009). Para ambos os modelos, são válidas as seguintes
variáveis de decisão:
23
Variáveis de decisão:
=
2.3.1 Maximização da Produção
Seja
P – produção diária total a ser obtida (m³),
é definido a seguir o seguinte modelo matemático para a maximização de óleo:
Maximização da produção para m UMPs:
sujeito a:
24
A função objetivo (2.1) maximiza a produção de óleo obtida pelas m UMPs num
campo de produção com n poços em um único dia. O total produzido P é apresentando
na unidade de medida de volumes (m³).
Toda a produção diária está sujeita a um conjunto de restrições. A restrição (2.2)
limita o tempo total de produção das UMPs (tempo de operação mais tempo de trajeto
entre os poços) a uma jornada diária atribuída a cada UMP k. As restrições (2.3) e (2.4)
condicionam o números de entrada e saída de arcos de um poço. Caso ele seja
pistoneado por uma UMP k (xik = 1), haverá apenas um arco entrando e outro saindo
para este poço. Caso contrário, não haverá qualquer arco entrando ou saindo desse
poço. As restrições (2.5) e (2.6) limitam a apenas um arco entrando e saindo do
depósito (ETO). As restrições (2.7) configuram apenas uma UMP para cada poço. As
restrições (2.8) e (2.9), em atuação conjunta com as restrições de (2.3) a (2.7), ajudam a
descartar possíveis subciclos ou sub-rotas inválidas. E as restrições (2.10) configuram
como variáveis binárias xik e rijk, e as variáveis inteiras yijk como não-negativa.
As variáveis yijk representam o caminho a ser percorrido a partir de i para j, por uma
UMP k numa solução, sabendo que yijk não pode ser negativa ( ). Por exemplo,
seja uma solução para duas UMPs, em que y011 = 1, y121 = 2, y201 = 3, y032 = 1, y342 = 2 e
y402 = 3. De acordo com esses valores, a UMP1, a partir do depósito, visita o poço 1, e
logo em seguida o poço 2, retornando ao depósito. A UMP2 inicia no depósito, e visita
os poços 3 e 4, retornando ao depósito. Estes caminhos desenvolvidos pelas UMPs 1 e
2, com base nos seus valores yijk, são representados na Figura 2.4.
25
Figura 2.4 – Representação gráfica dos caminhos yijk.
Fonte: Autor.
Em (2.9), representa o valor limite de poços presentes numa sub-rota, sem que a
soma dos tempos t’i não ultrapassem Lk, para uma UMP k. O valor de é obtido
colocando-se em ordem crescente os valores t’i de cada poço i, até ter-se .
Por exemplo, sejam os tempos de operação t’1 = 120, t’2 = 50, t’3 = 40 e t’4 = 60, para
uma jornada Lk = 240. Somando-se em ordem crescente, temos um limite = 3, pois se
pode ter até 3 poços, sem ultrapassar a jornada Lk = 240: t’3 + t’2 + t’4 = 150 < Lk. Ao
acrescentar o tempo do quarto poço (t’1) à soma (t’3 + t’2 + t’4), o valor final seria igual
a 290, que ultrapassa o valor Lk = 240, portanto, não sendo permitido um valor para
. Em outras palavras, para este exemplo, pode-se visitar até 3 poços, sem
ultrapassar o limite da jornada Lk. O valor máximo para uma variável yijk será + 1, se a
rota rijk for escolhida (rjik = 1).
Em (2.8) são definidas as ordens de percurso yijk para uma UMP k. Se um poço xi é
pistoneado por uma UMP k (xik = 1), então a diferença entre as somas dos valores dos
percursos yijk que saem do poço i ( ) com os que entram no mesmo poço i
( ), ambas as somas com i≠j, é igual ao valor xik. Por exemplo, seja o percurso
da UMP1 já ilustrado na Figura 2.4. Para i = 1, tem-se y121 – y011 = x11. Para i = 2, tem-
26
se y201 – y121 = x21. Substituindo pelos valores da ordem do caminho, tem-se, para i = 1
e i = 2 respectivamente: 2 – 1 = 1 e 3 – 2 = 1, satisfazendo o conjunto de equações
(2.8). Esta prova é ilustrada na Figura 2.5.
Figura 2.5 – Prova da equação da ordem do caminho yijk.
Fonte: Autor.
2.3.2 Minimização de Tempos de Percurso
Em Aloise, Santos e Duhamel (2009) foi proposta para o POE-UMP uma
formulação matemática multi-objetivo para uma única UMP em duas fases. Na primeira, o
modelo matemático descreve a fase de maximização da produção de petróleo e, na
segunda, o modelo descreve a fase de minimização de tempos de percurso das rotas,
considerando a produção ótima obtida na primeira fase.
Com base nesses modelos matemáticos, é proposta a formulação matemática para
minimização dos tempos de percurso para o PRUMP:
Seja
T – a soma dos tempos mínimos de percurso (minutos),
o seguinte modelo matemático descreve a minimização dos tempos de percurso:
27
Minimização dos tempos de percurso:
sujeito a:
Em (2.11) o objetivo é minimizar os tempos de percurso pelas m UMP(s). Para este
objetivo, as restrições de (2.3) a (2.10) também são consideradas e a restrição (2.12)
garante que a produção obtida P seja igual à produção ótima P* da fase anterior, a de
maximização da produção de óleo.
2.4 Problemas Correlatos
Na literatura são encontrados outros problemas semelhantes ao PRUMP. Estes
problemas serão discutidos em cada um dos subitens seguintes.
2.4.1 Problema do Caixeiro Viajante
O PRUMP possui semelhanças com o Problema do caixeiro Viajante (PCV)
descrito na literatura. Semelhanças essas que contribuem para a compreensão do problema
proposto. O PCV enuncia que dado um conjunto de cidades interligadas por ruas, estradas,
canais, etc., de maneira que nenhuma esteja isolada das demais, um viajante partindo de
uma dessas cidades deve percorrer por todas sem repetir qualquer cidade, voltando à
cidade de partida. Esse caminho deve ser feito com o menor custo possível, admitindo-se
que as ligações entre as cidades tenham custos. Esse problema é modelado como um grafo
orientado, onde as cidades seriam os nós e as suas ligações seriam os arcos. A solução para
o problema é um ciclo hamiltoniano de menor custo possível.
Proposto inicialmente em 1934 por Hassler Whitney durante um seminário na
Universidade de Princenton, época em que algoritmos computacionais para resolução de
28
problemas matemáticos ainda estavam surgindo (FLOOD, 1956). Somente no final da
década de 1940 que J. B. Robinson implementou o PCV computacionalmente em
programação linear (APPLEGATE et al., 2007). Mas a primeira formulação matemática
foi apresentada somente em 1954 por Dantzig, Fulkerson e Johnson (LAPORTE, 1997):
Sujeito a:
A função objetivo (2.13) visa a minimização dos custos (cij) das rotas envolvidas
(xij) na solução ótima do PCV. A restrição (2.14) garante que há apenas uma entrada para a
cidade j. A restrição (2.15) garante que há apenas uma saída partindo de uma cidade i. A
restrição (2.16) configura a variável xij como binária. E por fim o conjunto de restrições em
(2.17) define um vetor x que possui todo o percurso ao longo da rota partindo de um nó
inicial até ele mesmo, assegurando que cada nó seja visitado e sem sub-rotas.
Uma formulação matemática em representação matricial foi proposta por Hung e
Wang (2003):
Sujeito a:
29
Em (2.18) cT = (c11, c12, c13, ..., c1n, cn1, cn2, cn3, ..., cnn) é um vetor de coeficientes
de custos. O vetor decisão é x = (x11, x12, x13, ..., x1n, xn1, xn2, xn3, ..., xnn). O vetor b possui
2n elementos iguais a 1. E a matriz tem a seguinte forma geral:
onde I é uma matriz identidade nxn e Bi, para i = 1, 2, ..., n, são nxn matrizes de zeros,
exceto a i-ésima linha que possui 1 em todas as posições. Em (2.21) é definido um
conjunto de restrições para a formação correta de um ciclo hamiltoniano, assim como
descrito em (2.17).
A estrutura do PCV se assemelha com o PRUMP. Os poços são as cidades e os
caminhos entre os poços são as ligações existentes entre as cidades. A UMP é o viajante,
que deve partir de um ponto inicial (depósito ou ETO) e traçar um caminho entre os poços
e depois retornar ao ponto de partida. Em ambos, sub-rotas não são aceitas como solução
válida. Mas há uma diferença quanto ao número de cidades visitadas. No PCV o viajante
deve passar por todas as cidades sem repeti-las e retornar ao seu ponto de origem, sem
nenhuma restrição de tempo. Em contrapartida uma UMP não precisa obrigatoriamente
passar por todos os poços, pois a mesma não pode ultrapassar um tempo estabelecido, ou
seja, sua jornada de trabalho Lk.
No caso do PCV, a única solução é uma rota completa, que envolva todas as
cidades. Já no PRUMP, devido a não exigência de ter que percorrer todos os poços, aquela
que inicia e retorna ao depósito é aceita como solução. Essa situação ocorre com
freqüência, uma vez que fica inviável visitar todos os poços disponíveis para pistoneio
devido ao limite da jornada de trabalho para cada UMP.
No PCV os custos a serem considerados são o que se encontram associados às
distâncias entre cada cidade. Para obter uma solução ótima, o viajante deverá preferir um
trajeto de menor custo possível. De maneira análoga uma UMP deverá traçar uma rota
mínima, visando obter o menor tempo possível no trajeto entre os poços. Mas há outro
custo a considerar. Trata-se do tempo de operação em cada poço. Dependendo do volume a
ser extraído em cada poço, proporcionalmente há um custo convertido em tempo. Esse
tempo também é restrito devido à jornada de trabalho. A seguir a Tabela 2.1 resume as
semelhanças e diferenças entre o PCV e o PRUMP:
30
Semelhanças e diferenças entre o PCV e o PRUMP
Item PCV PRUMP
Estrutura Geral nós: cidades; arestas: caminhos
N cidades interligadas
nós: poços; arestas: caminhos
N poços pistoneáveis interligados
Cidades (poços) a visitar Visita todas, começa e termina na
mesma cidade
Não precisa ser todos os poços,
mas um sub-conjunto que comece
e termine na ETO
Custos Há custos somente nas arestas Além de haver custo nas arestas
(caminhos), há nos poços (tempo
de operação)
Sub-rotas Não aceita sub-rotas como solução Qualquer sub-rota que atenda a
restrição da jornada Lk e que
contenha a ETO
Prêmios ----------- Produção de óleo em cada poço
Função Objetivo Minimizar os custos Maximizar a produção de óleo
Tabela 2.1 – Semelhanças e diferenças entre o PCV e o PRUMP
Fonte: Adaptado de (Barros, 2001).
2.4.2 Problema de Orientação - PO
Definido um conjunto de pontos com valores associados, dos quais inclui o ponto
inicial e final, o objetivo consiste em percorrer um caminho por esses pontos a fim de
maximizar a pontuação total, restringida por um limite de tempo TMAX (equivalente à
distância máxima). Nem todos os pontos são percorridos devido a essa restrição. O
Problema de Orientação (PO) é equivalente ao PCV com relaxação de tempo, porém no
PCV todos os pontos são visitados.
É denotado um conjunto V de pontos valorados e um conjunto E de arestas que
interligam os pontos, constituindo um grafo completo G = {V, E}. Cada ponto i possui uma
pontuação Si ≥ 0, com exceção dos pontos inicial e final. A distância entre os pontos i e j é
denotado por dij, possuindo um custo não negativo. Considerando estas definições, uma
formulação matemática para o PO é apresentada a seguir (TASGETIREN, 2002):
31
Sujeito a:
O PO possui aplicações em roteamento de veículos e na programação de tarefas,
discutidos por Golden, Assad e Dahl (1984). Golden, Levy e Vohra (1987), além de
demonstrarem que o PO é NP-Difícil, também aplicaram o PO um problema de
roteirização de veículos no qual veículos equipados com tanques para transporte de óleo
são encaminhados para estações de serviços em diferentes locais. A pontuação total do
percurso é maximizada, minimizando-se a distância percorrida, respeitando-se a restrição
para o limite de tempo Tmax. Alguns problemas de programação de tarefas utilizando PO
foram modelados por Balas (1989). Problemas estes que utilizam várias combinações de
aplicação de produtos para o planejamento da produção, maximizando o lucro e sem violar
as restrições de tempo e produção. Keller (1989) aprimorou o seu problema de venda
multiobjetivo como PO em que há um “trade-off” entre a maximização do potencial de
recompensa e a minimização dos custos de viagem. Kantor e Rosewein (1992)
apresentaram o PO com janelas de tempo em que um ponto só pode ser visitado dentro de
um intervalo de tempo especificado. Abordagem esta que pode ser aplicada na coleta de
lixo industrial, bancos, correios e serviços de entregas e roteamento de ônibus escolar.
32
2.4.3 O Problema do Caixeiro Viajante Coletor de Prêmios
Conhecido por Prize Collecting Traveling Salesman Problem, o Problema do
Caixeiro Viajante Coletor de Prêmios (PCVCP) trata-se do problema que dado um
conjunto com N cidades, um viajante ganha um prêmio wk para cada cidade k visitada e
paga uma penalidade pl para cada cidade l não visitada. Em seu percurso o viajante deve
obter uma premiação mínima wo minimizando os custos cij entre as cidades. Balas (1989)
formulou o PCVCP como um grafo dirigido completo G’ = (N, A):
Sujeito a:
onde G’(y, x) é um subgrafo de G’ que representa um caminho dirigido fechado, sendo x e
y nós e arcos, respectivamente.
O PCVCP possui aplicações em problemas de formação de lâminas de aço nas
indústrias siderúrgicas, escalonamento e sequenciamento de tarefas, roteamento de
veículos, dentre outros. Possui complexidade da classe NP-Difícil, tendo em média três
vezes mais instâncias possíveis que o PCV para um mesmo número de vértices.
2.4.4 O Problema de Roteamento de Veículos
É um dos problemas mais estudados na literatura, sendo formulado pela primeira
vez por Dantzig e Ramser (1959), que na ocasião aplicaram ao problema da distribuição de
gasolina em postos de combustíveis. O Problema de Roteamento de Veículos (PRV)
33
consiste no atendimento a um conjunto de cidades i (i=1, 2, 3, ..., n), com demandas qi e
uma frota M de veículos inicialmente situados num depósito, que devem percorrer estas
cidades atendendo suas respectivas demandas respeitando-se suas capacidades Q,
minimizando os custos (cij) com as rotas escolhidas entre as cidades i e j. Ao final todos os
veículos devem retornar ao depósito origem.
Matematicamente o PRV é modelado como um grafo não-dirigido G=(V, A), onde
V = {v0, v1, ..., vn} são os vértices que correspondem às cidades, sendo v0 o depósito, e A =
{(vi, vj): vi, vj V, i < j} as arestas que representam as rotas entre as cidades. Cada vértice
do grafo possui um valor qi que corresponde à demanda numa cidade i. Os custos entre as
cidades i e j são representados por cij. Há uma frota com M veículos possuindo capacidade
total Q.
Sujeito a:
34
A função objetivo (2.34) é minimizar os custos com as rotas escolhidas de cada
veículo k. O conjunto de restrições (2.35) e (2.36) limitam a apenas um veículo a visitar
uma mesma cidade. As restrições (2.37) impedem a estagnação dos veículos, dando vazão
ao fluxo na rede. Em (2.38) um veículo k irá somente percorrer uma rota. O limite das
cargas dos veículos é controlado através das restrições (2.39). Em (2.40) o custo da rota
percorrida por cada veículo k é limitado. As variáveis de decisão são definidas em (2.41). E
por fim em (2.42) o conjunto de restrições evita a formação de ciclos sem o depósito v0,
sendo S o conjunto de todos os subciclos contendo v0.
Esta formulação matemática define o PRV básico, em que os veículos devem
apenas minimizar os custos dos percursos entre as cidades visitadas. Mas na literatura há
outros tipos de PRV, dentre os quais se destacam: o Problema de Sequenciamento de
Veículos (PSV) em que é importante a sequência das cidades a serem atendidas; e o
Problema de Sequenciamento e Roteamento de Veículos (PSRV) em que além de uma
precedência entre as cidades a serem atendidas, são definidas janelas de tempo para cada
cidade (PIMENTA, 2001).
Além dos PSV e PSRV, outros tipos de PRV podem se diferenciar por terem frotas
homogêneas ou heterogêneas, múltiplos depósitos ou apenas um, se uma mesma cidade
pode ou não ser atendida por mais de um veículo, dentre outros tipos de restrições que
tornam o problema mais complexo de ser resolvido.
O PRV pode ainda ser visto como um PCV com os pontos de partida replicados, ou
seja, onde as origens de cada veículo são replicadas de forma que o fechamento das rotas
se transforme num PCV ampliado, como ilustrado na Figura 2.6.
No exemplo da Figura 2.6 uma instância exemplo para o PRV contendo três rotas e
um depósito e comum foi transformada numa instância ampliada para o PCV.
O PRUMP tratado neste trabalho é similar ao PRV básico, contendo apenas um
único depósito, uma frota homogênea, mas com capacidade ilimitada devido ao apoio de
um veículo com tanque para armazenamento de óleo, e as demandas em cada cidade do
PRV se referem à quantidade de óleo disponível para pistoneio em cada poço.
35
Figura 2.6 – PRV transformado num PCV ampliado.
Fonte: Autor.
2.5 Complexidade
Os problemas apresentados no subitem 2.4 são de otimização combinatória, ou seja,
dentre um conjunto de soluções possíveis, procura-se encontrar a solução ótima atendendo
a todos os critérios envolvidos. Por outro lado, os problemas de decisão admitem como
solução uma resposta SIM ou uma resposta NÃO. Para cada problema de otimização existe
um problema de decisão equivalente e para encontrá-lo deve-se impor um limite sobre o
valor a ser otimizado. Por exemplo, dado um problema de otimização em que se deve
encontrar num grafo não-orientado uma clique de tamanho máximo, o seu problema de
decisão equivalente seria nesse mesmo grafo saber se existe (SIM ou NÃO) uma clique de
tamanho maior ou igual a K.
Os problemas de decisão são resolvidos através de um algoritmo, que ao tratar uma
instância do problema, retorna um valor positivo (SIM) ou negativo (NÃO) como resposta
ao problema. Se o consumo de tempo deste algoritmo for limitado por uma função
polinomial relativo ao tamanho da instância, este algoritmo é dito polinomial e é
considerado rápido. Caso contrário, é considerado não-polinomial e lento.
Os problemas que são resolvidos por algoritmos polinomiais são pertencentes à
classe P e são considerados tratáveis. Entretanto, problemas em que um algoritmo
36
polinomial não consegue resolver são considerados não-polinomiais e intratáveis. Muitos
dos problemas de decisão atuais ainda não se encontram definidos em P ou fora de P.
Outra classe de problemas de decisão é a NP – Nondeterministic Polynomial – que
correspondem ao conjunto de problemas com verificadores polinomiais. Um verificador
polinomial é um algoritmo que testa um certificado (solução com valor positivo) em tempo
polinomial. Em outras palavras, problemas NP são verificáveis polinomialmente. Todo
problema P de decisão encontra-se em NP.
Os problemas mais difíceis em NP são denominados por NPC (NP-Completo). Esta
classe de problema foi demonstrada por Stephen Cook e Leonid Levin,
independentemente, no ano de 1970. Se qualquer problema NPC puder ser resolvido em
tempo polinomial, então qualquer problema em NPC possui solução polinomial. Daí se
encontra em aberto a questão de “P = NP?” que é um dos desafios do milênio que vale um
milhão de dólares (CLAY MATHEMATICS INSTITUTE, 2010). A Figura 2.7 resume as
classes de problemas discutidas:
Figura 2.7 – Classes de Problemas.
Fonte: Autor.
O PCV, discutido no subitem 2.4.1, é considerado na literatura como NP-Completo
(ou NP-Difícil) (APPLEGATE et al., 2007). Se um problema NP-Difícil puder ser
transformado em tempo polinomial num outro problema, este também será NP-Difícil.
Verifica-se em Barros (2001) que o POE-UMP, por se tratar de uma generalização do PCV
e outras variantes (PO e PCVCP), trata-se de um problema pertencente à classe NP-Difícil.
O POE-UMP é um caso particular do PRUMP, pois este último possui para cada UMP um
POE-UMP. Logo, considerando que a generalização de um problema será tão difícil ou
37
mais que o seu caso particular, o PRUMP possui complexidade NP-Difícil, sendo um dos
problemas mais difíceis da classe NP. Pois o mesmo pode ser reduzido em tempo
polinomial num POE-UMP, caso observado quando se tem apenas uma UMP no
roteamento.
2.6 Trabalhos já Realizados
Os primeiros trabalhos acerca do POE-UMP surgiram no ano 2000, através dos
trabalhos de Aloise et al. (2000a), Aloise et al. (2000b), Aloise et al. (2000c), Aloise et al.
(2000d) e Neves (2000).
Até o ano de 2002, tem-se aplicado ao POE-UMP as metaheurísticas AG, Greedy
Randomized Adaptive Search Procedures (GRASP) e Colônia de Formigas, como pode ser
verificado em Neves (2000), Barros (2001), Santos et al. (2001) e Aloise et al. (2002).
Recentemente, o PRUMP foi modelado como um problema de otimização
combinatória multiobjetivo (EHRGOTT, 2005; COLLETE; SIARRY, 2003), ou seja, em
que mais de um objetivo (ou critério) devem ser satisfeitos para o problema. Em Santos,
Duhamel e Aloise (2008) e Aloise, Santos e Duhamel (2009) pode-se verificar que além do
objetivo de maximizar a produção total de petróleo, um segundo objetivo é a minimização
do tempo total da jornada de trabalho de cada UMP.
Até este presente trabalho, o desenvolvimento de um Algoritmo Evolutivo ao POE-
UMP se aplicou a uma única UMP. Neste trabalho, são aplicadas heurísticas evolutivas
para a resolução do POE-UMP com mais de uma UMP, ou seja, para uma frota de veículos
(PRUMP).
38
Capítulo 3
[Algoritmos Evolutivos e Vocabulary Building]
3.1 Algoritmos Genéticos
3.1.1 Princípios
O homem vem se inspirando na natureza para buscar soluções para alguns
problemas em seu cotidiano. Exemplos são algumas invenções tais como o avião
(pássaros), o submarino (peixes), as redes neurais (cérebro humano), dentre outros. Nesse
contexto, surgiu por volta do século XIX o princípio da Seleção Natural, do naturalista
britânico Charles Robert Darwin, onde na natureza os seres vivos mais adaptados ao
ambiente têm mais chances de sobrevivência frente aos demais. A medicina e ciências
afins vêm mapeando toda a informação genética humana, relacionando deste modo cada
gene de cada cromossomo às características que eles representam nos indivíduos
(hereditárias, físicas ou funcionais). O projeto Genoma é um bom exemplo de investimento
na pesquisa genética. Criado em 1990, tem por objetivo o mapeamento do genoma
humano, o que contribuirá para o entendimento acerca de diversas doenças e sua possível
cura (GENOMA, 2005).
Partindo da ideia do homem se basear em princípios naturais para resolução de
problemas, especificamente em métodos evolutivos e nos mecanismos da genética, aliado
ao grande desenvolvimento de técnicas computacionais, foram criados algoritmos capazes
de oferecer boas soluções em tempo viável para grandes e complexos problemas
numéricos. Esses algoritmos são conhecidos na literatura por Algoritmos Genéticos
(DAVIS, 1991; GOLDBERG, 1989). Baseiam-se em fundamentos no processo da seleção
natural proposto por Darwin e nos mecanismos da genética. Eles trabalham com uma
população de indivíduos (soluções), onde cada possui certo grau de “aptidão”, que pode
aumentar no decorrer de sucessivas gerações sob ação de operações genéticas tais como
39
recombinação e mutação. Após a última geração apenas os indivíduos mais “adaptados”
sobrevivem (LEMONGE, 1999).
3.1.2 Definições
Como discutido anteriormente, os Algoritmos Genéticos (AG) são inspirados na
teoria evolucionista de Darwin. A solução de um problema resolvido por um AG é
desenvolvida ao longo de um número pré-determinado de gerações. Ao final da execução
de um AG, espera-se que se tenha chegado a uma solução ótima ou próxima o bastante.
Inicialmente tem-se um conjunto de soluções (cromossomos) que constituem uma
população. As soluções de uma população são utilizadas para gerar uma nova população,
que se espera que seja melhor que a anterior. O processo de geração de uma solução
melhor, mais adaptada, se dá através de algumas operações, implementadas de acordo com
a estrutura de problema abordado. Essas operações são as que modificam a estrutura dos
cromossomos (mutação e cruzamento ou recombinação), criando melhores cromossomos.
A seguir são apresentadas as definições dos elementos presentes nos AGs.
3.1.2.1 Cromossomos e Genes
Os cromossomos consistem, em cadeias de caracteres, representando alguma
informação relativa às variáveis do problema. Cada cromossomo representa deste modo
uma solução do problema. Sua estrutura está relacionada diretamente com a estrutura do
problema em si. A unidade básica de um cromossomo é um gene, que pode ser binário ou
multivalorado. No primeiro caso, o cromossomo possui uma codificação binária {0, 1} e
seu número de representações diferentes é da ordem de 2n, sendo n o seu tamanho. Um
cromossomo multivalorado possui um número maior de representação por gene, possuindo
uma faixa de representação da ordem de Mn, onde M se refere ao tamanho do alfabeto
(número de representações por gene) e n o tamanho do cromossomo.
Cada gene de um cromossomo representa uma variável ou unidade de uma solução
para o problema. Seu valor pode indicar uma decisão a se tomar dentro do contexto do
problema. Então, para um cromossomo de tamanho n, uma combinação de genes
representa um valor de custo ou lucro para uma solução. Por exemplo, uma representação
40
de cromossomo para o problema do caixeiro viajante, cada gene poderia indicar uma
cidade a ser visitada, de acordo com a ordem definida. A Figura 3.1 ilustra uma
representação de cromossomo para o PCV e uma rota definida de acordo com a ordem dos
genes.
Figura 3.1 – Exemplo de Cromossomo para o PCV.
Fonte: Autor.
3.1.2.2 População e Gerações
Uma população consiste num conjunto de cromossomos. Cada cromossomo
representa uma solução, logo temos um conjunto de soluções, cada uma com um valor. No
início da execução de um AG, é configurada uma população inicial, que na maioria das
vezes é formada seguindo um critério aleatório. Porém algumas vezes uma solução
heurística é utilizada para gerar uma população inicial, tal como um critério de escolha
guloso, com soluções mais interessantes (GOLDBERG, 1989).
Definida uma população inicial, os indivíduos desta irão ser avaliados durante um
número pré-definido de etapas. Essas etapas são denominadas de Gerações. A cada geração
espera-se uma população cada vez mais próxima da solução ótima para o problema.
41
O tamanho de uma população (número de indivíduos) afeta o desempenho global e
a eficiência do AG. Se criada uma população pequena, haverá pouca cobertura no espaço
de busca das soluções. Porém se criada uma população maior, previne a convergência
prematura para ótimos locais, entretanto, demanda um tempo maior de processamento.
3.1.2.3 Seleção
São responsáveis pela preservação dos melhores indivíduos nas gerações seguintes,
baseando-se no princípio da “sobrevivência dos mais fortes”. Em contrapartida os
indivíduos com menor aptidão são descartados.
Computacionalmente, os indivíduos são diretamente selecionados da população aos
pares para a reprodução, sendo seus herdeiros implantados na próxima geração. Inúmeros
esquemas de seleção já foram propostos e implementados na prática dos AGs, alguns não
sendo biologicamente plausíveis (BLICKLE e THIELE, 1995). Na seqüência, alguns dos
mais empregados na literatura são discutidos:
Método da Roleta: uma probabilidade de seleção é calculada de acordo com a
aptidão de cada indivíduo. Uma forma de quantificar a probabilidade pi do i-ésimo
indivíduo xi da população vir a ser selecionado para reprodução é o cálculo
proporcional ao seu valor da função de aptidão: fi = f (xi). Uma das formas para se
efetuar este cálculo seria (HOLLAND, 1975):
onde fi é assumida positiva e n o tamanho da população. Então cada indivíduo da
população é representado proporcionalmente ao seu índice de aptidão. Assim, os
indivíduos com alta aptidão recebem uma porção maior da roleta, enquanto que os
de menor aptidão ocuparão uma porção relativamente menor da roleta. Deste modo,
realiza-se o lançamento n vezes da roleta, dependendo do tamanho da população, e
escolhem-se para a população temporária aqueles indivíduos por ela sorteados. Por
ser fortemente dependente da função de aptidão, este método possui uma
desvantagem de produzir um grande número de cópias de um bom cromossomo, o
que faz diminuir a diversidade da população. Esta falha pode ocasionar uma
convergência prematura do algoritmo para um ótimo local. Por outro lado, quando
a evolução está avançada, onde as aptidões não diferem muito entre si, observa-se
42
uma estagnação do algoritmo, isto é, uma baixa pressão de seleção entre aptidões
parecidas.
Método do Torneio: são escolhidos aleatoriamente x indivíduos da população, dos
quais é selecionado aquele com o maior valor da função de aptidão. Esse processo é
repetido tantas vezes quanto for o número de indivíduos da população intermediária
a ser gerada. Sua escolha aleatória não provê uma convergência prematura da
solução, inibindo também a estagnação do método.
Método do Ranking: os indivíduos da população são ordenados de acordo com seus
valores da função de adaptação. Esta ordenação é chamada de ranking. A cada
indivíduo é associado um peso, proporcional à sua posição no ranking. Assim, o
indivíduo mais adaptado terá mais chance de ser escolhido para a próxima
população, pois a ele será atribuído o maior peso. Analogamente, o indivíduo
menos adaptado terá a menor chance de escolha.
Amostragem Universal Estocástica (Stochastic Universal Sampling): semelhante ao
método da roleta, mas difere na quantidade de indivíduos selecionados. Neste
método, um conjunto contendo k indivíduos (k>2) é escolhido dentre todos os
indivíduos de uma população. Indivíduos com maior aptidão possuem mais chances
de serem escolhidos, sendo possível na escolha haver várias repetições de si
mesmos.
Elitismo: este método seleciona um número k (k≥1) melhores indivíduos de uma
população. Geralmente aplicado em conjunto com outros métodos de seleção, o
elitismo preserva os cromossomos com maior aptidão, protegendo-os dos
operadores genéticos mutação e recombinação. Sua principal vantagem é o fato de
garantir a convergência, ou seja, caso o ótimo global seja descoberto durante o
processo de busca, o algoritmo genético deve convergir para tal solução. Sua
desvantagem é a possibilidade de forçar a busca, pela presença de mais uma cópia
do melhor indivíduo, na direção de algum ponto ótimo local que tenha sido
descoberto antes do global, embora normalmente um algoritmo genético escape de
tais armadilhas. Uma alternativa é guardar separadamente a melhor solução
encontrada durante a evolução, para no final da execução designá-la como o
indivíduo ótimo encontrado, mesmo que ele não esteja presente na última geração
da execução.
43
Randômico: esta técnica seleciona aleatoriamente um dos pais da população para
reprodução. Por não avaliar a função de aptidão dos cromossomos, garante uma
grande diversificação. Porém, há a desvantagem de se extrair cromossomos com
baixa aptidão para a reprodução.
3.1.2.4 Operadores Genéticos
Os métodos de seleção discutidos anteriormente têm a finalidade de escolher os
indivíduos que irão passar por uma operação genética que irá gerar novos indivíduos na
população seguinte, mantendo as melhores características da população anterior. Os
operadores genéticos são responsáveis pela diversificação da população possibilitando a
inserção de indivíduos melhores que sua geração anterior. A cada geração, é esperado que
os novos indivíduos tenham funções de aptidão bem próximas da solução ótima para o
problema.
A seguir, são discutidos os operadores genéticos: Cruzamento (Crossover) e
Mutação:
3.1.2.4.1 Cruzamento
Este operador tem por finalidade cruzar dois ou mais indivíduos pais e criar novos
indivíduos (filhos) com a herança genética de seus pais. Também é conhecido como
Recombinação ou Crossover (SIVANANDAM e DEEPA, 2008) e funciona definindo
pontos de cortes para troca de informações genéticas (genes) entre os cromossomos pais.
Existem várias definições de onde e como devem ser inseridos os pontos de corte. A seguir
são discutidos os mais empregados:
Um-ponto: um ponto de cruzamento é escolhido e, a partir dele, as informações
genéticas dos pais são trocadas, conforme demonstrado na Figura 3.2. Nesta figura,
a linha tracejada indica a altura do ponto de corte. Note que duas regiões de genes
de mesmo tamanho de cada cromossomo pai são trocadas entre si e são gerados
cromossomos com uma nova configuração de genes:
44
Figura 3.2 – Crossover de um ponto
Fonte: (SIVANANDAM e DEEPA, 2008).
Dois-pontos: agora dois pontos de corte são definidos e conseqüentemente haverá
três regiões de genes em cada cromossomo pai. A adição de pontos de cortes pode
reduzir o desempenho do AG. Mas, em contrapartida, o espaço de busca é
explorado profundamente (SIVANANDAM e DEEPA, 2008). A Figura 3.3
demonstra o uso do crossover com dois pontos de corte. Nesta figura, foram
escolhidas as regiões centrais de cada cromossomo pai a serem trocadas, mas sem
problema algum poder-se-ia trocar as regiões das duas extremidades, caso fosse
esse o critério adotado:
Figura 3.3 – Crossover de dois pontos
Fonte: (SIVANANDAM e DEEPA, 2008).
45
Multi-pontos: são definidos n pontos de cortes dividindo os cromossomos pais em
n+1 regiões. Fica a critério do programador do AG definir se haverá trocas a partir
da primeira ou segunda região, ou se será feito de modo aleatório.
Uniforme: nenhum ponto de corte é definido. É criada uma máscara do tamanho
dos cromossomos pais que contém uma codificação binária que indica quais genes
copiar de cada pai para formar um filho. Então para cada bit 1 na máscara, será
copiado o gene do pai 1 na posição correspondente, caso contrário será copiado o
gene do pai 2. A Figura 3.4 ilustra o uso da máscara binária.
Outras maneiras de inserção de pontos de corte podem ser encontradas em
Sivanandam e Deepa (2008).
Figura 3.4 – Crossover Unifome usando Máscara
Fonte: (Sivanandam e Deepa, 2008).
3.1.2.4.2 Mutação
Após a operação de cruzamento, discutida no subitem anterior, ocorre a operação
de mutação sobre alguns indivíduos selecionados aleatoriamente da população. Esta
operação é importante para a diversificação genética da população, alterando
arbitrariamente um ou mais genes de um cromossomo escolhido. Dessa forma, mantém-se
a probabilidade de se chegar a qualquer ponto do espaço de busca, evitando estagnar em
possíveis ótimos locais. Este operador é aplicado aos indivíduos com uma probabilidade
dada pela taxa de mutação Pm. Geralmente, utiliza-se um valor baixo para Pm (assim como
acontece na genética natural), pois se é utilizado uma taxa maior, a busca pela solução se
torna essencialmente aleatória. Essa taxa varia de 0% a 100% e define a probabilidade de
mutação de um cromossomo.
46
Porém, há outras maneiras de se definir a taxa de mutação de um cromossomo e o
modo como é feito, dentre os quais alguns são discutidos a seguir:
Definindo-se um cromossomo de mutação: um cromossomo de mutação (mutation
chromosome) é gerado aleatoriamente. Trata-se de um cromossomo com
codificação binária, contendo zeros (0) e uns (1). Em cada ocorrência de um bit 1, a
posição correspondente no cromossomo pai é trocada pelo bit inverso. A Figura 3.5
demonstra esse esquema:
Figura 3.5 – Esquema do Cromossomo de Mutação
Fonte: (SIVANANDAM e DEEPA, 2008).
Troca de posição: dois genes são escolhidos aleatoriamente num cromossomo e são
trocados de posição. Ou seja, como visto na Figura 3.6 os genes da segunda e sexta
posição, sentido esquerda para a direita, são trocados de lugar:
Figura 3.6 – Esquema da Troca de Posição
Fonte: (SIVANANDAM e DEEPA, 2008).
Inversão: uma posição aleatória no cromossomo é determinada e os genes próximos
são invertidos. Na Figura 3.7 são escolhidos para inversão os dois últimos genes:
Figura 3.7 – Inversão de Genes
Fonte: (SIVANANDAM e DEEPA, 2008).
Portanto, a definição da operação Mutação e sua taxa de probabilidade implicam na
alteração de alguns indivíduos de uma nova população, podendo ou não sair de ótimos
locais para uma solução melhor. Se definida de forma aleatória, poderá melhor varrer todo
o espaço de busca, porém poderá destruir indivíduos que representam boas soluções. Por
isso é preferível que seja realizada aproveitando-se melhor a estrutura do problema, para
47
que seja possível ganhar a cada geração soluções melhores cada vez mais próximas de uma
solução ótima.
3.1.3 Estrutura
Por se tratar de um algoritmo, um AG possui uma execução sequencial e finita
(CORMEM ET AL, 2002). Dessa forma, inicialmente um AG armazena dados de entrada,
processa estes dados durante certo tempo e gera uma saída com resultados. Na literatura
são encontradas diversas estruturas de AGs, mas todas seguem uma base genérica como
apresentada na Figura 3.8.
Inicialmente, um AG cria aleatoriamente ou através de algum método de construção
guloso, uma população p com base nos dados de entrada (parâmetros do problema). O
passo seguinte é o cálculo da função de aptidão (Fa) de cada indivíduo da população
inicialmente criada. O valor de Fa é comparado ao valor objetivo (SO), caso este seja
conhecido, e se forem iguais, o algoritmo encerra, atingindo seu objetivo. Caso contrário, o
algoritmo prossegue para um processo de evolução que consiste em várias etapas,
encerrando quando se chega ao objetivo ou um número máximo de gerações (LGmax) é
atingido. Durante cada etapa do processo evolutivo, operações genéticas (seleção,
cruzamento e mutação) são realizadas nos cromossomos da população, e ao final é
esperada uma nova população com maior valor Fa que a anterior, definindo assim a
evolução genética.
48
Figura 3.8 – Estrutura básica do AG desenvolvido no trabalho.
Fonte: Autor.
3.2 Algoritmos Meméticos
Os Algoritmos Meméticos (AM) pertencem à classe dos algoritmos evolutivos que
além de possuírem os métodos de seleção e operadores genéticos tais como crossover e
mutação encontrados no AGs, trabalham com o conceito de evolução cultural onde os
próprios indivíduos, denominados de agentes, trocam informações culturais entre si
adquiridas ao longo de sua existência (MOSCATO e NORMAN, 1992). Os AMs são
amplamente estudados e possuem grande aplicabilidade a vários problemas de otimização
encontrados na literatura, segundo Moscato e Cotta (2003).
A primeira vez que o termo “Algoritmo Memético” foi utilizado na literatura consta
do ano de 1989 por Moscato, num trabalho com o título “On Evolution, Search,
Optimization, Genetic Algorithms and Martial Arts: Towards Memetic Algorithms”
aplicado ao PCV para teste de resultados. Por sua vez o termo “memético” deriva do termo
“meme” (unidade de informação) e foi idealizado por Richard Dawkins por volta da
década de 70. Em AMs os memes são transferidos entre os agentes de uma população sem
49
que transcorra uma geração. Entende-se dessa forma que os agentes estão
recebendo/transmitindo informações culturais entre si que são adaptadas da melhor
maneira possível para cada indivíduo.
A principal diferença entre genes e memes está no processo de transmissão aos seus
descendentes. Os genes, no processo de evolução, são transmitidos de forma que os
descendentes gerados herdem características e habilidades presentes em seus progenitores.
Já quando o meme é transmitido, ele será adaptado pela entidade que o recebe, com base
no seu conhecimento e para melhor atender às suas necessidades. Com isso, a informação
memética é transmitida de modo mais rápido e flexível que a genética.
O mecanismo que permite a transmissão da informação memética é a introdução de
um (ou mais) operador (es) de busca local. A idéia principal de um AM é explorar a
vizinhança das soluções obtidas por um AG e caminhar em busca do ótimo local (para
cada solução) antes de retornar para o AG e continuar o processo.
De acordo com Merz e Freisleben (1999), num AM os operadores de recombinação
(crossover) e mutação agem como estratégias de diversificação. Os indivíduos da
população podem estar localizados numa região do espaço de busca contendo um ótimo
local, conhecida por “base de atração do ótimo local”. Utilizando a informação contida na
população, novos pontos de partida podem ser descobertos após a busca local. Os
operadores de recombinação e mutação podem gerar indivíduos da população localizados
em bases de atração de ótimos locais ainda não explorados, de modo que um novo pico
deva ser alcançado, no caso da maximização (Figura 3.9), ou um vale deva ser explorado,
no caso da minimização.
Figura 3.9 – Operadores de recombinação e mutação agindo como estratégias de
diversificação junto a AMs.
Fonte: (CONCILIO, 2000).
50
A busca local começa com um indivíduo e tenta continuamente encontrar
melhores elementos dentre os vizinhos, sendo S todo o espaço de busca. Em outras
palavras, a finalidade será remeter esse indivíduo para um local onde a função de fitness
tenha um valor melhor que o atual. Essa busca deverá ser realizada até que uma condição
de parada seja satisfeita, sendo que essa condição deve ser atendida sempre que o processo
de busca não tenha mais a capacidade de melhorar a solução atual. Em Concilio (2000), é
apresentado um pseudocódigo genérico representativo de uma busca local:
Em Moscato (1999), encontra-se a seguinte definição formal para a busca local:
seja um domínio computacional de entrada , tendo um conjunto de
respostas correspondentes. Faz-se necessário a garantia de um subconjunto que
esteja contido em que identifica as soluções válidas de . Um algoritmo soluciona
se para a sua entrada apresentar como saída qualquer , caso
contrário ele apresenta que não existe solução . A otimização combinatória
trata-se de um tipo especial de problema de busca em que cada tem um conjunto
de cardinalidade finita e cada solução possui um valor de fitness
. A busca nesse tipo de problema será responsável por encontrar uma solução
válida que maximize o fitness . Na Figura 3.10, é apresentado um
fluxograma definindo de forma geral uma estrutura para AMs:
Procedimento busca local
início
repita
final verdade
para i 1 até número de indivíduos faça
início
elemento indivíduo(i) aplicar busca local (elemento)
se fitness é melhor então final falso
fim
até final
fim
51
Figura 3.10 – Estrutura Geral de um AM.
Fonte: (NETO, 2009).
3.3 Vocabulary Building
A Vocabulary Building (VB) trata-se de uma técnica de otimização e foi idealizada
por Glover (1992), dentro do contexto de Path Relinking. Em Glover e Laguna (1993),
essa técnica foi implementada dentro da metaheurística Busca Tabu. Na década de 90,
Rochat e Taillard (1995) e Kelly e Xu (1995) possuem trabalhos com aplicações com VB
em PRV. A partir de 1997 surgem várias outras publicações acerca da VB: Glover e
Laguna (1998); Scholl, Klein e Domschke (1998); Glover (1999); Glover, Laguna e Marti
(2000); Glover (2003).
Trabalhos mais recentes acerca da VB encontram-se: em Guedes e Aloise (2006),
que aplicaram VB num Algoritmo Memético – AM para o Problema do Caixeiro Viajante
Assimétrico; em Soares (2008), que utilizou VB num algoritmo Busca Tabu para o
Problema de Atribuição de Localidades em Anéis DH/SONET; em Silva (2008) que
aplicou VB num Algoritmo Memético e Genético para o mesmo problema anteriormente; e
em Neto (2009), que aplicou VB num Algoritmo Memético para o PCV Assimétrico.
52
Durante o processamento dos algoritmos evolutivos, populações contendo um
conjunto de indivíduos representam as soluções correntes numa determinada geração. Cada
solução apresenta um valor de fitness que a classifica diante das outras como sendo melhor
ou pior. Nas melhores soluções, pode haver a existência de estruturas parciais comuns que
as tornam boas soluções para o problema. Em busca dessas boas estruturas parciais pode-se
chegar a um vocábulo que está presente na maioria das melhores soluções. Define-se por
vocábulo um elemento importante para a obtenção de soluções de boa qualidade. Sua
estrutura depende do problema a qual está inserido, por exemplo, se o problema a ser
tratado for o PRV, um vocábulo seria um conjunto de arestas com custo mínimo. A partir
desses vocábulos, é possível chegar a combinações mais complexas e úteis. Está técnica
também requer uma estrutura para armazenar os vocábulos identificados como úteis. Esse
conjunto de vocábulos recebe o nome de “Pool ou Coleção de vocábulos” que funciona
como uma espécie de memória adaptativa, ou seja, sofre modificações no decorrer da
busca (GUEDES; ALOISE, 2006). Pois a cada momento, soluções parciais distintas podem
ser de diferente atratividade. Por esta razão, é interessante que o Pool mantenha somente as
que forem mais promissoras dentro do processo de busca.
No subitem 4.3, serão discutidos os detalhes da implementação da técnica
Vocabulary Building aplicada ao PRUMP.
53
Capítulo 4
[Metaheurísticas aplicadas ao PRUMP]
O presente capítulo trata do desenvolvimento e definições dos Algoritmos
Evolutivos e Vocabulary Building para o Problema de Roteamento de Unidades Móveis de
Pistoneio – PRUMP com uma frota com m veículos.
4.1 Algoritmo Genético Puro (AGP)
4.1.1 Estrutura dos Cromossomos e Genes
A estrutura de cromossomo adotada para o PRUMP possui uma estrutura
semelhante à de uma matriz, mas cada linha pode ter um tamanho diferente. No entanto,
cada linha se trata de um vetor dinâmico, onde para cada é alocado um tamanho relativo ao
número de poços visitados pela UMP correspondente. Portanto, o tamanho ou quantidade
de colunas para cada linha podem se diferenciar, pois cada UMP pode visitar uma
quantidade igual, maior ou menor de poços em relação às outras UMPs. O número m de
UMPs é fornecido como parâmetro de entrada, dessa forma tem-se o número de linhas do
cromossomo definido. Em momento de execução do AG, uma nova coluna para cada linha
é alocada, quando um novo poço é inserido na rota de uma UMP. Cada linha contém os
números dos poços a serem visitados, e cada UMP inicia do depósito e retorna ao mesmo,
ou seja, são considerados os percursos até o depósito. As Figuras 4.1 e 4.2, demonstram,
respectivamente, um exemplo de representação de cromossomo com 3 UMPs, para uma
instância de 15 poços e seu grafo com as rotas traçadas.
54
Figura 4.1 – Exemplo de Cromossomo para 3 UMPs.
Fonte: Autor.
Figura 4.2 – Grafo com rotas para 3 UMPs.
Fonte: Autor.
Na Figura 4.1, o cromossomo contém três rotas. Na primeira linha, a rota definida
para a UMP 1 é 9-7-1-8 e 10. Na segunda linha, a rota definida para a UMP 2 é 5-6 e 11. E
por fim, na terceira linha, a rota definida para a UMP 3 é 2-4-15-13 e 12. As respectivas
rotas foram traçadas num grafo como demonstrado na Figura 4.2. De acordo com essa
figura, observa-se que os poços 3 e 14 não são visitados. Pois devido às restrições de
jornada de trabalho Lk, de cada UMP k, e também à produção pi, em cada poço, alguns
poços podem não ser visitados.
Cada cromossomo é alimentado com os genes que correspondem aos números de
cada poço disponível para pistoneio. Foi desenvolvido no AG, outro vetor dinâmico para
55
cada cromossomo, que contém a numeração de cada poço disponível para pistoneio. No
momento em que é alocado um novo poço, numa determinada rota do cromossomo de uma
UMP, a numeração relativa a esse poço é excluída do vetor de poços disponíveis. Dessa
forma, sabem-se quais poços ainda não foram pistoneados pelas UMPs.
4.1.2 População
A formação da população inicial no AG é feita totalmente aleatória, procurando
abranger o máximo possível todo o espaço de busca. Mas, para cada UMP, é configurado
um número aproximado entre si de poços visitados, dessa forma inicialmente evita-se que
uma UMP possua um número elevado de poços visitados em relação à outra UMP,
garantindo certo equilíbrio na quantidade de poços visitados e distribuindo melhor a
quantidade de produção por UMP. Mas essa estratégia apenas se trata de um artifício na
formação inicial de soluções, não havendo qualquer problema na solução final, pois o
números de poços visitados por cada UMP dependerá de suas respectivas jornadas de
trabalho (Lk).
4.1.3 Gerações
Cada ciclo do AG corresponde a uma geração. A cada geração operações de
seleção, cruzamento e mutação são feitas com os cromossomos da população. Isso acarreta
uma modificação para melhor na estrutura global da população. A determinação do
número de gerações para o AG é também uma parâmetro de entrada e influi no
desempenho do mesmo.
4.1.4 Função de Aptidão
A função de aptidão é responsável por avaliar cada cromossomo de uma população.
Cada cromossomo contém as informações sobre a produção de óleo obtida numa rota por
cada UMP e a soma dos tempos de operação e de percurso da mesma. O objetivo do
PRUMP é obter para cada UMP uma produção máxima possível, não ultrapassando a sua
jornada Lk. Com base nesse objetivo a função de aptidão desenvolvida para avaliar cada
cromossomo irá classificar os cromossomos com base em seu valor de produção por rota,
56
mas sendo válidos aqueles que possuírem tempos de operação e de trajeto não superior às
suas jornadas Lk. Esta função é definida a seguir:
Em (4.1), a função Fa força a seleção de cromossomos com mais produção. Este é o
critério a ser considerado durante o ordenamento dos cromossomos por valor de fitness.
Por exemplo, considerando uma instância com nove poços, numerados de 1 a 9, com as
respectivas produções pi = {2, 5, 4, 4, 1, 6, 3, 2, 6} em m³ de óleo e os tempos de atuação
por poço t’i = {40, 100, 80, 80, 20, 120, 60, 40, 120} em minutos, com i = 1, ..., 9. Sejam
os tempos de trajeto entre os poços em minutos representados numa matriz de adjacências
(tij) na Tabela 4.1:
Matriz de Adjacências para Exemplo
tij 0 1 2 3 4 5 6 7 8 9
0 0 12 15 6 4 20 ∞ ∞ ∞ ∞
1 12 0 15 10 ∞ ∞ ∞ ∞ ∞ ∞
2 15 15 0 ∞ ∞ ∞ 25 ∞ ∞ ∞
3 6 10 ∞ 0 ∞ 40 ∞ ∞ ∞ ∞
4 4 ∞ ∞ ∞ 0 11 18 20 ∞ ∞
5 20 ∞ ∞ 40 11 0 ∞ ∞ ∞ 10
6 ∞ ∞ 25 ∞ 18 ∞ 0 4 8 ∞
7 ∞ ∞ ∞ ∞ 20 ∞ 4 0 5 4
8 ∞ ∞ ∞ ∞ ∞ ∞ 8 5 0 ∞
9 ∞ ∞ ∞ ∞ ∞ 10 ∞ 4 ∞ 0 Tabela 4.1 – Matriz de Adjacências para Exemplo
Fonte: Autor.
A primeira linha e primeira coluna representam os dados do depósito e é um
número muito grande, indicando que não há rota entre os poços i e j, aplicado para esse
exemplo. Considerando esses dados de entrada, os cromossomos (a) e (b) ilustrados na
Figura 4.3 apresentam, respectivamente, valores de produção P(a) = 27 e P(b) = 26.
Estes cromossomos (a e b) contêm cada, duas rotas (UMP1 e UMP2). A UMP 1 do
cromossomo (a) possui produção de óleo igual a 6m³ com jornada de 148 minutos. E sua
UMP 2 possui produção igual a 21m³ e jornada de 498 minutos. Para o cromossomo (b)
57
temos que sua UMP 1 possui produção igual a 20m³ com jornada de 477 minutos. Sua
UMP 2 possui produção igual a 6m³ com jornada 222 minutos.
Comparando os cromossomos, percebe-se que (a) é melhor que (b), por ter valor de
produção maior (P(a) > P(b)). Logo, num ordenamento de cromossomos, (a) possuiria
precedência em relação à (b).
Figura 4.3 – Cromossomos com produção e tempos de jornada.
Fonte: Autor.
Caso a jornada de trabalho Lk definida para alguma UMP k for ultrapassada, o
cromossomo é descartado pela função de aptidão e recalculado um novo cromossomo
válido. Neste exemplo da Figura 4.3, se a UMP 2 do cromossomo (b) tivesse um limite de
jornada de trabalho L2 = 180 minutos, (b) seria descartado, pois essa UMP apresentou uma
jornada de trabalho total igual a 222 minutos, superior ao L2.
4.1.5 Seleção
A cada nova geração, cromossomos de uma população são selecionados para
reprodução e mutação. Dentre os métodos discutidos no subitem 3.1.2.3, são adotados para
esse trabalho, os métodos de seleção “elitismo” e “ranking”. Dessa forma, os melhores
cromossomos (10% deles) são mantidos (copiados para a próxima geração) por elitismo e,
na parte restante, é aplicado o método ranking para que seja efetuada a operação de
cruzamento entre os cromossomos selecionados.
58
4.1.6 Operação de Cruzamento
Neste trabalho, a operação de cruzamento ocorre da seguinte maneira: pares de
cromossomos são selecionados para reprodução através do método de seleção “Ranking”,
onde serão criados novos cromossomos (filhos) com base nas informações genéticas
contidas nos cromossomos pais. As sequências dos genes em cada cromossomo
representam as rotas desenvolvidas para cada UMP. Nesta operação, são definidos dois
setores aleatoriamente em rotas distintas de cada par de cromossomos. Então, os genes
selecionados são trocados entre si, formando dois novos cromossomos. A cada inserção
dos genes num novo cromossomo, um teste de verificação é feito em busca de corrigir
possíveis repetições de rotas num mesmo cromossomo, o que violaria a restrição de que
cada poço só é visitado por uma única UMP. Se houver algum gene inserido que seja um
mesmo já existente no cromossomo, ele será substituído por outro gene no vetor de poços
disponíveis associado ao cromossomo. A Figura 4.4 demonstra a operação de cruzamento
descrita anteriormente sendo realizada com um par de cromossomos exemplos.
Figura 4.4 – Cruzamento entre Cromossomos.
Fonte: Autor.
Na Figura 4.4, há dois cromossomos pais (Pai1 e Pai2) com três rotas cada. Em
“Pai1” são selecionados dois trechos para cruzamento: “4-2-9” em rota 1 e “15-8” em rota
2. Em “Pai2” outros dois trechos são selecionados: “6-14” na rota 2 e “20-19-17” na rota 3.
59
A operação de cruzamento realiza a troca entre os trechos selecionados: “4-2-9” com “20-
19-17”; e “15-8” com “6-14”. O cromossomo resultante “Filho1” possuirá a maioria dos
genes de “Pai1”, mas com os trechos oriundos de “Pai2”. Mas, ao receber os trechos “20-
19-17” e “6-14”, verificou-se que os genes de números 6, 14 e 17, já estavam presentes em
“Filho1”. Em cada cromossomo, não pode haver genes repetidos, pois cada poço é somente
visitado por uma única UMP, sabendo que cada gene representa um poço numa rota de
uma UMP. A solução para corrigir esse problema, é substituir os genes dos trechos
selecionados, que estão violando essa restrição, por genes que estão num “vetor de poços
disponíveis”, que cada cromossomo possui. Este vetor possui somente os genes que não
estão presentes no cromossomo, permitindo a inserção de genes que não vão violar a
restrição de que, em cada cromossomo, não pode haver genes repetidos. Os genes que
possuem uma numeração entre aspas, foram trocados por genes no vetor associado de
poços disponíveis, após inserção do trecho selecionado. Este processo de troca de trechos,
descrito anteriormente, também se aplica à formação do cromossomo “Filho2”, que possui
em sua maioria, genes provenientes de “Pai2”.
4.1.7 Operação de Mutação
No presente trabalho, a operação de Mutação seleciona aleatoriamente alguns
cromossomos e aplica uma ligeira modificação em suas estruturas. Isto contribui para a
diversidade da população e fuga de ótimos locais, maior abrangência do espaço de busca.
Num cromossomo, uma rota é escolhida ao acaso e dela é removido um gene que será
inserido numa outra rota do mesmo cromossomo. Dessa forma, tem-se o tamanho das rotas
de cada UMP alteradas. Outra forma desta operação é trocar algum gene por algum dos
outros guardados no vetor de poços disponíveis associado ao cromossomo. A Figura 4.5,
ilustra o processo de Mutação sendo aplicado individualmente a dois cromossomos
distintos.
60
Figura 4.5 – Mutação.
Fonte: Autor.
De acordo com a figura 4.5, no cromossomo (a) é selecionado último gene (7) para
ser removido e adicionado à segunda rota, como percebido em (a’). De forma similar, na
segunda rota do cromossomo (b) é selecionado o gene 3 que irá ser removido e inserido na
terceira rota, como observado em (b’). Portanto, o operador de mutação altera os tamanhos
das rotas das UMPs.
4.2 Algoritmo Memético (AM)
Assim como o AG, o AM é também um algoritmo evolutivo e em particular possui
semelhanças com o primeiro. Um AM possui em sua estrutura as fases de seleção,
avaliação, crossover e mutação, além de sua fase característica que trata da busca local.
Portanto, o AM aqui proposto se utiliza de boa parte da implementação do AG,
acrescentando o procedimento busca local para os indivíduos da população.
Os indivíduos da população em AMs são denominados por agentes, uma vez que os
mesmos possuem autonomia para melhorar seu valor de fitness. A cada geração, os agentes
interagem com si mesmos ou com outros agentes da população em busca de soluções
ótimas localmente. A este processo se dá o nome de Evolução Cultural, uma vez que há
trocas ou absorção de informações culturais (memes) entre os indivíduos. Neste trabalho o
processo de busca local é realizado após as operações genéticas (cruzamento e mutação).
61
Para realizar a busca local no AM proposto, foi necessário definir as estruturas de
vizinhança para que se possa partir para o melhoramento do valor de fitness dos
indivíduos. Foram definidas duas estruturas de vizinhança: insereGene() e otimizaRota().
A primeira realiza para cada indivíduo a inserção de um gene de maior produção
proveniente do vetor de poços não pistoneados, visando obter um aumento na produção de
óleo de cada indivíduo. Na segunda, após a realização da primeira busca local, há uma
reestruturação das rotas entres genes (poços), aplicada individualmente para melhorar o
valor (minimizar) do custo da rota.
O método insereGene() recebe como parâmetro o indivíduo selecionado
aleatoriamente e substitui o gene proveniente do vetor de poços disponíveis pelo gene de
menor produção no indivíduo. Cada gene está associado a um poço visitado que por sua
vez possui um valor de produção associado. Antes da efetiva substituição de genes, é
verificada a distância do gene para cada um dos genes do indivíduo a receber a cópia. Caso
essa distância ultrapasse o tempo de jornada de trabalho para alguma UMP, logo é
descartado e selecionado o próximo melhor gene do vetor de poços disponíveis. Após a
inserção, o método otimizaRota() refaz as ligações entre cada gene em busca de melhorar o
custo com as rotas, mantendo os mesmos genes. A Figura 4.6 ilustra esse processo de
busca local utilizado no AM proposto:
Figura 4.6 – Processo de Busca Local do AM.
Fonte: Autor.
62
A Figura 4.6 tem como exemplo um cromossomo (indivíduo da população) de duas
UMPs (1 e 2) inicialmente com rotas configuradas como: UMP1 = {4-7-11-15} e UMP2 =
{1-9}, em ambas incluindo a ETO. No método insereGene() é verificado no vetor de poços
disponíveis do cromossomo em exemplo o poço de maior produção e que o caminho até
ele não ultrapasse a jornada de trabalho da UMP. Nesse exemplo foi escolhido o poço de
número 12 que irá substituir o poço de menor produção no cromossomo (poço 9). Após a
inserção, o cromossomo apresenta um valor de fitness maior (P > x). Em seguida o método
otimizaRota() tenta melhorar a rota do mesmo cromossomo diminuindo seu custo. Este
método escolhe aleatoriamente duas rotas (tij) (duas arestas no grafo associado) que são
eliminadas caso existam outras duas rotas que refaçam a ligação mantendo o ciclo que
contribuam para a diminuição do custo total da rota para aquela UMP (Tk). Esse método
trata-se de uma heurística de melhoramento e é conhecida na literatura por heurística 2-Opt
(CROES, 1958). Nesse exemplo, para a UMP1, foram removidas as rotas {4-15} e {11-7}
e adicionadas as novas rotas {4-11} e {15-7}. Para a UMP2 não há como aplicar a
heurística 2-Opt, por ter apenas uma rota. Mas nesse caso o algoritmo pode verificar a
existência de outra rota alternativa passando por outros poços que minimize o custo de
rota. No exemplo foi verificado a passagem pelo poço de número 10 entre os poços 1 e 12.
Em ambas as situações as heurísticas para otimização de rotas contribuíram para a
diminuição do custo de rota para cada UMP (T1, T2 < x) e aumentando o valor de
produção (P) com a inserção do poço 10 para a UMP2.
Este processo de busca local melhora consideravelmente o fitness de cada
cromossomo. Logo após a execução dos métodos de busca local, inicia-se uma nova
iteração do algoritmo. É aplicado o método de Avaliação de fitness em cada cromossomo e
logo após é aplicado o método de seleção, que irá guardar 10% dos melhores cromossomos
para a próxima geração. Dessa forma, com a aplicação dos métodos de busca local e de
seleção, somando-se aos métodos que diversificam toda a população, há garantias de
soluções melhores a cada iteração do algoritmo.
63
4.3 Vocabulary Building (VB)
A técnica Vocabulary Building tem por objetivo guardar os melhores vocábulos
numa espécie de pool (vetor dinâmico contendo vocábulos) que simula uma memória
adaptativa. Os melhores indivíduos de uma população podem possuir boas soluções
parciais que se aplicadas a outras podem melhorar seus respectivos fitness. Um vocábulo
para o PRUMP representa então um determinado trecho de uma rota para uma UMP que é
boa em termos de tamanho mínimo e possui um alto valor de produção total dos poços
presentes nesse trecho da rota.
Portanto, em cada vocábulo é importante registrar além da sequência da sub-rota,
seu valor de produção (Fv – soma das produções dos poços presentes na sub-rota) e seu
valor de custo (Tv – soma dos tempos de operação e de percurso entre os poços). Seguindo
essa ideia, uma estrutura de vocábulo para o PRUMP é apresentada na Figura 4.7:
Figura 4.7 – Estrutura de um Vocábulo.
Fonte: Autor.
Na Figura 4.7, o valor de fitness do vocábulo (Fv) é representado na primeira
posição (da esquerda para a direita) do vetor que representa um vocábulo. Este valor é
calculado sendo a soma das produções dos poços presentes na sub-rota, como aplicado na
Fórmula (4.1) para cálculo de fitness de um cromossomo no subitem 4.1.4. Na segunda
posição, o (Tv) representa o valor do tamanho daquela sub-rota, sendo a soma dos tempos
de percurso e de operação. Tv é o segundo critério para ordenamento dos vocábulos, do
menor para o maior, quando o Fv de dois ou mais vocábulos são iguais. As demais
posições guardam os números dos poços. A sequência da rota é definida pela ordem (da
esquerda para a direita) iniciando e retornando à ETO. Na Figura 4.8 são ilustrados dois
exemplos de vocábulos e suas respectivas sub-rotas.
O primeiro vocábulo (Exemplo a) possui valor de fitness igual a 17 e de tempo
igual a 399, com sequência {2-1-5}. O segundo exemplo (Exemplo b) possui valor de
64
fitness igual a 15 e tempo igual a 390, com sequência {1-2-3-7}. Comparando seus valores
de fitness, o vocábulo (a) é melhor que o vocábulo (b), por possuir um valor de fitness
maior que o outro. Ambos estão alocados num pool de boas soluções parciais.
Figura 4.8 – Exemplos de Vocábulos.
Fonte: Autor.
Inicialmente o Pool de vocábulos está vazio. Após a Avaliação da população, é
aplicada aos 10% melhores indivíduos a técnica VB, pois os mesmos devem possuir bons
trechos. O método registraVocabulo() tem por função verificar em cada cromossomo os
melhores trechos e guardá-los no Pool. Este método recebe como entrada o cromossomo a
ser verificado.
É interessante manter no Pool vocábulos não muito grandes. Dessa forma pode-se
facilmente inserir os vocábulos nas outras estruturas cromossômicas que apresentem
menores valores de fitness. Portanto, o tamanho do vocábulo é definido até a metade do
tamanho da rota completa para uma UMP. E seu tamanho mínimo é 2, ou seja, uma rota
entre dois poços i e j. A seguir é apresentado um pseudocódigo para o método
registraVocabulo().
Neste método o tamanho da atual rota completa da UMP é conhecido para que a
partir dele possa ser calculado o tamanho máximo do vocábulo. Considerando os limites,
aleatoriamente é definido o tamanho do vocábulo a ser procurado na rota da UMP. Se por
exemplo, o tamanho definido para o vocábulo for 3, dentro da rota completa da UMP será
procurada a melhor sequência de três poços que possui o melhor valor de fitness. Logo,
esse vocábulo é adicionado no Pool. Este processo se repete para cada rota contida no
65
cromossomo. Neste trabalho foi definido um tamanho máximo para o pool de até 50
vocábulos. Portanto, quando houver já preenchido todo o pool de vocábulos, o que
apresentar menor fitness será substituído por um novo vocábulo de fitness maior.
Após a atualização do Pool de vocábulos, entra em execução o método
insereVocabulos() que irá inserir vocábulos num conjunto específico de cromossomos da
população. São escolhidos para inserção de vocábulos os 50% cromossomos com menor
valor de fitness. O objetivo é inserir bons trechos de rotas para as UMPs desses
cromossomos. Esse método recebe como parâmetro a lista de vocábulos (pool) e o
cromossomo a ser avaliado. Maiores detalhes de implementação são apresentados no
seguinte pseudocódigo para este método:
O método insereVocabulos() irá analisar cada rota do cromossomo procurando
encontrar uma sub-rota de mesmo tamanho do vocábulo para que seja substituída por este
último. A sub-rota a ser substituída será a que oferecer menos valor de fitness para o
cromossomo. Outra condição para inserção do vocábulo na rota é que na mesma não haja
Método registraVocabulo
Entrada: cromossomo s S
Saída: Pool de vocábulos atualizado
início
para i=0 até N_UMPs faça
tam_vocabulo tam(s(UMP i))/2
tam_vocabulo random(tam_vocabulo)
vocabulos verificaVocabulo(tam_vocabulo, UMP i) adicionaVocabulosNoPool(vocabulos)
fim-para
fim
Método insereVocabulos
Entrada: Pool de vocábulos, cromossomo s S
Saída: Cromossomo s atualizado
início para i=0 até N_UMPs faça
para j=0 até tam_pool faça
tam_voc Pool(j).getTamVocabulo()
boolean melhor comparaVoc(Pool(j), tam_voc) if melhor então
insereVocabuloNaRota()
fim-para
fim-para
fim
66
poços duplicados após a inserção. É feita uma verificação no método comparaVoc() antes
da inserção. Caso a inserção implique em duplicação de poços na rota, um próximo
vocábulo é selecionado da lista. Se não houver implicações na inserção da rota, a mesma
irá contribuirá para o melhoramento do fitness para aquela rota (ganho de produtividade e
diminuição dos tempos de percurso e de operação sobre os poços).
A Figura 4.9 ilustra o procedimento de inserção de um vocábulo proveniente de um
pool de vocábulos num cromossomo exemplo. Inicialmente o cromossomo possui um valor
de produção igual a 39 m³ de óleo. Deve-se somente inserir um vocábulo quando sua
inserção promover um aumento no valor de produção do cromossomo, ou seja, melhorar
seu fitness. No momento da execução do método insereVocabulos(), para a UMP 1 do
cromossomo exemplo, é verificado que a inserção do vocábulo {5-6} de Fv = 8 e Tv = 186
que promove um aumento de 7 m³ de óleo na produção do cromossomo (elevando para 46
m³).
Figura 4.9 – Inserção de Vocábulos.
Fonte: Autor.
67
O método insereVocabulos() prossegue verificando para outras rotas das outras
UMPs do cromossomo uma possível inserção de vocábulos que possa promover um
aumento de fitness.
A técnica VB tem promovido a melhora das soluções no decorrer do processamento
do AM. Sua grande vantagem é guardar “trechos” de boas soluções para que a partir destas
se possam construir outras boas soluções para o problema proposto. No capítulo seguinte
(capítulo 5) são apresentados resultados de testes realizados com diversas instâncias
utilizando os algoritmos e heurísticas discutidas aqui neste capítulo.
68
Capítulo 5
[Testes Computacionais e Resultados Obtidos]
5.1 Caracterização e Metodologia
Foi desenvolvido um Algoritmo Genético – AG fundamentado nas definições
apresentadas no capítulo 4. O objetivo deste algoritmo é obter soluções para o PRUMP
considerando uma frota k de UMPs. A implementação do AG proposto para resolução do
PRUMP se deu através do uso da linguagem de programação C++ por ser mais rápida em
tempo de processamento e por suportar o paradigma Orientação a Objetos, que possibilita
uma fácil e eficiente implementação se baseando em comportamentos e atributos de
entidades contidas no problema abordado do presente trabalho.
Para simular um Algoritmo Memético –AM, foi implementado um módulo de
busca local e inserido no AG, aproveitando-se da estrutura do mesmo. Outro módulo para
aplicação da técnica Vocabulary Building – VB foi desenvolvido e inserido no AM.
Os parâmetros utilizados para o AG foram:
Tamanho da População(M): 30 cromossomos
Taxa de Crossover: 80%
Taxa de Mutação: 10%
Número de Gerações: 200
Para se chegar a estes valores definidos como parâmetros para o AG proposto,
foram feitas diversas simulações, para cada uma das instâncias utilizadas nesse trabalho,
diferenciado-se os valores para os parâmetros “Tamanho da População” e “Número de
Gerações”. Os melhores resultados em termos de soluções e tempos de processamento
(TCPU) influenciaram na escolha de determinado valor para algum parâmetro. A Tabela
5.1 possui os detalhes dos testes realizados para a escolha dos parâmetros do AG.
69
Testes para obtenção dos valores dos parâmetros do AG
N.gerações/Tam. População M = 10 M = 20 M = 30 M = 40 M = 50 M = 100
50 gerações 5,94% 21,09% 34,81% 36,82% 39,66% 41,22%
100 gerações 15,77% 28,45% 42,03 47,41% 48,36% 50,18%
200 gerações 24,88% 41,85% 66,67% 61,38% 62,91% TCPU>60
min
300 gerações 34,64% 43,12% 58,11% 59,89% TCPU>60
min TCPU>60
min
500 gerações TCPU>60
min TCPU>60
min TCPU>60
min TCPU>60
min TCPU>60
min TCPU>60
min Tabela 5.1 – Testes para obtenção dos valores dos parâmetros do AG.
Fonte: Autor.
As combinações de parâmetros que ocasionaram um TCPU maior que 60 minutos,
foram descartados. A combinação de parâmetros que mais resultou em maior percentual de
otimalidade foi: N. gerações = 200 e M = 30, sendo responsável por 66,67% de
otimalidade na execução das metaheurísticas AGP, AM e AM+VB.
Para validação do modelo e do algoritmo proposto, instâncias do PRUMP foram
utilizadas. Cada instância simula um campo de extração de petróleo contendo n poços
disponíveis para pistoneio. Portanto, são parâmetros de entrada para os métodos de
resolução:
n: número de poços;
m: número de UMPs;
Lk[m]: vetor de jornadas de trabalhos de cada UMP;
p[n]: vetor de valores de produção dos poços disponíveis para pistoneio;
t[n]: vetor de tempos de operação dos poços disponíveis para pistoneio;
tij[n+1, n+1]; matriz de distâncias (tempos de percursos) entre cada poço,
incluindo a ETO.
As instâncias foram submetidas a dois tipos de métodos de resolução: método exato
e métodos heurísticos. Para resolução através de um método exato foi utilizado o software
ILOG CPLEX 11.210 (versão full licenciada para a Universidade Federal do Rio Grande
do Norte) que possui algoritmos exatos para tratar problemas de otimização de
programação linear inteira mista. Métodos de resolução exatos proporcionam, num
determinado tempo relacionado ao tamanho da instância, uma solução ótima global. Para
70
resolução através de métodos heurísticos, é aplicado o AG desenvolvido em três
categorias: Algoritmo Genético Puro (AGP); Algoritmo Genético com busca local
(Algoritmo Memético – AM) e Algoritmo Memético com a técnica Vocabulary Building
(AM+VB). Os resultados obtidos através de métodos heurísticos são próximos da solução
ótima ou, em alguns casos, é igual ao ótimo obtido através de um método exato. A
vantagem que se tem ao usar métodos heurísticos trata-se do tempo de processamento
computacional que é bem menor quando comparado ao de um método exato. Os resultados
de cada um dos métodos são comparados em termos de tempo de processamento e solução
obtida.
As instâncias trabalhadas se dividem em dois grupos: instâncias testes com 11
poços (ITP11) e instâncias com 99 poços (IP99), que simulam um campo real. As
instâncias com 11 poços foram criadas pelo autor do presente trabalho com objetivos de
testes de validação do modelo (formulação matemática para o PRUMP) e do AG proposto.
As instâncias com 99 poços foram adaptadas dos trabalhos de dissertação de mestrado de
Neves (2000) e Barros (2001).
Todos os testes (métodos exatos e heurísticos) foram realizados numa mesma
máquina. As configurações do computador utilizado são:
Sistema Operacional Linux (Ubuntu versão 9.10, kernel 2.6.31-22)
CPU QUAD CORE (4 núcleos) com freqüência de 2.4 GHZ
Memória RAM DDR2 com capacidade para 2GB
5.2 Testes Preliminares: instâncias de 11 Poços
As comparações dos resultados obtidos através do método exato e das execuções
das metaheurísticas propostas para as instâncias de 11 poços (ITP11) estão listados na
Tabela 5.2:
71
Tabela de Comparação de Resultados para cinco instâncias ITP11
INSTÂNCIAS
Método Exato AGP AM AM+VB
P*(m³) TCPU(s) T*k P(m³)
(gap%) TCPU(s) Tk
P(m³)
(gap%) TCPU(s) Tk
P(m³)
(gap%) TCPU(s) Tk
ITP11-
M1-A
UMP1
L1=480
min
18 0.02 466
min
18
(0,00)
6.35 466
min
18
(0,00)
15.01 466
min
18
(0,00)
22.00 466
min
ITP11-
M1-B
UMP1
L1=960
min
35 0.08 955
min
35
(0,00)
8.78 955
min
35
(0,00)
16.99 955
min
35
(0,00)
24.78 955
min
ITP11-
M2-A
UMP1
L1=480
min 33 0.34
466
min 33
(0,00)
11.03
466
min 33
(0,00)
21.66
466
min 33
(0,00)
22.55
466
min
UMP2
L2=480
min
445
min
445
min
445
min
445
min
ITP11-
M2-B
UMP1
L1=480
min 46 0.09
449
min 46
(0,00)
11.84
449
min 46
(0,00)
19.09
449
min 46
(0,00)
23.76
449
min
UMP2
L2=960
min
873
min
873
min
873
min
873
min
ITP11-
M3-A
UMP1
L1=480
min
46 0.79
420
min
46
(0,00)
15.42
420
min
46
(0,00)
26.12
420
min
46
(0,00)
34.90
420
min
UMP2
L2=480
min
480
min
480
min
480
min
480
min
UMP3
L3=480
min
472
min
472
min
472
min
472
min
Tabela 5.2 – Comparação de Resultados Exatos e Heurísticos para as instâncias ITP11
Fonte: Autor.
O grupo de instâncias de 11 poços (ITP11) consiste de 5 instâncias, com
configurações diferenciadas de número de UMPs (m) utilizadas e suas respectivas jornadas
de trabalho (Lk):
ITP11-M1-A: 1 UMP com jornada de trabalho L1 = 480 minutos;
ITP11-M1-B: 1 UMP com jornada de trabalho L1 = 960 minutos;
ITP11-M2-A: 2 UMPs com jornadas de trabalho L1 = L2 = 480 minutos;
72
ITP11-M2-B: 2 UMPs com jornadas de trabalho L1 = 480 minutos e L2 =
960 minutos;
ITP11-M3-A: 3 UMPs com jornadas de trabalho L1 = L2 = L3 = 480
minutos.
De acordo com o observado na Tabela 5.2, todos os métodos heurísticos (AGP, AM
e AM+VB) atingiram a solução ótima. Seus tempos de processamento (TCPU) ocorreram
todos em menos de 1 minuto. É observado, na maioria dos casos, que os tempos de
execução do AGP são menores quando comparados aos tempos de execução do AM, e este
por sua vez possui TCPU menores que o AG+VB. Isto se deve a adição de heurísticas de
busca local e de melhoramento, tais como o procedimento de busca local para o AM,
discutido no subitem 4.2 e a técnica VB discutida no subitem 4.3. Estes tempos quando
comparados aos tempos do método exato, são bem maiores, sendo, portanto preferível
utilizar para essas instâncias (ITP11) o método exato que possibilita um resultado ótimo
em menos de 1 segundo.
Vale ressaltar que as instâncias ITP11 são pequenas, contendo apenas 11 poços,
como observado na Figura 5.1. Para instâncias maiores, os métodos heurísticos propostos
no presente trabalho são mais eficazes quando considerados seus tempos de
processamento, como discutido no subitem 5.3 para as instâncias IP99.
Figura 5.1 – Malha com 11 poços.
Fonte: Autor.
73
Uma observação do ponto de vista econômico identificada através dos resultados
expressos na Tabela 5.2 é que, para este campo, contendo 11 poços, faz-se necessário para
total cobertura (explotação de todos os 11 poços) apenas duas UMPs, uma com jornada L1
= 480 minutos e a outra com jornada L2 = 960 minutos. Essa informação é importante para
a tomada de decisão, por exemplo, na quantidade ideal de UMPs a ser utilizada para
explotação num campo de petróleo. Se o problema envolver custos por cada UMP
utilizada, o tomador de decisão evitará utilizar uma quantidade de UMPs desnecessária,
obtendo economias.
O método exato tem por objetivos procurar maximizar a produção (P) e minimizar
o tamanho das rotas (Tk) de cada UMP, não restringindo o limite de uma jornada de
trabalho (Lk). Porém, os métodos heurísticos propostos, principalmente o AM e AM+VB,
podem também durante sua execução, tentar melhorar o valor de cada rota presente na
solução, além de buscarem por soluções que apresentem valor de produção próximo do
ótimo. Esses resultados ótimos (produção e tempo de percurso) foram alcançados na
Tabela 5.2 para todas as instâncias ITP11.
5.3 Testes Realizados com instâncias de 99 poços
Para efeitos de proximidade com o problema real, foi aproveitada aqui neste
trabalho uma malha de 99 poços proveniente dos trabalhos de dissertação de Neves (2000)
e Barros (2001). Trata-se de uma representação de um grafo com 99 poços e arestas
valoradas representando os tempos de percurso (tij) entra cada poço. A Figura 5.2 apresenta
a malha com 99 poços simulando um campo real de petróleo:
74
Figura 5.2 – Malha com 99 poços.
Fonte: (NEVES, 2000).
Considerando a Figura 5.2, foi definido neste trabalho que cada poço está
disponível para pistoneio que é representado através de um número que varia de 1 para 99.
A ETO é o nó de número zero (0). Foram configuradas sete instâncias diferenciando no
número de UMPs (m) e em suas respectivas jornadas de trabalho (Lk):
IP99-M1-A: 1 UMP com o jornada de trabalho L1 = 480 minutos;
IP99-M1-B: 1 UMP com jornada de trabalho L1 = 960 minutos;
IP99-M2-A: 2 UMPs com jornadas de trabalho L1 = L2 = 480 minutos;
IP99-M2-B: 2 UMPs com jornadas de trabalho L1 = 480 minutos e L2 =
960 minutos;
75
IP99-M2-C: 2 UMPs com jornadas de trabalho L1 = L2 = 960 minutos;
IP99-M3-A: 3 UMPs com jornadas de trabalhos L1 = L2 = L3 = 480 minutos;
IP99-M3-B: 3 UMPs com jornadas de trabalho L1 = L2 = L3 = 960 minutos;
Os valores de produção obtidos, em cada uma dessas instâncias IP99, são
apresentados na Tabela 5.3 e comparados com os resultados obtidos através das
metaheurísticas desenvolvidas para este problema:
Tabela de Comparação de Resultados para cinco instâncias IP99
INSTÂNCIAS
Método Exato AGP AM AM+VB
P*(m³) TCPU(s) T*k
P(m³)
(gap%)
TCPU(s) Tk
P(m³)
(gap%)
TCPU(s) Tk
P(m³)
(gap%)
TCPU(s) Tk
IP99-
M1-A
UMP1
L1=480 min
14 6.05 420
14
(0,00)
548.61 420
14
(0,00)
846.00 420
14
(0,00)
972.13 420
IP99-
M1-B
UMP1
L1=960 min
28.70 93.37 946
28.70
(0,00)
580.12 946
28.70
(0,00)
901.86 946
28.70
(0,00)
953.44 946
IP99-
M2-A
UMP1
L1=480 min
27.70 161.9
476
26.70
(3,61)
623.00
436
27.70
(0,00)
876,97
476
27.70
(0,00)
954.19
476
UMP2
L2=480 min
464 464 464 464
IP99-
M2-B
UMP1
L1=480
min 42.70 648.16
464
34,20
(19,90)
585.97
396
38.7
(9,37)
814.32
412
38.7
(9,37)
916.62
464
UMP2
L2=960
min
946 930 946 856
IP99-
M2-C
UMP1
L1=960 min
56.50 39601
934
49.20
(12,92)
598.49
844
53
(6,19)
863.71
934
56.50
(0,00)
1025.00
934
UMP2
L2=960 min
954 856 858 954
IP99-
M3-A
UMP1
L1=480 min
37.70 4408.3
464
36.2
(3,98)
718.92
464
37
(1,86)
996.74
464
37
(1,86)
1163.03
464
UMP2
L2=480 min
476 436 484 484
UMP3
L3=480 min
416 336 416 416
76
Tabela de Comparação de Resultados para cinco instâncias IP99 (continuação)
INSTÂNCIAS
Método Exato AGP AM AM+VB
P(m³) TCPU(s) Tk
P(m³)
(gap%)
TCPU(s) Tk
P(m³)
(gap%)
TCPU(s) Tk
P(m³)
(gap%)
TCPU(s) Tk
IP99-
M3-B
UMP1
L1=960 min
81* 466867
960**
66.5
(17,90)
815.84
908
71.5
(11,73)
1082.00
908
75
(7,41)
1235.39
908
UMP2
L2=960 min
954** 858 858 954
UMP3
L3=960 min
934** 762 934 934
Tabela 5.3 – Comparação de Resultados Exatos e Heurísticos para as instâncias TP99.
Fonte: Autor.
Todos os resultados referentes às metaheurísticas foram selecionados dentre os
melhores obtidos após uma série de sucessivas execuções para as mesmas instâncias
consideradas. Pois devido ao mecanismo aleatório das metaheurísticas na geração dos
resultados, considerar uma ou um número pequeno de execuções para uma mesma
instância é insuficiente para provar o seu desempenho. Portanto, na Tabela 5.3 estão os
melhores resultados obtidos das metaheurísticas (AGP, AM e AM+VB).
Mais uma vez é observado que a adição de heurísticas de busca local e de melhorias
(AM e AM+VB) tendem a melhorar o valor da produção, mesmo que consumam uma
parcela de tempo um pouco maior, quando comparado ao AGP. Destacam-se os resultados
obtidos através da metaheurística AM+VB, onde de sete instâncias, em quatro foram
atingidos a solução ótima (nas instâncias IP99-M1-A, IP99-M1-B, IP99-M2-A e IP99-M2-
C), e para as demais atingiram gaps num intervalo de 1,86% a 9,37%.
Na Tabela 5.3, percebe-se que os tempos de execução (TCPU) obtidos do método
exato são melhores que os tempos das metaheurísticas para as instâncias até duas UMPs,
mas com tempos diferentes de jornada de trabalho Lk (IP99-M2-B). Mas a partir da
instância IP99-M2-C os TCPU obtidos para o método exato são muito grandes, variando
de 1 hora para mais de 5 dias. O melhor resultado de produção obtida (P) para a instância
IP99-M3-B foi de 81 m3, sendo este um valor aproximativo da solução ótima, com gap de
1,36%. A não obtenção da solução ótima para essa instância através do método exato se
77
deve a problemas de “estouro de memória” ocorrido durante a execução. Portanto, a
execução teve que ser abortada e foi registrada a melhor solução encontrada. Na fase de
minimização, ainda para a instância IP99-M3-B, os tempos obtidos para cada UMP não
são ótimos. São os tempos Tk realizados por cada UMP, considerando o valor de produção
ótima P = 81 m³. De mesma forma, houve problemas com estouro de memória na obtenção
dos tempos mínimos para essa instância.
Entretanto, os tempos (TCPU) obtidos a partir da instância IP99-M2-C, através das
execuções das metaheurísticas desenvolvidas para o PRUMP, são bem menores quando
comparados com os tempos obtidos através do método exato para essas mesmas instâncias.
Portanto, para instâncias maiores, que condizem com a realidade trabalhada pela Petrobras,
algoritmos aproximativos respondem melhor que os algoritmos exatos, principalmente pelo
fator tempo de execução computacional. De acordo com a Tabela 5.3, o tempo máximo
para uma metaheurística obter um resultado próximo do ótimo, foi de 1235,39 segundos,
ou seja, 20 minutos e meio, para a instância IP99-M3-B. Para essa mesma instância, o
método exato obteve uma resposta, próximo do ótimo, em 466867 segundos, ou seja, em
mais de cinco dias.
No apêndice, estão os gráficos de comparações das evoluções das metaheurísticas
AGP, AM e AM+VB, aplicadas a cada uma das instâncias utilizadas nesse trabalho.
78
Capítulo 6
[Conclusões e Sugestões para Trabalhos Futuros]
6.1 Conclusões
Neste trabalho, foram realizados estudos para solucionar o Problema de
Roteamento de várias Unidades Móveis de Pistoneio – PRUMP com frota igual ou
superior a um veículo através das Metaheurísticas Algoritmo Genético – AG, Algoritmo
Memético – AM e Algoritmo Memético com a técnica Vocabulary Building – AM+VB
com o objetivo de promover a maximização da produção de óleo em campos petrolíferos
terrestres que contenham poços pistoneáveis.
Foram desenvolvidas na linguagem de programação C++ as metaheurísticas
propostas e as mesmas foram aplicadas às instâncias criadas especialmente para fins de
testes. Outras instâncias foram obtidas através de trabalhos de dissertação correlatos que
simulam o problema real. Resultados satisfatórios foram obtidos com o uso das
metaheurísticas.
Através dos resultados obtidos, chegou-se à conclusão de que para instâncias
maiores, os métodos heurísticos possibilitam um menor tempo de resposta para uma
solução quando comparados com o método exato.
6.2 Sugestões para Trabalhos Futuros
O PRUMP por ser uma variante de problemas correlatos existentes na literatura,
tais como o PCV, possui vasta aplicabilidade aos problemas que envolvam roteamento e
logística de veículos e de tarefas. Sugere-se então a aplicação a outros problemas
correlatos.
79
Para campos de extração de petróleo vastos, com centenas de poços, seria
interessante a modelagem matemática do PRUMP com múltiplos depósitos.
Outro ponto interessante para pesquisa seria desenvolver um AG Multiobjetivo para
o PRUMP, uma vez que foi verificado que o mesmo possui dois objetivos: maximizar a
produção total de petróleo e minimizar o tempo de atuação de cada UMP. Funções de
Pareto podem ser aplicadas para um estudo detalhado.
80
Referências Bibliográficas
ALOISE, D. J.; BARROS, C. A.; NEVES, J. A.; SOUZA, M. C. Um Algoritmo Genético
para uma Variante do Problema de Orientação. Congreso Latino Americano en
Investigacion de Operaciones. 4-8 set 2000. Cidade do México, México. 2000(a).
ALOISE, D. J.; MOURA, L. S. S.; ASSMAN, B. W.; BARROS, C. A; NEVES, J. A.
Otimização do Emprego da Unidade Móvel de Pistoneio na Exploração de Campos
Petrolíferos de Poços Não Surgentes. Rio Oil & Gas Expo and Conference. 16-19 out
2000. Instituto Brasileiro de Petróleo. Rio de Janeiro (RJ), Brasil. 2000(b).
ALOISE, D. J.; NEVES, J. A.; BARROS, C. A.; MOURA, L. S. S.; ASSMANN, B. W.
Um Algoritmo Genético na Otimização do Emprego da Unidade Móvel de Pistoneio.
XXXII Simpósio Brasileiro de Pesquisa Operacional. 18-20 out 2000. Universidade
Federal de Viçosa / SOBRAPO. Viçosa (MG), Brasil. 2000(c).
ALOISE, D. J.; BARROS, C. A.; NEVES, J. A.; MOURA, L. S. S.; ASSMANN, B. W.;
SOUZA, M. C. Otimização do Emprego da Unidade Móvel de Pistoneio através de
GRASP. XXXII Simpósio Brasileiro de Pesquisa Operacional. 18-20 out 2000.
Universidade Federal de Viçosa / SOBRAPO. Viçosa (MG), Brasil. 2000(d).
ALOISE, D.; ALOISE, D. J. ;OCHI, L. S.; MAIA, R. S.; BITTENCOURT, V. G. Uma
colônia de formigas para o problema de explotacão de petróleo e otimização de rotas
de unidades móveis de pistoneio. Congresso Brasileiro de Automática, Natal, Brazil, pp.
1232–1237. 2002.
ALOISE, D. J.; SANTOS, A. C.; DUHAMEL, C. Formulações multiobjetivos para um
problema de coleta de petróleo em campos maduros. XLI Simpósio Brasileiro de
Pesquisa Operacional, Porto Seguro, p.1143-1154, 2009.
APPLEGATE, D. L.; BIXBY, R. E.; CHVÁTAL, V.; COOK, W. J. The Traveling
Salesman Problem: a computational study. Princenton University Press, Princenton, New
Jersey, USA. 2007.
BALAS, E. The prize collecting traveling salesman problem. Networks. vol.19, 621-
636. 1989.
BARROS, C. A. Uma aplicação de grasp na otimização do emprego da unidade móvel
de pistoneio. Master’s thesis, Universidade Federal do Rio Grande do Norte,
Departamento de Informática, Natal, Brasil. 2001.
BLICKLE, T.; THIELE, L. A Comparison of Selection Schemes used in Genetic
81
Algorithms. Report No. 11, Computer Engineering and Communication Networks Lab
(TIK), Swiss Federal Institute of Technology (ETH), Zurich, 1995.
[CLAY MATHEMATICS INSTITUTE] P vs NP Problem. Disponível em:
<http://www.claymath.org/millennium/P_vs_NP/>. Acesso em: 11 Jun. 2010.
COLLETTE, Y; SIARRY, P. Multiobjective Optimization. Berlim: Springer, 2003.
CONCILIO, R. Contribuições à Solução de Problemas de Escalonamento pela
Aplicação Conjunta de Computação Evolutiva e Otimização com Restrições.
Dissertação de Mestrado, Universidade Estadual de Campinas, Departamento de
Engenharia de Computação e Automação Industrial, Campinas, Brasil. 2000.
CORMEM, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos: teoria e
prática. 2 ed. Rio de Janeiro: Elsevier, 2002.
CROES, G. A. A method for solving traveling salesman problems. Operations Res. 6,
pp., 791-812. 1958.
DANTZIG, G. B.;RAMSER, R. H. The Truck Dispatching Problem. Management
Science. vol. 6. pp. 80-91. 1959.
DAVIS, L. Handbook of Genetic Algorithms. Van Nostrand Reinhold, New York, 1991.
EHRGOTT, M. Multicriteria Optimization. 2. ed. Berlim: Springer, 2005.
FLOOD, M. M. The Traveling-Salesman Problem. Operations Research, vol. 4, n. 1, pp.
61-75, fevereiro. 1956.
[GENOMA] A descoberta do DNA e o projeto genoma. Rev. Assoc. Med. Bras., São
Paulo, v. 51, n. 1, Feb. 2005 . Disponível em:
<http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-
42302005000100001&lng=en&nrm=iso>. Acesso em: 01 Set. 2010.
GLOVER, F. New Ejection Chain and Alternating Path Methods for Traveling
Salesman Problems. In: Computer Science and Operations Research: New Developments
in Their Interfaces [editado por R. Sharda, O. Balci e S. Zenios], Cambridge: Elsevier,
449-509. 1992.
GLOVER, F.;LAGUNA, M. Tabu Search. In: Modern Heuristic Techniques for
Combinatorial Problems [editado por C. Reeves], Oxford: Blackwell Scientific Publishing,
71-140. 1993.
82
GLOVER, F.; LAGUNA, M. Tabu search. Massachusetts: Kluwer Academic Publishers.
1998.
GLOVER, F. Scatter Search and Path Relinking. In: New Ideas in Optimization [editado
por D. Corne, M. Dorigo e F. Glover], London: McGraw Hill, 297-319. 1999.
GLOVER, F; LAGUNA, M.; MARTI, R. Fundamentals of Scatter Search and Path
Relinking. Control and Cybernetics, 29(3), 653-684. 2000.
GLOVER, F. Tutorial on Surrogate Constraint Approaches for Optimization in
Graphs. Journal of Heuristics, 9(3), 175-228. 2003.
GOLDBERG, D. E. Genetic Algorithms in Search, Optimization, and Machine
Learning. Adison-Wesley, USA, 1989.
GOLDEN B. L.; ASSAD A.; DAHL R. Analysis of a large-scale vehicle routing
problem with inventory component. Large Scale Systems, Vol. 7, 181-190. 1984
GOLDEN B.L.; LEVY L.; VOHRA R. The orienteering problem. Naval Research
Logistics, Vol. 34, 307-318. 1987.
GUEDES, A. B. da C.; ALOISE. D. J. Um algoritmo memético para o problema do
caixeiro viajante assimétrico: Uma abordagem baseada em vocabulary building.
Sociedade Brasileira de Pesquisa operacional – SBPO. 2006.
HOLLAND, J. H. Adaptation in Natural and Artificial Systems. University of
Michigan Press, Ann Arbor, 1975.
HUNG, D. L.; WANG, J. Digital Hardware Realization of a Recurrent Neural
Network for solving the Assignment Problem. Neurocomputing 51, pp. 447-461. 2003.
KANTOR, M.; ROSENWEIN, M. The orienteering problem with time windows.
Journal of Operational Research Society, Vol. 43, No. 6, 629-635. 1992.
KELLER, P. Algorithms to solve the orienteering problem: a comparison. European
Journal of Operational of Research, Vol. 41, 224-231. 1989.
KELLY, J.P.; XU, J. Tabu Search and Vocabulary Building for Routing Problems.
Technical Report. Graduate School of Business Administration, University of Colorado at
Boulder. 1995.
LAPORTE, G. Recent Advances in Routing Algorithms. Groupe d’études et de
recherche en analyse des décisions - GERAD. Rapports de Recherche HEC - École des
Hautes Études Commerciales. 1997.
LEMONGE, A. C. C. Aplicação de Algoritmos Genéticos em Otimização Estrutural.
83
Tese de Doutorado do Programa de Engenharia Civil, COPPE / UFRJ, Rio de Janeiro,
Junho de 1999.
MERZ, P.; FREISLEBEN, B. A comparison of memetic algorithms, tabu search, and
ant colonies for the quadratic assignment problem. Angeline, P., editor, Congress on
Evolutionary Computation (CEC’99), p. 2063–2070, Piscataway, NJ. IEEE Press. 1999.
MOSCATO, P; NORMAN, M. G. A ’memetic’ approach for the traveling salesman
problem. Valero, M.; Onate, E.; Jane, M.; Larriba, J. L. e Suarez, B., editors,
Implementation of a Computational Ecology for Combinatorial Optimization on Message-
Passing Systems, Parallel Computing and Transputer Applications, p. 187–194,
Amsterdam. IOS Press. 1992.
MOSCATO, P. Memetic Algorithms: A Short Introduction, in Corne, D., Dorigo, M. &
Glover, F. (eds.) New Ideas in Optimization, McGraw-Hill, pp. 219-234. 1999.
MOSCATO, P.; COTTA, C. Una introduccion a los algoritmos memeticos. Revista
Iberoamericana de Inteligencia Artificial, v. 19, p. 131–148. 2003.
NETO, J. S. S. Aplicação Das Técnicas Path-Relinking e Vocabulary Building na
Melhoria de Performance do Algoritmo Memético para o Problema do Caixeiro
Viajante Assimétrico. Dissertação de Mestrado – Programa de Pós-Graduação em
Engenharia de Produção, UFRN. 2009.
NEVES, J. A. Uma aplicação de Algoritmo Genético na Otimização do Emprego da
Unidade Móvel de Pistoneio. Dissertação de Mestrado, Universidade Federal do Rio
Grande do Norte, Departamento de Informática e Matemática Aplicada, Natal, Brasil.
2000.
NEVES, J. A.; DIDIER, M. A. C. Modelagem de Problemas em Programação Linear
Inteira. In: VII Encontro Regional de Matemática Aplicada – ERMAC, 2007, Recife, PE.
Anais... Recife: SBMAC, 2007.
PETROBRAS. Fontes de Energia: Petróleo. Disponível em: <
http://www.petrobras.com.br/pt/energia-e-tecnologia/fontes-de-energia/petroleo/ >. Acesso
em: 10 ago. 2010.
PIMENTA, D. J. Algoritmo de Otimização para o Problema de Roteamento de
Veículos no Transporte Conjunto de Cargas e de Passageiros. Escola de Engenharia da
Universidade Federal de Minas Gerais, Dissertação de Mestrado. Departamento de
Engenharia Elétrica, Belo Horizonte, Brasil. 2001.
ROCHAT, Y.; TAILLARD, E. Probabilistic Diversification and Intensification in
Local Search for Vehicle Routing. Journal of Heuristics, 1(1), 147-167. 1995.
84
SANTOS, A. C.; ALOISE, D. J.; BARROS, C. A.; SOUZA, M. C.; NORONHA, T. F. Um
algoritmo GRASP reativo aplicado ao problema do emprego da unidade móvel de
pistoneio. Proceedings of the XXXIII Simpósio Brasileiro de Pesquisa Operacional,
Campos do Jordão, SP, pp. 247–258. 2001.
SANTOS, A. C.; DUHAMEL; C.; ALOISE, D. J. Modeling the mobile oil recovery
problem as a multiobjective vehicle routing problem. Book Series Communications in
Computer and Information Science, Vol. 14, pp. 283–293. 2008.
SCHOLL, A.; KLEIN, R.; DOMSCHKE, W. Pattern Based Vocabulary Building for
Effectively Sequencing Mixed-Model Assembly Lines. Journal of Heuristics, 4(4), 359-
381. 1998.
SILVA, A. C. G. Busca Heurística Através de Algoritmo Genético e Memético com
Construção de Vocábulos para o Problema de Atribuição de Localidades a Anéis
SONET. Dissertação de Mestrado– Programa de Pós-Graduação em engenharia de
Produção, UFRN. 2008.
SIVANANDAM, S. N.; DEEPA, S.N. Introduction to Genetic Algorithms. 1 ed.
Springer. 2008.
SOARES, W. K. da S. Heurísticas Usando Construção de Vocabulário Aplicadas ao
Problema da Atribuição de Localidades a Anéis em Redes SONET/SDH. Dissertação
de Mestrado – Programa de Pós-Graduação em Engenharia de Produção, UFRN. 2008.
TASGETIREN, M. Fatih. A Genetic Algorithm with an Adaptive Penalty Function for
the Orienteering Problem. Journal of Economic and Social Research 4 (2), pp. 1-26.
2002.
85
Apêndice
86
GRÁFICOS DE EVOLUÇÃO DAS METAHEURÍSTICAS APLICADAS AO
PRUMP
02468
101214161820
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
ITP11-M1-A
AGP
AM
AM+VB
0
5
10
15
20
25
30
35
40
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
ITP11-M1-B
AGP
AM
AM+VB
87
0
5
10
15
20
25
30
35
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
ITP11-M2-A
AGP
AM
AM+VB
05
101520253035404550
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
ITP11-M2-B
AGP
AM
AM+VB
88
05
101520253035404550
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
ITP11-M3-A
AGP
AM
AM+VB
0
2
4
6
8
10
12
14
16
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M1-A
AGP
AM
AM+VB
89
0
5
10
15
20
25
30
35
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M1-B
AGP
AM
AM+VB
0
5
10
15
20
25
30
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M2-A
AGP
AM
AM+VB
90
0
5
10
15
20
25
30
35
40
45
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M2-B
AGP
AM
AM+VB
0
10
20
30
40
50
60
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M2-C
AGP
AM
AM+VB
91
0
5
10
15
20
25
30
35
40
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M3-A
AGP
AM
AM+VB
0
10
20
30
40
50
60
70
80
0 25 50 75 100 125 150 175 200
Fitness
N. gerações
IP99-M3-B
AGP
AM
AM+VB