• Nenhum resultado encontrado

Algoritmos exatos e heurísticos para um problema de compartilhamento de veículos  

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmos exatos e heurísticos para um problema de compartilhamento de veículos  "

Copied!
73
0
0

Texto

(1)

Welverton Rodrigues da Silva

Algoritmos Exatos e Heurísticos para um Problema

de Compartilhamento de Veículos

CAMPINAS

2019

(2)

Algoritmos Exatos e Heurísticos para um Problema

de Compartilhamento de Veículos

Dissertação apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação.

Orientador: Prof. Dr. Rafael Crivellari Saliba Schouery

Este exemplar corresponde à versão final da Dissertação defendida por Welverton Rodrigues da Silva e orientada pelo Prof. Dr. Rafael Crivellari Saliba Schouery.

CAMPINAS

2019

(3)

Ficha catalográfica

Universidade Estadual de Campinas

Biblioteca do Instituto de Matemática, Estatística e Computação Científica Ana Regina Machado - CRB 8/5467

Silva, Welverton Rodrigues da,

Si38a SilAlgoritmos exatos e heurísticos para um problema de compartilhamento de veículos / Welverton Rodrigues da Silva. – Campinas, SP : [s.n.], 2019.

SilOrientador: Rafael Crivellari Saliba Schouery.

SilDissertação (mestrado) – Universidade Estadual de Campinas, Instituto de Computação.

Sil1. Otimização combinatória. 2. Programação linear inteira mista. 3. Meta-heurística. I. Schouery, Rafael Crivellari Saliba, 1986-. II. Universidade Estadual de Campinas. Instituto de Computação. III. Título.

Informações para Biblioteca Digital

Título em outro idioma: Exact and heuristic algorithms for a car-sharing problem Palavras-chave em inglês:

Combinatorial optimization

Mixed-integer linear programming Metaheuristic

Área de concentração: Ciência da Computação Titulação: Mestre em Ciência da Computação Banca examinadora:

Rafael Crivellari Saliba Schouery [Orientador] Fábio Luiz Usberti

Pedro Henrique Del Bianco Hokama

Data de defesa: 28-03-2019

Programa de Pós-Graduação: Ciência da Computação

(4)

Welverton Rodrigues da Silva

Algoritmos Exatos e Heurísticos para um Problema

de Compartilhamento de Veículos

Banca Examinadora:

• Prof. Dr. Rafael Crivellari Saliba Schouery

Instituto de Computação - UNICAMP (Orientador) • Prof. Dr. Fábio Luiz Usberti

Instituto de Computação - UNICAMP

• Prof. Dr. Pedro Henrique Del Bianco Hokama Instituto de Matemática e Computação - UNIFEI

A ata da defesa, assinada pelos membros da Comissão Examinadora, consta no SIGA/Sistema de Fluxo de Dissertação/Tese e na Secretaria do Programa da Unidade.

(5)

Primeiro, quero agradecer ao meu orientador, Professor Doutor Rafael Schouery, pela sua excelente orientação e dedicação com que conduziu este trabalho.

Agradeço aos membros da banca, Professores Doutores Fábio Usberti e Pedro Hokama, pelas sugestões e correções que muito contribuíram para melhorar a qualidade final do texto desta dissertação.

À minha família, em especial aos meus pais, Josélia e Glimar, que tanto se sacrificaram para que eu tivesse a melhor educação possível.

Ao Professor Me. Alexandre Ribeiro, que insistiu bastante para que eu me inscrevesse no mestrado, agradeço por todo seu apoio.

Aos Professores Doutores do Programa de Pós-Graduação do Instituto de Computação da Unicamp pela inestimável contribuição à minha formação acadêmica, especialmente aos professores Fábio Usberti, Lehilton Pedrosa e Tomasz Kowaltowski.

Aos meus amigos e colegas do LOCo (Laboratório de Otimização e Combinatória), por todo o companheirismo, apoio e conhecimento compartilhado. Em especial aos irmãos de orientação, Italos Estilon, Francisco Jhonatas, Mauro Roberto e Yulle Glébbyo; e aos amigos que estiveram mais próximos durante o meu mestrado, Alan Silva, Alessandra Pereira, Alexsandro Alexandrino, Alonso Ali, Ana Paula, Celso Santos, Décio Aguiar (agre-gado), Deyvison Nogueira, Matheus Diógenes, Guilherme Miranda, Hugo Rosado, Jadder Bismarck, Vinícius Loti, Marcelo Pinheiro, Mayara Omai, Natanael Ramos, Matheus Ota, Paulo Henrique e Ulysses Rocha.

Ao meu amigo Jonlenes, por toda ajuda prestada sempre que necessária.

À Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP), processo número 2017/23343-1, pelo apoio financeiro ao projeto de pesquisa do mestrado durante o segundo ano de curso.

O presente trabalho foi realizado com apoio da Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Brasil (CAPES) - Código de Financiamento 001.

(6)

Nesta dissertação abordamos um problema de otimização combinatória motivado por serviços de aluguel de veículos conhecidos por car-sharing. O problema abordado explora a possibilidade de devoluções flexíveis nos serviços de aluguel de veículos, isto é, permitir que os clientes devolvam os veículos alugados em pátios de estacionamento diferentes daquelas em que os veículos foram retirados. Este problema pode ser descrito da seguinte maneira. Considere dois pátios, denominados por A e B, com cada pátio contendo um conjunto de veículos indistinguíveis. Dado n clientes, onde cada cliente possui exatamente duas demandas em direções opostas, uma demanda de A para B e outra de B para A, mas não necessariamente nesta ordem. Cada demanda especifica o intervalo de tempo em que o veículo será utilizado. O objetivo do problema é encontrar um escalonamento dos veículos aos clientes que maximiza o número de clientes satisfeitos. Um cliente está satisfeito se e somente se ambas as suas demandas são atendidas. Em um primeiro momento, apresentamos uma formulação de programação linear inteira mista para o problema, bem como a adição de desigualdades válidas à formulação. Em seguida, descrevemos os algoritmos heurísticos para o problema, os quais consistem nas meta-heurísticas GRASP, VNS, Busca Tabu e BRKGA. Em nossos experimentos computacionais, a formulação sem e com a adição de desigualdades válidas obteve em média menos de 1% de gap de otimali-dade entre o valor do limitante inferior e o valor do limitante superior – resultados obtidos sobre as instâncias com até 1000 clientes e pelo menos 10 veículos disponíveis em cada pátio, com tempo de execução limitado em 20 minutos por instância. Por outro lado, o problema abordado mostrou-se ser de difícil resolução por meio dos algoritmos heu-rísticos propostos. Em nossos experimentos computacionais, para as instâncias de 1000 clientes e 10 veículos disponíveis em cada pátio, os algoritmos heurísticos não conseguiram obter uma solução ótima, onde obtiveram em média 10% de gap de otimalidade entre o valor da solução incumbente e o valor da solução ótima obtida por meio do resolvedor de programação inteira mista utilizado.

(7)

In this dissertation, we address a combinatorial optimization problem motivated by car rental services, such as car-sharing. The problem explores the flexible drop-off possibility, in other words, allows the customers to begin and end their trip at different locations. This problem can be described as follows. Consider two locations, denoted by A and B, with an initial distribution of indistinguishable vehicles. Given n customers, where each customer has exactly two demands in opposite directions, a demand from A to B and another from B to A, not necessarily in this order. Each driving demand specifies the time interval in which the vehicle will be used. The goal consists of scheduling a set of vehicles to maximize the number of satisfied customers. A customer is satisfied if and only if both of your demands are fulfilled. First, we propose a mixed integer linear programming formulation for the problem, and the addition of valid inequalities to the formulation. Furthermore, we describe heuristic algorithms based on the metaheuristics GRASP, VNS, Tabu Search and BRKGA. In our computational experiments, the formulation with and without the addition of valid inequalities obtained, on average, less than 1% optimality gap between lower bound and upper bound – results over problem instances with up to 1000 customers and at least 10 vehicles available in each location, with execution time limited to 20 minutes per instance. On the other hand, the problem addressed has proved to be difficult to solve by heuristic algorithms. In our computational experiments, for the instances of 1000 customers and 10 vehicles available in each location, the heuristic algorithms failed to obtain an optimal solution, and obtained on average 10% of optimality gap between incumbent solution and optimal solution.

(8)

1.1 Exemplo de um 2-intervalos. . . 13

2.1 Exemplo de grafo simples e multigrafo. . . 16

2.2 Exemplo de uma rede e um fluxo máximo. . . 18

2.3 Fluxograma do funcionamento da meta-heurística GRASP. . . 23

2.4 Exemplo de iterações entre estruturas de vizinhança da VNS. . . 25

2.5 Representação da geração de uma nova população no BRKGA. . . 27

3.1 Exemplo de uma instância do problema. . . 29

3.2 Exemplo do RTSP2 modelado como um multigrafo direcionado acíclico. . 31

3.3 Exemplo de preferência entre pares de clientes. . . 33

3.4 Aplicação da transformação de contração de vértices adjacentes. . . 34

3.5 Aplicação da transformação de agrupamento de arcos adjacentes. . . 35

3.6 Exemplo em que todos os clientes devem ser satisfeitos simultaneamente. . 36

4.1 Posicionamento dos gadgets. . . 37

4.2 Configuração exata das demandas dentro de cada gadget. . . 39

5.1 Configurações para os vetores de deslocamentos incrementais. . . 41

5.2 Exemplo de intervalos em uma árvore de segmentos de 7 elementos. . . 43

5.3 Representação da árvore de segmentos como um vetor de intervalos. . . 43

5.4 Exemplo de uma árvore de segmentos para a soma de prefixo mínima. . . . 44

5.5 Exemplo de árvore de segmento para a soma de prefixo mínima. . . 45

5.6 Estimativa do benefício de inserção sobre uma rede com custo nos arcos. . 51

6.1 Gráfico de desempenho para as instâncias st- de 750 clientes. . . 59

6.2 Gráfico de desempenho para as instâncias st- de 1000 clientes. . . 60

6.3 Gráfico de convergência para a 16ª instância st- de 1000 clientes. . . 61

6.4 Gráfico de convergência para 1ª instância st- de 1000 clientes. . . 62

6.5 Gráfico de desempenho com o pré-processamento proposto. . . 63

(9)

6.1 Resultados do ajuste de parâmetros com o pacote irace. . . 58 6.2 Resultados para as instâncias do grupo ft- de 1000 clientes. . . 60 6.3 Gap de otimalidade médio para a formulação sem desigualdades válidas. . 62 6.4 Gap de otimalidade médio para a formulação com desigualdades válidas. . 62 6.5 Desempenho do resolvedor para a variação do número de recursos. . . 63 6.6 Comparação do número médio de iterações para execuções de 20 minutos. . 64 6.7 Resultados obtidos com as execuções do GRASP. . . 65 6.8 Resultados obtidos com as execuções da VNS. . . 66 6.9 Resultados obtidos com as execuções da Busca Tabu. . . 66 6.10 Número de clientes satisfeitos com os algoritmos heurísticos propostos. . . 67

(10)

1 Introdução 11 1.1 Caracterização do Problema . . . 12 1.2 Trabalhos Relacionados . . . 13 1.3 Organização do Texto . . . 15 2 Preliminares 16 2.1 Grafos . . . 16 2.2 Complexidade Computacional . . . 18 2.3 Heurísticas e Meta-heurísticas . . . 21 3 Entendendo o Problema 29 3.1 Descrição Formal do Problema . . . 30

3.2 Modelagem em Grafos . . . 30

3.3 Formulação . . . 31

3.3.1 Desigualdades Válidas . . . 32

3.4 Pré-processamento . . . 33

3.5 Não Monotonicidade Decrescente do Problema . . . 36

4 Inaproximabilidade 37 5 Heurísticas 41 5.1 Representação e Avaliação de uma Solução . . . 41

5.1.1 Árvore de Segmentos . . . 42

5.2 Heurística de Busca Local . . . 46

5.3 GRASP . . . 49 5.4 VNS . . . 51 5.5 Busca Tabu . . . 53 5.6 BRKGA . . . 54 6 Experimentos Computacionais 56 6.1 Instâncias . . . 56 6.2 Parametrização . . . 57 6.3 Resultados . . . 59 7 Considerações Finais 68 Referências Bibliográficas 70

(11)

Capítulo 1

Introdução

Nesta dissertação consideramos um problema de otimização combinatória motivado por serviços de compartilhamento de veículos do tipocar-sharing. O car-sharing é um modelo de aluguel de veículos presente em mais de 1000 cidades pelo mundo, distribuídas em mais de 30 países [42]. Este modelo de aluguel é considerado uma alternativa à locação convencional de veículos ao permitir que os clientes aluguem veículos para atenderem às suas necessidades de locomoção dentro de curtos períodos de tempo [38], ou seja, utilizar o veículo apenas pelo tempo necessário e depois devolvê-lo. Geralmente, nos sistemas de car-sharing existem vários pátios de estacionamento espalhados em áreas centrais das cidades, de forma semelhante às estações de bicicletas públicas ou compartilhadas, onde os clientes podem retirar e devolver o veículo no pátio que achar mais conveniente.

Para as cidades, o car-sharing apresenta como principal benefício a diminuição do número total de veículos em circulação, o que ajuda a reduzir o fluxo de trânsito e a ocupação do espaço público. Por exemplo, em Bremen, cidade do norte da Alemanha, adotou-se o compartilhamento de veículos como uma forma extremamente eficiente de tratar a falta de espaço nas ruas, devido à carência de recursos financeiro para construir garagens subterrâneas [26, 44]. A maioria dos serviços de car-sharing existentes contri-buem para a redução do impacto ambiental através de veículos mais novos, com níveis mais baixos de emissões de gases de efeito estufa, o que promove a mobilidade sustentável em grandes centros urbanos [8].

Em particular à mobilidade sustentável com veículos 100% elétricos, o car-sharing en-coraja o desenvolvimento de novos projetos no Brasil, como o sistema VAMO (acrônimo para Veículos Alternativos para Mobilidade) da cidade Fortaleza, inaugurado no dia 22 de setembro de 2016 [24]. Essa iniciativa é uma das ações da Prefeitura de Fortaleza alinhadas ao Plano de Redução de Carbono dos Governos Locais pela Sustentabilidade (ICLEI) e às diretrizes da Conferência das Nações Unidas sobre Mudança Climática (COP 21). Outro projeto com veículos 100% elétricos é o Sistema de Compartilhamento Inteligente (SCI) da Itaipu Binacional e o Parque Tecnológico Itaipu (PTI), em parceria com o Centro de Excelência para a Inovação da Indústria Automóvel (Ceiia) de Portugal, inaugurado no dia 15 de dezembro de 2016 [2]. A princípio, o SCI atende apenas colaboradores que necessitam deslocar-se dentro da margem brasileira da usina, sendo que atualmente con-tam com cinco pátios de estacionamento de retirada e devolução dos veículos em diferentes edifícios internos.

(12)

No escopo deste trabalho consideramos os cenários em que todas as demandas por locomoção proporcionam a ligação entre exatamente dois pátios. Por exemplo, um pátio poderia estar em uma área residencial e outro pátio poderia estar próximo a um shop-ping center. No contexto do SCI da Itaipu Binacional e o PTI, poderíamos considerar como sendo esses dois pátios o pátio presente na Barreira de Controle e o pátio presente no Edifício de Produção, dado que a maior parte das reservas por veículos ligam ambos os locais [1]. Diferente de outros problemas de otimização combinatória motivados por serviços de compartilhamento de veículos que, em sua maioria, visam maximizar o lucro total obtido, o problema que abordamos visa a satisfação do cliente.

Outras aplicações que fornecem motivação para este trabalho podem incluir, por exemplo, os serviços compartilhamento de bicicletas (bike-sharing), despacho de táxis, aluguel de barcos para travessias de rios, etc.

1.1

Caracterização do Problema

O problema estudado foi proposto em 2016 por Böhmová et al. [16] e explora o conceito de devolução flexível, ou seja, a possibilidade de a devolução do veículo ser em um pátio dife-rente daquela onde o veículo foi retirado. A trajetória e o uso do veículo durante o período de locação são irrelevantes para o problema e, portanto, podemos abstrair o aluguel como sendo a transferência de um veículo de um pátio para outro pátio no intervalo de tempo definido sobre a demanda atendida. Informalmente, este problema pode ser descrito da seguinte maneira.

Considere dois pátios, denominados por A e B, com um conjunto limitado de veículos indistinguíveis. Dado um conjunto de n clientes, onde cada cliente possui exatamente duas demandas em direções opostas, uma demanda de A para B e outra de B para A, mas não necessariamente nesta ordem. Cada demanda especifica o intervalo de tempo em que o veículo será utilizado. O objetivo do problema é encontrar um escalonamento dos veículos aos clientes que maximiza o número de clientes satisfeitos, respeitando-se a quantidade de veículos disponível a cada instante de tempo. Um cliente é dito satisfeito se e somente se ambas as suas demandas são atendidas – os clientes não têm interesse em alugueis parciais de veículos.

Convém ressaltar que cada cliente pode utilizar veículos diferentes em cada demanda atendida, uma vez que, quando o veículo é devolvido em algum pátio, ele se torna disponível para que qualquer outro cliente possa utilizá-lo. O veículo utilizado também é irrelevante para o problema, dado que os veículos são indistinguíveis.

Böhmová et al. [16] demonstraram que este problema é APX-difícil para um caso parti-cular em que existe apenas um único veículo disponível e todos os tempos de transferência do veículo de um pátio para outro são iguais e positivos. Além disso, em seu artigo os autores também demonstraram que se o tempo de transferência de cada demanda é igual a zero (transferência instantânea), então o problema pode ser resolvido em tempo polinomial – a prova é feita a partir de uma formulação de programação linear que tem sempre a solução ótima inteira. Em tal caso, para esta formulação de programação linear, os autores demonstraram que a matriz de restrições é totalmente unimodular [43].

(13)

Outro resultado, não menos importante, é que se cada cliente possui exatamente uma demanda, então o problema pode ser resolvido em tempo polinomial a partir de uma redução para o problema do fluxo máximo de custo mínimo – isto é, encontrar um fluxo máximo em uma rede de forma a minimizar o custo total, dado pela soma de custos para cada unidade de fluxo atribuída em cada arco.

Apresentamos na seção a seguir uma breve revisão da literatura para os problemas relacionados ao problema que estudamos, e também apresentamos alguns dos trabalhos disponíveis na literatura que abordam diferentes questões que surgem em serviços de compartilhamento de veículos.

1.2

Trabalhos Relacionados

O problema estudado nesta dissertação, em um caso mais simples, com um único pátio e apenas um veículo disponível, reside na área de escalonamento de intervalos. Neste contexto, nosso problema se relaciona com os resultados obtidos em intervalos split ou simplesmente t-intervalo – isto é, no máximo t segmentos semiabertos da reta real sem interseção. Portanto, para esse problema de escalonamento de intervalos, cada tarefa está associada a um t-intervalo, para algum t maior ou igual a 1. Para melhor compreensão, a Figura 1.1 ilustra um cenário particular para t igual a 2, em que cada tarefa possui exatamente 2 intervalos. Neste exemplo existem quatro tarefas, onde cada tarefa pode corresponder às demandas de um cliente para o nosso problema estudado.

a1 a2

b1 b2

c1 c2

d1 d2

2 3 4 5 6 7 8 9 10

Figura 1.1: Exemplo de um 2-intervalos.

O objetivo desse problema é escalonar em uma única máquina um subconjunto de tarefas não conflitantes, tal que esse subconjunto seja máximo. Dizemos neste contexto que duas tarefas são conflitantes se algum de seus segmentos se intersectam. Em Bar-Yehuda et al. [9] é demonstrado que esse problema é APX-difícil, mesmo quando t é igual a 2, e também apresentam uma de 2t-aproximação.

O problema que mais se assemelha a configuração do problema proposto por Böhmová et al. [16] é estudado primeiramente por Luo et al. [34]. Trata-se de uma variante on-line em que o sistema precisa decidir se aceita ou não uma demanda imediatamente no momento em que é apresentada. Nesta variante existe apenas um único veículo disponível e cada cliente apresenta apenas uma demanda. Também é permitido transferências vazias que possibilitam que o veículo seja transferido de um pátio para outro sem atender a demanda de um cliente, gerando custos que são incorridos no objetivo – que consiste em maximizar o lucro total obtido com as demandas atendidas.

(14)

Os autores estudaram o cenário em que o tempo entre a solicitação e o início da demanda é fixo, independente da solicitação, e o cenário em que o instante de tempo da solicitação deve estar em um determinado intervalo de tempo, chamado de horizonte de reserva, antes do início da demanda. Em relação aos resultados, os autores propuseram um algoritmo guloso e, para esse algoritmo, demonstraram limitantes inferiores para ambos os cenários. Demonstraram também limitantes superiores, concluindo que o algoritmo proposto alcança a melhor relação de competitividade possível [13].

Luo et al. [35] consideram a variante do problema para a configuração com dois veí-culos, inicialmente disponíveis em um mesmo pátio, para o cenário em que o tempo entre a solicitação e o início da demanda é fixo. Os autores propuseram um outro algoritmo guloso e demonstram os limitantes inferior e superior para quando o custo gerado por uma transferência vazia é menor que lucro obtido com uma demanda atendida, e para quando o custo é maior ou igual ao lucro.

Recentemente Luo et al. [36] consideram a variante do problema com k veículos. Os au-tores consideram novamente dois cenários do problema, sendo aquele em que o tempo entre a solicitação e o início da demanda é fixo, independente da solicitação, e o que o instante de tempo da solicitação deve estar em um determinado intervalo de tempo. Semelhante aos dois trabalhos anteriores, é demonstrado que o algoritmo guloso proposto apresenta a melhor relação de competitividade possível para ambos os cenários.

O problema que está mais próximo da configuração do problema estudado por Luo et al. [34, 35, 36] é o problema dial-a-ride em sua versão on-line [23]. Neste problema, requisições de transporte chegam ao longo do tempo, enquanto o veículo está em rota transportando outros clientes. Em sua versão mais simples, existe apenas um único veí-culo que pode transportar no máximo um cliente por vez. Os resultados conhecidos para o on-line dial-a-ride incluem algoritmos para minimizar o tempo total de operação de qualquer um dos veículos, também chamado de makespan [5, 11], ou minimizar o tempo máximo de espera dos clientes [32], tendo que atender a todas as requisições e retornar os veículos ao depósito de origem.

É possível encontrar um grande número de artigos na literatura que investigam os problemas que surgem em serviços de compartilhamento de veículos. Recentemente uma análise ampla e estruturada foi realizada por Ferrero et al. [22], em que 137 artigos foram classificados, cobrindo os últimos cinco anos em pesquisa. Este estudo teve como objetivo principal introduzir uma taxonomia e analisar os diferentes aspectos do compartilhamento de veículos, incluindo os diferentes tipos de serviços e as questões de pesquisa conside-radas nos artigos. De acordo com a taxonomia introduzida, o problema que estudamos se enquadra no modelo de negócio conhecido por one-way, que permite o cliente retirar o veículo em um pátio e devolvê-lo em outro pátio. Nesse modelo, a maioria dos artigos se concentram em estratégias de realocação para equilibrar o número de veículos entre os pátios e em planejar a melhor localização para os pátios. Dentre os trabalhos relacionados ao modelo de negócio one-way, destacamos os seguintes.

Considerando um sistema de apoio à tomada de decisão para a realocação de veículos elétricos, Boyacı et al. [14] desenvolveram e implementaram um modelo de programação linear inteira mista biobjetivo, que busca maximizar a receita líquida e maximizar o benefício líquido dos clientes. A receita líquida é calculada como a diferença entre a soma

(15)

da receita total de locação e subsídios menos custos com os pátios, veículos e realocações; e o benefício líquido dos clientes é calculado como a diferença do ganho em termos do valor monetário menos a soma dos custos de locação e acessibilidade de veículos. Posteri-ormente, Boyacı et al. [15] desenvolveram um algoritmo de agrupamento (clustering) para diminuir a complexidade computacional do modelo de programação linear inteira mista que busca otimizar as decisões operacionais de realocação de veículos.

Em relação à localização dos pátios, Correia e Antunes [20] desenvolveram e implemen-taram um modelo de programação inteira mista. O modelo objetiva maximizar o lucro total obtido, considerando-se todos os custos envolvidos, abordando até três esquemas de seleção de viagem que permitem evitar operações desnecessárias de realocação de veícu-los. Este estudo fornece uma visão do impacto da localização dos pátios e dos esquemas de seleção de viagens na rentabilidade de tais sistemas.

1.3

Organização do Texto

O restante desta dissertação está organizado como segue. No Capítulo 2 é apresentado os conceitos básicos de teoria dos grafos, teoria de complexidade computacional, heurísticas e meta-heurísticas. Descrevemos a descrição formal para o problema e a sua formulação de programação linear inteira mista no Capítulo 3. Adicionalmente, também descrevemos no capítulo como uma instância arbitrária do problema pode ser modelada como um multigrafo direcionado acíclico e o seu pré-processamento, que busca reduzir o número de vértices e arcos do multigrafo. O Capítulo 4 traz o resultado de inaproximabilidade existente na literatura para o problema; e o Capítulo 5 aborda os algoritmos heurísticos propostos neste trabalho para a resolução do problema, juntamente com as considerações mais relevantes acerca de sua implementação. No Capítulo 6 encontram-se os resultados computacionais e, por fim, algumas considerações finais são apresentadas no Capítulo 7.

(16)

Capítulo 2

Preliminares

Este segundo capítulo tem como propósito familiarizar o leitor com os principais conceitos encontrados ao longo desta dissertação.

2.1

Grafos

Os conceitos a serem apresentados aqui são básicos e podem ser encontrados em livros introdutórios sobre teoria dos grafos. Por exemplo, um tratamento completo pode ser encontrado nos livros de Bondy e Murty [12], Bang-Jensen e Gutin [7] e Ahuja [4]. Formal-mente, um grafo pode ser definido do seguinte modo.

Definição. Um grafo G é uma tripla ordenada (VG, EG, ψG) em que VG é um

con-junto finito e não vazio de elementos denominados vértices, EG é um conjunto finito

de elementos denominados arestas e ψG é uma função de incidência que associa cada

aresta de EG a um par não ordenado de vértices de VG, não necessariamente distintos.

Com o propósito de simplificar a notação utilizada, caso não haja ambiguidade, denota-remos os conjuntos de vértices e arestas, e a função de incidência de um grafo G simples-mente por V, E e ψ; ou seja, sem o uso do subscrito. Caso também não haja ambiguidade, omitiremos a função de incidência de um grafo, escrevendo somente G = (V, E). Deste modo, se e é uma aresta em E tal que ψ(e) = {u, v}, então e será denotada por e = {u, v}. Dada uma aresta e = {u, v} de um grafo G, diz-se que e incide em u e em v, ou que os vértices u e v são pontas de e. Neste caso, dizemos que u e v são vértices adjacentes e, de forma análoga, duas arestas distintas são arestas adjacentes se inci-dem no mesmo vértice. Quando duas ou mais arestas encontram-se associadas a um mesmo par de pontas distintas, então dizemos que essas arestas são arestas múltiplas (veja a Figura 2.1b). Quando um grafo G admite arestas múltiplas, estão dizemos que G é um multigrafo.

v1

v2

v3

v4

(a) Grafo Simples.

v1

v2

v3

v4

(b) Multigrafo.

(17)

A notação e terminologia definidas para grafos (isto é, para grafos simples, multi-grafos, etc.) se estendem aos grafos direcionados com as devidas adaptações, conforme apresentado a seguir.

Definição. Um grafo direcionado G é um grafo cuja função de incidência ψ asso-cia cada elemento de E a um par ordenado de vértices, não necessariamente distintos, de V. Neste contexto, os elementos de E são denominados arcos.

Para cada arco e = (u, v) em E é considerado a direção de u para v e, diante disso, diz-se que o arco e sai de u e entra em v. Os vértices u e v são chamados respectivamente de ponta inicial e ponta final de e. Neste caso, diz-se que u é adjacente a v. A relação de adjacência não é necessariamente simétrica, portanto u pode ser adjacente a v sem que v seja adjacente a u. Dizemos também que dois arcos distintos são arcos adjacentes se a pon-tal final do primeiro arco é igual à ponta inicial do segundo arco. Para grafos direcionados, arcos múltiplos são arcos que possuem pontas iguais e a mesma direção.

Dado um grafo direcionado G = (V, E, ψ), definimos como leque de saída de um vértice v em V, dado por δ+

(v) = {e ∈ E : ψ(e) = (v, u)}, que é o conjunto de todos os arcos que saem do vértice v. De forma inversa, definimos como leque de entrada, dado por δ−

(v) = {e ∈ E : ψ(e) = (u, v)}, que é o conjunto de todos os arcos que entram no vértice v. Disto, segue que o grau de saída, dado por d+

(v) = |δ+

(v)|, é o número de arcos que saem de v. De forma análoga, o grau de entrada, dado por d−

(v) = |δ−

(v)|, é o número de arcos que entram em v.

Em nosso trabalho, estamos interessados em uma situação em que veículos possam transitar de um vértice para outro. Portanto, é conveniente para nós formalizarmos a definição de rede.

Definição. Uma rede é um grafo direcionado acíclico G com dois vértices específicos s e t, chamados respectivamente de fonte e sorvedouro da rede, de modo que cada vértice de G encontra-se em algum caminho a partir de s para t, juntamente com uma função c de E em Z+, chamada de capacidade do arco.

Em termos um tanto vagos, um grafo direcionado acíclico é um grafo direcionado G que para qualquer vértice v de G não existe nenhuma sequência dirigida v0, e1, v1, e2,. . . , ek, vk,

tal que vi ∈ V e ei ∈ E, para i igual a 1, . . . , k, onde v0 e vk são iguais a v, ou seja,

come-çando e terminando em v, e que para cada arco ei nesta sequência temos ei = (vi−1, vi).

A propriedade que distingue um grafo direcionado acíclico G é que existe uma ordena-ção topológica (ordem linear) de seus vértices, em que cada vértice v de G vem antes de todos os vértices para os quais v tenha arco de saída. Em outras palavras, os vértices podem ser ordenados em uma linha de modo que todos os arcos estabeleçam uma ordem de precedências entre os vértices.

Dada uma rede G, a capacidade representa a quantidade máxima de fluxo que pode ser atribuído a um arco. Um fluxo em G é uma função f de E em Z+ que satisfaz as

seguintes propriedades.

i. Restrição de capacidade: 0 ≤ f(e) ≤ c(e), para todo e em E. Ou seja, o fluxo que é atribuído em cada arco e de G não pode exceder a capacidade do arco.

(18)

ii. Conservação de fluxo: A quantidade de fluxo que entra em cada vértice v de G é a mesma que sai, com exceção dos vértices s e t. Isto é,

X

e ∈ δ−(v)

f (e) = X

e ∈ δ+(v)

f (e), para todo v em V \{s, t}.

O fluxo máximo em uma rede é definido como uma atribuição factível de fluxo aos arcos da rede que satisfaz as restrições de capacidade e conservação de fluxo, de modo a permitir enviar a quantidade máxima possível de fluxo do vértice fonte para o vértice sorvedouro, isto é, maximizar o somatório de f(e), para todo e em δ+

(s).

A Figura 2.2 ilustra uma rede, onde cada arco possui uma capacidade associada. Neste exemplo a atribuição de fluxo para os arcos da rede que satisfaz as restrições descritas acima é igual à capacidade do arco, com exceção do arco formado por v3 e t, que deve ter

fluxo igual a zero. Esta atribuição corresponde ao fluxo máximo do vértice fonte s para vértice sorvedouro t. s v1 v2 v3 t 18 1 1 2 1 20 1

Figura 2.2: Exemplo de uma rede e um fluxo máximo.

2.2

Complexidade Computacional

Nesta seção fazemos uma breve introdução à teoria de complexidade computacional. Em particular, nos interessa aqui os problemas de otimização combinatória e, por questões de simplicidade, nesta seção é descrito somente os conceitos essenciais ao longo desta dissertação. Para um tratamento completo do assunto, sugerimos que o leitor consulte os livros de Aho, Hoproft e Ullman [3], Garey e Johnson [25], Cormen et al. [18], Knuth [30] e Papadimitriou e Steiglitz [40]. Formalmente, um problema de otimização pode ser definido do seguinte modo.

Definição. Um problema de otimização Π consiste em um conjunto de instâncias do problema. A cada instância I está associado um conjunto SolΠ(I) de soluções viáveis

e uma função valΠ que, para cada S em SolΠ(I), atribui um valor racional valΠ(S) que

se deseja minimizar ou maximizar.

Quando o conjunto de soluções viáveis SolΠ(I) é discreto, ou seja, pode assumir um

número finito ou infinito contável de valores, para qualquer instância I de Π, diz-se que é um problema de otimização combinatória.

Para simplificar a notação, omitimos o subscrito do problema para o conjunto de soluções viáveis e para a função de avaliação, escrevendo somente Sol(I) e val(S), quando o problema está claro pelo contexto e caso não haja ambiguidade.

(19)

Em um problema de otimização Π, para uma dada instância I, queremos encontrar uma solução S∗ em Sol(I) tal que val(S) seja mínimo, caso Π seja de um problema

de minimização, ou máximo, caso Π seja um problema de maximização. Neste contexto, tal solução S∗ em Sol(I) é chamada de solução ótima e o valor val(S) é chamado de

valor ótimo. Denotaremos por opt(I) o valor ótimo val(S∗) para uma instância I de um problema de otimização Π.

Considere a título de exemplo para problemas de otimização combinatória o pro-blema da satisfatibilidade máxima, abreviado por Max-SAT (do inglês maximum satisfiability problem). Para definir este problema, precisamos introduzir a sua termino-logia e notação, as quais posteriormente também serão fundamentais para o desenvolvi-mento da prova de inaproximabilidade para o problema considerado nesta dissertação, apresentada no Capítulo 4 .

Suponha um conjunto X = {x1,. . . , xs} de variáveis booleanas. Em particular, na

álgebra booleana, uma variável booleana é uma variável que pode assumir um dentre dois valores possíveis, os quais podem ser “verdadeiro” ou “falso”. Comumente chama-se de literal positivo a variável booleana xi, e chama-se de literal negativo a sua negação xi,

para algum xi em X. Suponha também uma coleção C = {c1,. . . ,cr}de cláusulas definidas

sobre as variáveis booleanas. Mais precisamente, uma cláusula é uma disjunção (operador lógico ou) de literais sobre X.

Dizemos que uma cláusula é satisfeita por uma valoração se pelo menos um de seus literais está com valor verdadeiro, caso seja um literal positivo, ou valor falso, caso seja um literal negativo. Denotaremos por φ uma atribuição valores verdadeiro ou falso às variáveis booleanas de X. Para qualquer atribuição φ, o valor val(φ) corresponde ao número de cláusulas satisfeitas. Dito isso, a descrição formal para o Max-SAT é dada da seguinte maneira.

Problema. Seja Φ uma instância do Max-SAT dada por uma coleção C = {c1,. . . , cr}

de cláusulas definidas sobre um conjunto X = {x1,. . . , xs} de variáveis booleanas. O

obje-tivo é encontrar uma atribuição φ para as variáveis booleanas de X, tal que o número de cláusulas satisfeitas seja máximo.

A teoria da complexidade computacional estuda e classifica um problema computa-cional de acordo com seu custo de resolução por meio de algoritmos. Neste contexto, a pergunta principal concerne à existência de algoritmos eficientes que podem resolver esses problemas. Por um algoritmo eficiente, entendemos como sendo um algoritmo de tempo polinomial. Informalmente, um algoritmo de tempo polinomial é um algoritmo que executa um número de passos (operações elementares) limitado superiormente por um polinômio no tamanho da instância do problema.

Correspondente à análise de pior caso de um algoritmo, a complexidade de tempo é comumente expressada usando a notação O que suprime fatores constantes e outros termos de ordem menor. Quando expressada dessa forma, a complexidade de tempo é dita ser descrita assintoticamente. Formalmente, um algoritmo de tempo polinomial, ou simples-mente algoritmo polinomial, é aquele cuja função de complexidade de tempo é O(p(n)) para alguma função polinomial p, onde n é o tamanho da instância. Por certo, dadas

(20)

duas funções não-negativas f e g, dizemos que f(n) é O(g(n)), se e somente se existem constantes positivas c e n0 tal que f(n) ≤ cg(n) para todo n ≥ n0.

Resultados dentro da teoria de complexidade computacional culminaram a caracteriza-ção de classes de problemas computacionais. Como uma consequência desta classificacaracteriza-ção, provou-se que muitos problemas de otimização combinatória não admitem algoritmos eficientes a menos que a conjectura conhecida como P = NP seja falsa. As classes P e NP são compostas de problemas de decisão, ou seja, problemas cuja resposta é do tipo “sim” ou “não” à determinada questão para o problema. Por exemplo, para o Max-SAT, a sua versão de decisão é “dada uma instância Φ e um inteiro positivo k, é possível encontrar uma atribuição para Φ que satisfaz pelo menos k cláusulas?”.

A classe de problemas NP, abreviação de nondeterministic polynomial time, é composta por problemas de decisão para os quais existem certificados, geralmente a própria solução do problema, para a resposta sim e que podem ser verificados em tempo polinomial. Cabe salientar que apenas tal verificação é realizada em um número de passos polinomial e não a resolução propriamente dita do problema. Por outro lado, a classe de problemas P é a classe dos problemas de decisão que podem ser resolvidos por algum algoritmo polinomial. Note que a própria execução do algoritmo polinomial de cada problema da classe P pode ser o certificado para a resposta sim, portanto P é subconjunto de NP.

A classe NP contém problemas completos, ou seja, problemas que são tão difíceis quanto qualquer outro problema na classe. Isso implica que, havendo um algoritmo de tempo polinomial para a resolução de um problema completo, este algoritmo pode ser então adaptado a todos os outros problemas da classe. Para tal fim, estabelecem-se métodos chamados de reduções polinomiais que transformam um problema em outro problema. Dados dois problemas de decisão Π e Π0, se existe um algoritmo polinomial

f que para toda instância I de Π, obtém uma instância I0 de Π0, tal que I tem resposta sim se e somente se I0 tem resposta sim, então diz-se que Π pode ser reduzido a Π0.

Basicamente, um problema Π é dito ser NP-completo se todo problema de NP pode ser reduzido a Π em tempo polinomial. O problema de satisfatibilidade booleana, do inglês boolean satisfiability problem, abreviado por SAT, foi o primeiro problema provado como pertencente à classe de complexidade NP-completo [17]. O conceito de completude pode ser estendido para os problemas de otimização combinatória. Um problema Π é dito ser NP-difícil se a existência de um algoritmo de tempo polinomial para Π implica em P = NP. Por exemplo, o Max-SAT é NP-difícil, já que um algoritmo polinomial para resolvê-lo pode ser adaptado para resolver o problema de satisfatibilidade booleana em tempo polinomial. Como o SAT é NP-completo, a existência de um tal algoritmo implica em P = NP.

A classe de problemas NPO é a extensão de NP a problemas de otimização combina-tória. De forma análoga à classe P, a classe de problemas PO é composta de problemas em NPO para os quais existe algum algoritmo exato polinomial; ou seja, um algoritmo para um problema Π, que para qualquer instância I de Π, é garantido que o algoritmo sempre devolve uma solução ótima em tempo polinomial no tamanho da entrada. Outra classe bem conhecida de problemas em NPO é a classe APX, que é composta de problemas de otimização combinatória que permitem algoritmos de aproximação de tempo polinomial de fator constante. Um algoritmo de aproximação de tempo polinomial, ou simplesmente

(21)

algoritmos de aproximação, pode ser definido do seguinte modo.

Definição. Um algoritmo de aproximação para um problema de otimização combina-tória Π é um algoritmo de tempo polinomial que sempre encontra uma solução viável S de I para algum fator constante α de aproximação, tal que val(S) ≤ αopt(I), para α > 1, se Π é um problema de minimização, ou val(S) ≥ αopt(I), para α < 1, se Π é um problema de maximização.

Em particular à classe APX, nos interessa aqui uma redução que preserva a aproxi-mabilidade. Portanto, definimos a seguir a chamada L-redução (redução linear) entre problemas de otimização.

Definição (Papadimitriou e Yannakakis [41]). Sejam Π e Π0 problemas de otimização

combinatória. Uma L-redução de Π para Π0 é uma quadrupla (f , g, α, β) em que f e g são algoritmos polinomiais e α e β são constantes positivas satisfazem todas as seguintes condições.

i. Para toda instância I de Π, o algoritmo f produz uma instância I0 de Π0 tal que

optΠ0(I0) ≤ αoptΠ(I).

ii. Para toda solução viável S0 de I0, o algoritmo g produz uma solução viável S de I,

tal que |optΠ(I) − valΠ(S)| ≤ β|optΠ0(I0) − valΠ0(S0)|.

Um problema Π, não necessariamente em APX, é dito ser APX-difícil se a existência de um esquema de aproximação polinomial para Π implica em P = NP. Para simplificar, um esquema de aproximação polinomial, denotado pela sigla PTAS, do inglês polynomial-time approximation scheme, é uma família de algoritmos de aproximação parametrizados por ε, onde ε é um número racional positivo, tal que para qualquer instância I de um problema de otimização Π sempre devolve uma solução viável com um erro relativo de no máximo ε. Ou seja, uma solução viável cujo seu valor está dentro de um fator 1+ε para problemas de minimização ou de 1−ε para problemas de maximização, para todo ε fixo.

Portanto, para mostrar que um problema de otimização não admite um PTAS assu-mindo P 6= NP, é suficiente existir uma L-redução de um problema APX-difícil para o problema desejado. Em suma, dados dois problemas de otimização Π e Π0 tal que Π pode

ser L-reduzido a Π0, se Π é APX-difícil, então Π0 também é APX-difícil.

2.3

Heurísticas e Meta-heurísticas

Em resposta à dificuldade computacional para se obter soluções ótimas para muitos dos problemas de otimização combinatória, foram elaborados algoritmos heurísticos que buscam tirar proveito de características e informações do próprio problema. Informal-mente, um algoritmo heurístico, ou simplesmente heurística, é um algoritmo que objetiva encontrar soluções viáveis “boas”, ou seja, com valor de avaliação próximo a de uma solu-ção ótima, mas sem oferecer um grau predeterminado de certeza quanto à qualidade das soluções encontradas em relação às soluções ótimas; e em tempo computacional inferior a um algoritmo exato.

(22)

Em muitos casos são desenvolvidas heurísticas simples de busca local, cujo propósito consiste em melhorar a qualidade da solução obtida por outra heurística. Mais precisa-mente, uma busca local é um algoritmo que explora o espaço de soluções aplicando algum movimento na solução corrente. Podemos definir um movimento como sendo uma operação elementar que transforma uma solução em outra solução. Neste contexto, um movimento pode ser a remoção ou a inserção de um elemento à solução, a troca de elementos numa permutação, etc. É essencial definirmos primeiramente o conceito de vizinhança.

Definição. Seja Π um problema de otimização combinatória. A vizinhança de uma solução S em Sol(I) de Π é uma função N de Sol(I) em 2Sol(I) alcançada por um movi-mento fixo, onde 2Sol(I) denota o conjunto de partes de Sol(I).

Em outras palavras, a vizinhança de uma solução S é o conjunto de soluções que podem ser alcançadas a partir da aplicação de algum movimento em S.

Para uma dada vizinhança N(S), uma solução S é um mínimo local se val(S) ≤ val(S0),

para todo S0 em N(S). Por outro lado, S é um máximo local se val(S) ≥ val(S0), para

todo S0 em N(S). Uma solução S é um ótimo global se corresponde ao menor valor

de avaliação entre todos os mínimos locais existentes no espaço de busca, caso seja um problema de minimização; ou se corresponde ao maior valor de avaliação entre todos os máximos locais, caso seja um problema de maximização.

Uma única estrutura de vizinhança já é suficiente para definir uma heurística de busca local simples. Diante disso, temos o Algoritmo 1 que é um pseudocódigo que descreve o funcionamento de uma busca local para um problema de minimização, que sempre seleciona a solução vizinha S0 de melhor valor de avaliação do que a solução corrente S.

Algoritmo 1: Pseudocódigo de uma busca local simples.

1 início

2 Seja S a solução dada como entrada 3 repita

4 B ← arg min{val(S0), ∀S0 ∈ N (S)}

5 Selecione uniformemente ao acaso S0 em B 6 se val(S0) < val(S)então

7 S ← S0

8 fim

9 até S ser um mínimo local 10 fim

11 retorna S

Decorrente do amplo estudo das características que mais influenciam o êxito de heu-rísticas, surgiram as meta-heurísticas. De forma geral, as meta-heurísticas são heurísticas estruturadas e genéricas, independentes de um problema específico, que guiam o desen-volvimento de outras heurísticas. As principais meta-heurísticas difundidas na literatura podem ser encontradas no livro de Glover e Kochenberger [28].

(23)

Uma meta-heurística comumente aplicada a problemas de otimização combinatória é a meta-heurística GRASP, sigla para Greedy Randomized Adaptive Search Procedure, proposta por Feo e Resende [21]. Esta meta-heurística é caracterizada por múltiplos reco-meços, onde cada iteração corresponde a um recomeço que consiste em construir uma solução de forma parcialmente gulosa e depois efetuar uma busca local para melhorar a solução obtida. A característica mais importante é que esta meta-heurística dá ênfase a fase de construção, ou seja, a construção de uma solução “boa” a fim de utilizar a busca local apenas para pequenas melhorias. A melhor solução dentre todas as iterações é guar-dada como o resultado final. Para ilustrar seu funcionamento, apresentamos a Figura 2.3 que é um fluxograma para a meta-heurística GRASP padrão.

Início Fase de Construção Busca Local Fim Critério de parada satisfeito Falso Verdadeiro

Figura 2.3: Fluxograma do funcionamento da meta-heurística GRASP.

Na fase de construção, uma solução viável para o problema é construída elemento a elemento. Cada elemento candidato a ser inserido na solução corrente é colocado em uma lista C de candidatos. A cada iteração, todos os candidatos são avaliados de acordo com alguma função adaptativa gulosa g de C em Q+, que estima o benefício de inserção de

cada um dos candidatos à solução corrente. O benefício de cada candidato é atualizado a cada iteração com base nas características da solução obtida na iteração anterior. Através de um fator α, entre 0 e 1, é criada uma lista R contendo os candidatos com melhor valor na função adaptativa gulosa. Esta lista R de melhores candidatos é chamada de lista restrita de candidatos.

O Algoritmo 2 é um pseudocódigo que descreve o funcionamento da fase de construção clássica. A cada iteração, o menor e o maior valor da estimativa do benefício de inserção obtidos com a função g são armazenados respectivamente em ∆min e ∆max e entram no

critério de formação da lista R, conforme descrito na linha 7. O valor de α influencia na qualidade e diversidade da solução obtida na fase de construção. Considerando-se problemas de minimização, temos que para α igual a 0, a fase de construção equivale a uma heurística gulosa. Por outro lado, para α igual a 1 equivale a uma heurística puramente aleatória. A atualização da lista de candidatos descrita na linha 10 depende

(24)

do problema de otimização considerado. Em geral, a atualização da lista de candidatos consiste em remover de C o candidato inserido à solução corrente.

Algoritmo 2: Pseudocódigo da fase de construção do GRASP.

1 início

2 Inicialize a lista C de candidatos com os elementos que compõem uma solução 3 S0 ← ∅

4 enquanto C possuir candidatos faça

5 ∆min ←min {g(S,c): ∀c ∈ C} B menor estimativa de benefício de inserção 6 ∆max ←max{g(S,c): ∀c ∈ C} B maior estimativa de benefício de inserção 7 R ← {c ∈ C : g(S,c) ≤ ∆min+ α(∆max− ∆min)}

8 Selecione uniformemente ao acaso c em R 9 S0 ← S0∪ {c}

10 Atualize a lista C de candidatos

11 fim

12 fim

13 retorna S0

Outra meta-heurística comumente aplicada a problemas de otimização combinatória é a meta-heurística VNS, sigla para Variable Neighborhood Search, inicialmente proposta por Mladenović e Pierre [39]. Esta meta-heurística é caracterizada por explorar o espaço de soluções através de trocas sistemáticas de estruturas de vizinhança. A VNS padrão procura aumentar a diversificação da busca, garantindo uma boa cobertura do espaço total de busca ao evitar que as soluções fiquem confinadas em uma região pequena do espaço. O Algoritmo 3 é um pseudocódigo que descreve a meta-heurística VNS padrão para problemas de minimização, onde kmax corresponde a última estrutura de vizinhança

a ser explorada.

Algoritmo 3: Pseudocódigo da meta-heurística VNS.

1 início

2 Encontre uma solução inicial S com alguma heurística de construção 3 enquanto o critério de parada não for satisfeito faça

4 k ←1

5 repita

6 Selecione uniformemente ao acaso S0 em Nk(S) 7 S00 ← BuscaLocal(S0)

8 se val(S00) < val(S) então

9 S ← S00

10 k ←1

11 senão

12 k ← k+1

13 fim

14 até k maior que kmax

15 fim

16 fim

(25)

Inicialmente, no Algoritmo 3, uma solução viável para o problema de otimização com-binatória pode ser obtida através de uma heurística gulosa. Repetitivamente, a cada nova iteração do laço principal, a partir da primeira estrutura de vizinhança, seleciona-se uma solução vizinha da solução corrente, que é então submetida a busca local. Caso a solução devolvida pela busca local for melhor que a solução corrente, então retorna-se para a primeira estrutura de vizinhança e essa solução passa a ser a solução corrente; caso o contrário, o procedimento continua utilizando-se a próxima estrutura de vizinhança. Esse processo é interrompido apenas quando a última estrutura de vizinhança é explorada e não resulta em melhoria na solução corrente. A Figura 2.4 ilustra as possíveis iterações entre as estruturas de vizinhança em uma VNS, para kmax igual a 3.

val(S00) ≥ val(S) val(S00) < val(S) S0∈ N 1(S) “shaking” N1(S) N2(S) N3(S)

Figura 2.4: Exemplo de iterações entre estruturas de vizinhança da VNS.

Neste trabalho também utilizamos a Busca Tabu, proposta por Glover [27]. Esta meta-heurística é caracterizada por explorar o espaço de soluções de modo a evitar o retorno a uma solução previamente explorada. Para tal fim, utiliza-se uma lista que recorda as soluções exploradas mais recentemente. Essa lista é chamada de lista tabu, dado que cada solução pertencente a esta lista é dita ser uma solução proibida ou tabu. O pseudocódigo a seguir descreve uma Busca Tabu simples para problemas de minimização.

Algoritmo 4: Pseudocódigo da meta-heurística Busca Tabu.

1 início

2 Encontre uma solução inicial S com alguma heurística de construção

3 S0 ← S B solução corrente

4 T ← ∅ B lista tabu

5 enquanto o critério de parada não for satisfeito faça 6 Selecione uniformemente ao acaso S00 em N(S0) 7 se S00 ∈ T/ então

8 S0 ← S00

9 AtualizaListaTabu(T , S00)

10 fim

11 se val(S00) < val(S) então

12 S ← S00

13 fim

14 fim

15 fim

(26)

A meta-heurística Busca Tabu começa seu processo de busca a partir de uma solução inicial qualquer e, a cada iteração, explora o espaço de busca selecionando-se a melhor solução vizinha da solução corrente que não seja tabu. Considerando que a estrutura de vizinhança sempre obtém uma solução vizinha melhor que a solução corrente, optamos por escolher qualquer solução vizinha da solução corrente (linha 6 do Algoritmo 4), a fim de aumentar a diversificação da busca. Portanto, se a solução encontrada não for um tabu, então esta solução passa a ser a nova solução corrente e um novo tabu. A melhor solução dentre todas as iterações é guardada como o resultado final.

Quando a lista tabu está em seu tamanho máximo e é preciso adicionar uma nova solução à lista tabu, então a solução mais antiga é removida. O tamanho da lista tabu define por quantas iterações uma solução será considerada tabu. Em muitas implementa-ções, utilizar uma lista tabu que recorda as soluções exploradas pode ser extremamente impraticável de se usar. Uma alternativa consiste em utilizar uma lista tabu que recorda o movimento reverso – um movimento que aplicado a nova solução S00 a torna igual à

solução corrente atual S0. Este movimento passa a ser considerado um movimento tabu e

qualquer solução obtida a partir deste movimento é considerada uma solução tabu. Em muitos casos, em uma implementação da Busca Tabu, adota-se também um meca-nismo de critério de aspiração, que geralmente consiste em aplicar um movimento tabu se este obter uma solução com valor de avaliação melhor que a solução incumbente, ou seja, com avaliação melhor que a melhor solução encontrada até presente momento. Outro critério de aspiração geralmente utilizado é realizar o movimento tabu mais antigo se todos os movimentos possíveis forem tabus. O critério de aspiração busca sanar o fato de que movimentos na lista tabu não são na realidade soluções já visitadas, e portanto podem conter soluções boas ainda não exploradas.

Por fim, utilizamos a meta-heurística Biased Random-Key Genetic Algorithm, conhe-cida pela sigla BRKGA, proposta por Gonçalves e Resende [29] para problemas de otimi-zação combinatória para os quais as soluções podem ser representadas como, por exemplo, vetores de permutação. Esta meta-heurística segue o mesmo princípio darwinista de ou-tros algoritmos genéticos, em que os melhores indivíduos de uma população geram novos indivíduos, que por sua vez formam uma nova população.

Uma população P no BRKGA é representada por um conjunto de vetores, onde cada vetor representa um indivíduo. Mais precisamente, cada indivíduo é representado por um cromossomo que é um vetor σ de n chaves aleatórias, onde uma chave aleatória é um número racional no intervalo [0, 1). Um algoritmo decodificador mapeia cada cromossomo a uma solução do problema de otimização combinatória considerado e devolve o seu valor de aptidão, que equivale ao valor de avaliação da solução.

Após ser obtido a aptidão de todos os indivíduos da população corrente, esta é então particionada em dois conjuntos: o conjunto de indivíduos elite, isto é, os melho-res indivíduos segundo a aptidão; e o conjunto de indivíduos não-elite, que cormelho-responde aos indivíduos remanescentes na população. Nesta meta-heurística, todos os indivíduos elite são transferidos para próxima geração da população. A próxima geração da popula-ção também é composta por indivíduos gerados a partir do cruzamento e por indivíduos mutantes gerados de forma pseudoaleatória. Diferente de outros algoritmos genéticos, o BRKGA realiza uma escolha enviesada de indivíduos elite para realizar o cruzamento

(27)

com indivíduos não-elite. A Figura 2.5 ilustra a representação a transição da população corrente para a população seguinte.

Indivíduos elite Indivíduos não­elite Indivíduos mutantes População da geração  atual População da geração  seguinte Cruzamento Copia os indivíduos elite Melhor valor de aptidão  Pior valor   de aptidão Indivíduos obtidos   por cruzamento

Figura 2.5: Representação da geração de uma nova população no BRKGA.

O pseudocódigo que descreve a meta-heurística BRKGA é apresentado no Algoritmo 5, cuja explanação encontra-se em seguida.

Algoritmo 5: Pseudocódigo da meta-heurística BRKGA.

1 início

2 Seja P a população inicial, onde P contém p indivíduos de n chaves aleatórias 3 Seja σ∗ um cromossomo de n chaves vazias

4 Seja pc igual a p − (pe+ pm)

5 enquanto o critério de parada não for satisfeito faça 6 Avalie a aptidão de cada indivíduo em P

7 Particione P nos conjuntos Pe e Pe, onde |Pe| = pe 8 Seja Pm a próxima geração de mutantes, onde |Pm| = pm 9 Seja P0 ← Pe∪ Pm a população seguinte

10 para i ← 1 até pc faça

11 Seja σc um cromossomo de n chaves vazias

12 Selecione uniformemente ao acaso σe em Pe e σe em Pe 13 para j ← 1 até n faça

14 Obtenha de forma pseudoaleatória um número a entre 0 e 1 15 se a é menor que ρe então

16 σc[j] ← σe[j] 17 senão 18 σc[j] ← σe[j] 19 fim 20 fim 21 P0 ← P0∪ {σc} 22 fim

23 Seja σ0 o cromossomo em P0 de melhor aptidão 24 se σ0 tem valor de aptidão melhor que σ∗ então

25 σ∗ ← σ0 26 fim 27 P ← P0 28 fim 29 fim 30 retorna σ∗

(28)

O algoritmo começa com uma população P de p indivíduos, em que cada indivíduo é um cromossomo de n chaves aleatórias, obtidas de forma pseudoaleatória. A partir desta população P são geradas novas populações. A cada nova geração, o conjunto de indivíduos elite contém pe indivíduos, para pe < p/2. Cada nova população contém pm indivíduos

mutantes, para pm < p/2. Os mutantes são cromossomos de n chaves aleatórias, onde cada

chave aleatória possui um novo valor obtido de forma pseudoaleatória. Os cruzamentos são realizados entre as linhas 10 e 21 do Algoritmo 5. No cruzamento, o cromossomo σc

do indivíduo prole herdada as chaves aleatórias dos cromossomos σe e σe de seus pais. A

escolha da chave aleatória também é enviesada, pois a chance de ser uma chave aleatória do indivíduo elite é maior. A probabilidade da prole herdar um gene, isto é, o valor da chave aleatória, de um indivíduo elite é dada por ρe, para ρe entre 0.5 e 1.

A cada geração, o indivíduo que apresenta o cromossomo de melhor aptidão σ0 em P0

é comparado com o indivíduo de melhor aptidão dada por σ∗ das gerações anteriores,

descrito na linha 24 do Algoritmo 5. Caso σ0 possua valor de aptidão melhor que σ,

então σ0 será o novo cromossomo que representa o indivíduo de melhor aptidão entre

todas as gerações já realizadas até o momento. O algoritmo devolve em seu término o cromossomo σ∗, mas podemos utilizar o algoritmo de decodificação para obter uma solução

(29)

Capítulo 3

Entendendo o Problema

Começamos este terceiro capítulo com um exemplo, cujo objetivo consiste em tornar compreensíveis os conceitos fundamentais sobre o problema de otimização combinatória considerado nesta dissertação. A Figura 3.1 ilustra uma possível instância para o pro-blema. Considere dois pátios, denominados por A e B. A reta horizontal superior repre-senta o horizonte de tempo em A discretizado em um conjunto de instantes de tempo e, de forma semelhante, a reta horizontal inferior representa o horizonte de tempo em B. As demandas são representadas por arcos, e os arcos de mesma cor correspondem às deman-das de um mesmo cliente. Além da cor, é atribuído a cada arco um rótulo que especifica o tipo da demanda, sendo oc a demanda de saída (outbound) e rc a demanda de retorno,

ambas para o cliente c.

a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 b6 o3 r3 o2 r2 o4 r4 o1 r1

Figura 3.1: Exemplo de uma instância do problema.

Cada demanda equivale a transferir um único veículo entre os pátios, e uma demanda só pode ser atendida se existir no mínimo um veículo disponível na localização de ori-gem. Por exemplo, considere que a demanda dada por o4 é atendida. Neste caso, no

instante de tempo a2 o número de veículos em A é decrementado em 1 e no instante de

tempo b3 o número de veículos em B é incrementado em 1. Toda transferência é realizada

dentro de um intervalo de tempo semifechado, e durante uma transferência o veículo não pode ser designado a nenhum outro cliente.

O objetivo principal deste capítulo é formalizar a descrição do problema, a mode-lagem de instâncias do problema como multigrafos direcionados acíclicos, e apresentar a formulação de programação linear inteira mista. Na penúltima seção discutimos como uma instância arbitrária do problema modelada como um multigrafo pode ser transformada em uma outra instância equivalente, mas potencialmente com um número menor de vértices e arcos. Por fim, na última seção discutimos brevemente as características estruturais do problema que dificultam encontrar soluções ótimas, principalmente no desenvolvimento de heurísticas.

(30)

3.1

Descrição Formal do Problema

A seguir, apresentamos uma descrição formal para o problema que é equivalente a de Böh-mová et al. [16]. Da mesma forma que o problema foi descrito pelos autores, também abstraímos a nossa motivação no compartilhamento de veículos e nos referimos aos veí-culos como recursos e aos pátios como localizações. O problema é definido formalmente para uma configuração com duas localizações, com cada localização contendo uma distri-buição de recursos indistinguíveis. Para definir o problema, precisamos introduzir a sua terminologia e notação.

Considere TA = (a1, . . . , amax) e TB = (b1, . . . , bmax) listas ordenadas que descrevem,

respectivamente, os instantes de tempo para as localizações A e B, tal que cada ai ∈ Q+e

cada bj ∈ Q+. Seja C = {(oc, rc) : 1 ≤ c ≤ n} um conjunto de clientes onde cada cliente é

um par ordenado de demandas tal que oc = (ai, bj) e rc= (bk, al), para ai ≤ bj ≤ bk≤ al,

ou oc = (bi, aj) e rc = (ak, bl), para bi ≤ aj ≤ ak ≤ bl, em que oc e rc correspondem

respectivamente às demandas de saída e de retorno de um mesmo cliente. Denotaremos aqui, respectivamente, por nAe nBa quantidade inicial de recursos disponíveis em A e B.

Dizemos que um subconjunto S de C é viável se, e somente se, é possível satisfazer si-multaneamente todos os clientes definidos em S. Formalmente, satisfazer sisi-multaneamente todos os clientes consiste em para todo ai em TA e para todo bj em TB, a quantidade de

recursos em A e em B devem ser maiores ou iguais a zero, atendendo todas as demandas definidas sobre S.

Dito isto, o problema de otimização combinatória considerado nesta dissertação, de-nominado como o problema do escalonamento de transferências de recursos com duas demandas por cliente, denotado aqui por RTSP2, do inglês resource transfers scheduling problem with two demands per customer, é enunciado da seguinte maneira. Problema. Seja I = (C, TA,TB, nA, nB) uma instância do RTSP2 dada por um conjunto

de clientes C com demandas definidas sobreTA eTB, para as localizaçõesA e B. O objetivo é encontrar um subconjunto viável S∗de C, tal que a cardinalidade desse subconjunto seja máxima.

3.2

Modelagem em Grafos

Descrevemos a seguir como uma instância arbitrária do RTSP2 pode ser modelada como um multigrafo direcionado acíclico. Na verdade, estamos interessados em construir uma rede capacitada. Esta construção forma a base para os nossos resultados e se faz necessária para a compreensão da formulação apresentada na próxima seção. Formalmente, uma instância arbitrária é modelada da seguinte forma.

O conjunto de vértices é formado por cada ai em TA e por cada bj em TB. A rede

contém dois vértices adicionais s e t para exercerem respectivamente o papel de fonte e sorvedouro. Os vértices em TA são denominados vértices do tipo A, e os vértices em TBsão

denominados vértices do tipo B. Cada demanda oc em C define um arco demanda e, de

forma semelhante, cada demanda rc em C também define um arco demanda. Para cada

(31)

existe um arco de conexão para cada dois vértices consecutivos do tipo B. Existem também os arcos de conexão (amax, t) e (bmax, t). Por fim, existem dois arcos fonte, representados

por (s, a1)e (s, b1).

A Figura 3.2 mostra como a figura anterior pode ser modelada em um multigrafo direcionado acíclico. Para finalizarmos a construção da rede é necessário atribuir capaci-dade aos arcos. A atribuição é realizada da seguinte maneira. Para cada arco demanda é atribuído capacidade igual a 1, ou seja, é possível utilizar no máximo um recurso por demanda. Para cada arco de conexão (indicados de forma tracejada) é atribuído capaci-dade igual a ∞. Esses arcos asseguram a continuicapaci-dade de fluxo entre os vértices de uma mesma localização, mantendo-se a ordem temporal. Por último, para cada arco fonte (in-dicados de forma pontilhada) é atribuído uma capacidade proporcional à quantidade de recursos em cada localização. Para o arco (s, a1) é atribuído capacidade igual a nAe para

o arco (s, b1)é atribuído capacidade igual a nB.

s t a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 b6 o3 r3 o2 r2 o4 r4 o1 r1

Figura 3.2: Exemplo do RTSP2 modelado como um multigrafo direcionado acíclico. Uma solução viável do problema nesta modelagem consiste em encontrar uma atribui-ção de fluxo aos arcos da rede, que satisfazem as restrições de capacidade, de conservaatribui-ção de fluxo e de satisfação do cliente, isto é, se há fluxo em algum arco demanda de um cliente, então deve haver fluxo em ambos os arcos demanda para este cliente. Esta modelagem é válida, uma vez que a quantidade de fluxo que sai da fonte deve respeitar a quantidade inicial de recursos disponíveis em cada localização e cada arco demanda permite utilizar no máximo um recurso. Além disso, a rede preserva a ordem de precedências entre as demandas.

3.3

Formulação

Considere uma instância I = (C, TA,TB, nA, nB) para o RTSP2. Seja G = (V, E, ψ) a rede

obtida a partir de I conforme descrito anteriormente. Para cada arco e de G definimos uma variável de decisão xe que indica a quantidade de fluxo que passa através de e. Na

formulação, o conjunto de variáveis de decisão é particionado conforme o domínio de cada variável. Mais precisamente, definimos as variáveis de decisão associadas aos arcos demanda como sendo variáveis binárias e definimos as variáveis de decisão associadas aos arcos de conexão e arcos fonte como sendo variáveis reais não negativas.

Por simplicidade, referenciamos os arcos demanda da rede por meio da notação já estabelecida para as demandas oc e rc de C (veja novamente a Figura 3.2). Deste modo, a

(32)

formulação em programação linear inteira mista para o RTSP2 é a seguinte. maximize n X c =1 xoc (3.1a) sob as restrições X e ∈ δ+(v) xe = X e ∈ δ−(v) xe para cada v em V \ {s, t} (3.1b) xe ≤ nA para ψ(e) = (s, a1) (3.1c) xe ≤ nB para ψ(e) = (s, b1) (3.1d)

xoc = xrc para cada c em {1, . . . , n} (3.1e)

xe ∈ {0, 1} para cada e em {o1, . . . , on, r1, . . . , rn} (3.1f)

xe ∈ R+ para cada e em E \ {o1, . . . , on, r1, . . . , rn} (3.1g)

A função objetivo (3.1a) maximiza o número de clientes satisfeitos, enquanto que as restrições em (3.1b) asseguram a conservação de fluxo, e as restrições em (3.1c) e (3.1d) garantem, respectivamente, que não se exceda a quantidade de recursos inicialmente dis-poníveis em A e B. As restrições em (3.1e) asseguram que se uma demanda de um cliente for selecionada, então ambas as demandas desse cliente são selecionadas. Por fim, as res-trições em (3.1f) e (3.1g) representam os domínios das variáveis.

Note que maximizar o número de clientes satisfeitos força que uma unidade de fluxo seja atribuída em ambos os arcos demanda para cada cliente satisfeito. Em outras palavras, temos que se ambas as variáveis xoc e xrc, que correspondem as demandas do c-ésimo

cliente, são iguais a 1, então ambas as demandas podem ser atendidas; caso contrário, nenhuma das demandas podem ser atendidas. Convém frisar que, como toda variável xoc

sempre deve ser igual a xrc, então podemos substituí-las na formulação por apenas uma

única variável de decisão xdc, para c igual a 1, . . . , n. Desta forma, é possível reduzir pela

metade o número de variáveis binárias. Com o pré-processamento descrito mais adiante no texto, na Seção 3.4, é possível reduzir o número de variáveis de decisão associadas aos arcos de conexão.

3.3.1

Desigualdades Válidas

Com o propósito de conseguir uma formulação mais restrita e que contribua para a redução do tempo computacional, propomos a adição de novas restrições lineares à Formulação 3.1. Para isso, definimos desigualdades válidas referentes à preferência entre clientes, obtidas a partir da seguinte proposição.

Proposição 1. Dado dois clientes c = ((wi, zj),(zk, wl)) e c0 =((wi0, zj0),(zk0, wl0)) em C,

sobre dois pátios quaisquerW e Z, satisfazendo wi ≤ wi0, zj0 ≤ zj, zk ≤ zk0 e wl0 ≤ wl. Em

uma solução onde c é satisfeito e c0 não, podemos modificá-la para satisfazer c0 ao invés de c.

Demonstração. Para provar a proposição, considere a Figura 3.3. Esta figura esque-matiza o posicionamento dos arcos demanda para os clientes c e c0, respectivamente,

Referências

Documentos relacionados

Sai vencedor o candidato Fernando Collor de Melo (PRN). Com a renúncia de Collor, assume o governo seu vice-presidente Itamar Franco. O mesmo realizou plebiscito para

FENDA FENDA FENDA FENDA FENDA FENDA PHILIPS PHILIPS PHILIPS FENDA TIPO R$ PARAFUSO C/ BUCHA CÓD.

Atraves da E/S e pelos resultados obtidos do ensaio de lixiviacao foi possivel converter o biossorvente dos reatores R2 e R3, de classe I (perigoso) para a classe IIA - nao

“O professor, ao fazer a intermediação, leva os alunos a pensar, espera que eles pensem, dá tempo para isso, acompanha suas explorações e resolve, quando necessário,

Nessa linha, a perspectiva teórica que se abre ao observar a dinâmica imobiliária na RMN, passa pelo entendimento também de um “agente com dupla função” que, no estudo de

The present work shows the occurrence of an intense predatory activity on adults working Meliponinae bees (Hymenoptera, Apidae), by Apiomerus pilipes (Fabricius, 1787)

Dessa forma, a principal contribuição deste trabalho é apresentar uma metodologia para elaboração de um sistema de condicionamento de sinais para leitura de corrente, por meio de

Desse modo, o presente estudo teve como objetivo elaborar um projeto de intervenção para reduzir o uso de tabaco em moradores na área de abrangência da Unidade Básica de