• Nenhum resultado encontrado

Algoritmos de solução para o problema do caixeiro viajante com passageiros e quota

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmos de solução para o problema do caixeiro viajante com passageiros e quota"

Copied!
59
0
0

Texto

(1)Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Programa de Pós-Graduação em Sistemas e Computação. Algoritmos de Solução para o Problema do Caixeiro Viajante com Passageiros e Quota. Jean Gleison de Santana Silva. Natal-RN Julho de 2017.

(2) Jean Gleison de Santana Silva. Algoritmos de Solução para o Problema do Caixeiro Viajante com Passageiros e Quota. Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Sistemas e Computação do Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte como requisito parcial para a obtenção do grau de Mestre em Sistemas e Computação.. Orientador(a) Marco Cesar Goldbarg. Universidade Federal do Rio Grande do Norte – UFRN Departamento de Informática e Matemática Aplicada – DIMAp. Natal-RN Julho de 2017.

(3) Catalogação da Publicação na Fonte. UFRN / SISBI / Biblioteca Setorial Especializada do Centro de Ciências Exatas e da Terra – CCET. Silva, Jean Gleison de Santana. Algoritmos de solução para o problema do caixeiro viajante com passageiros e quota / Jean Gleison de Santana Silva. – Natal, RN, 2017. 58f. : il. Orientador: Marco Cesar Goldbarg. Coorientador: Elizabeth Ferreira Gouvêa Goldbarg. Dissertação (mestrado) – Universidade Federal do Rio Grande do Norte. Centro de Ciências Exatas e da Terra. Departamento de Informática e Matemática Aplicada. Programa de Pós-Graduação em Sistemas e Computação. 1. Algoritmos – Dissertação. 2. Caixeiro viajante com passageiros – Dissertação. 3. Programação inteira – Dissertação. 4. Algoritmos evolucionários – Dissertação. I. Goldbarg, Marco Cesar. II. Goldbarg, Elizabeth Ferreira Gouvêa. III. Título. RN/UF/BSE-CCET. CDU 004.021(043.3).

(4) JEAN GLEISON DE SANIANA SILVA. Algoritmos de Solução para o Problema do Caixeiro Viajante conl Passageiros e Quota. Esta Dissertação foi julgada adequada para a obtenção do titulo de mestre em Sistemas e Cornputaçào e aprovada etn sua forma final pelo Programa de PósGraduaçàoem Sistemas e Cotnputaçàodo l)epartanwntode Infortnática e Matemática Aplicada da Unive sidade Federal do Rio Gr'. Dr. Marco. e do Norte.. sar are —UFRN Presiden e). - UFRN Dr. Bruno Motta de (Coordenador do Programa). Banc: Exntninndora Dra. Elizabet Fe reira Gouvea (Exa inadora). • -UFRN Dra. Silvia Maria niz Monteiro Mata (Examinadora). Dr. M' heus da Iva Menezes (Examinador). Julho, 2017. UFERSA.

(5) Aos meus pais e a todos que me deram apoio nessa longa caminhada..

(6) Agradecimentos Primeiramente a Deus, pois ele quem nós dá força pra seguir em frente nos momentos mais difíceis de nossas vidas. Aos professores D.Sc. Marco César Goldbarg e D.Sc. Elizabeth Ferreira Gouvêa Goldbarg pela grande oportunidade de aprender um pouco com eles, pelas críticas construtivas e pelo compartilhamento de ideias e saberes que contribuiu bastante para a conclusão deste trabalho e também para a minha formação. Agradeço também pelos conselhos e apoio na tomada de decisões em questões pessoais. A professora Dra Sílvia Maria Diniz Monteiro Maia pelo apoio e empenho em atender as demandas do Laboratório de Algoritmos Experimentais (LAE), tornando possível a realização desse trabalho. Agradeço também pela honra de ter aceitado o convite para compor a banca de defesa dessa dissertação e pela contribuição dada na qualificação. Ao professor Dr. Matheus da Silva Menezes pela contribuição dada na qualificação e por ter aceito o convite para compor a banca de defesa dessa dissertação. Ao colegas de pós, em especial, Zailton Calheiros, Zé Filho, Lucas Daniel, Emerson Carvalho, Romerito Campos, Ronildo Moura e Augusto Lustosa, pelo conhecimento compartilhado e momentos de descontração. Aos meu pais Edneide Bezerra de Santana e Francisco das Chagas Silva que sempre me dão força para alcançar todos os meus objetivos. A minha namorada Cláudia Bezerra Silva, por todo amor, carinho e compreensão. Ao DIMAp e seus funcionários por toda estrutura e apoio. A CAPES pelo apoio financeiro para o desenvolvimento dessa pesquisa..

(7) “Não podemos resolver problemas usando o mesmo tipo de pensamento que usamos quando os criamos.” Albert Einsten.

(8) Algoritmos de Solução para o Problema do Caixeiro Viajante com Passageiros e Quota. Autor: Jean Gleison de Santana Silva Orientador(a) : Marco Cesar Goldbarg. RESUMO O Problema do Caixeiro Viajante com Passageiros e Quota pertence à classe de Problemas do Caixeiro Viajante com Quota. Neste problema, considera-se uma vantagem econômica quando o caixeiro, viajando em um veículo privado, embarca passageiros que passam a dividir as despesas da viagem com ele. O modelo pode representar situações reais onde o motorista tem uma rota de visita de cidade predefinida, na qual a cada cidade está associado um bônus, sendo demandada a coleta de um valor mínimo desses bônus, na função objetivo da variante investigada leva-se em conta a possibilidade da redução dos custos do caixeiro embarcando pessoas em seu veículo. Um modelo matemático, seis algoritmos evolucionários, um GRASP e um heurístico são apresentados para o problema. O comportamento dos algoritmos propostos é analisado em um experimento computacional com 48 instâncias. Palavras-chave: Caixeiro Viajante com Passageiros. Programação Inteira. Algoritmos Evolucionários..

(9) Solution Algorithms for The Traveling Salesman Problem with Rideshare and Quota. Author: Jean Gleison de Santana Silva Advisor: Marco Cesar Goldbarg. ABSTRACT The Traveling Salesman Problem with Ridesharing and Quota belongs to the class of Quota Traveling Salesman problems. In this problem, it is considered the economic advantage achieved when the salesman, traveling in a private vehicle, gives ride to passengers who share travel expenses with him. The model can represent real situations where a driver programs a route to visit cities, each of which associated with a bonus, with the requirement of collecting a minimum sum of bonuses and taking into account the possibility of reducing costs due to people embarked in his vehicle. A math model, six evolutionary algorithms, a GRASP and one heuristic are presented for the problem addressed. The behavior of the proposed algorithms is analyzed on a computational experiment with 48 instances. Keywords: Traveling salesman with passengers. Integer programming. Evolutionary algorithms..

(10) Lista de ilustrações Figura 1 – Representação do cromossomo. . . . . . . . . . . . . . . . . . . . . . . 29 Figura 2 – Recombinação entre dois cromossomos. . . . . . . . . . . . . . . . . . . 30.

(11) Lista de tabelas Tabela Tabela Tabela Tabela Tabela Tabela Tabela. 1 2 3 4 5 6 7. – – – – – – –. Tabela 8 – Tabela 9 – Tabela 10 – Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela. 11 12 13 14 15 16 17 18 19 20 21 22 23 24. – – – – – – – – – – – – – –. Intervalos de cada parâmetro submetidos ao irace. . . . . . . . . . . . . Parâmetros sugeridos pelo irace para os algoritmos evolucionários. . . . Conjunto de referência com as melhores soluções. . . . . . . . . . . . . Limites inferior e superior das instâncias executadas pelo solver Gurobi. Resultados obtidos pela heurística NAIVE. . . . . . . . . . . . . . . . p-valores computados pelo teste de Friedman para cada grupo de instância. p-valores de Shaffer computados para comparação dois a dois dos algoritmos de solução para intâncias simétricas. . . . . . . . . . . . . . Mediana das medianas para cada grupo de instâncias. . . . . . . . . . p-valores obtidos do Mann-Whitney para o conjunto de instâncias assimétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Média das soluções de cada algoritmos para o conjunto de instâncias assimétricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resultados do algoritmo GEN-SPLIT para instâncias simétricas. . . . . Resultados do algoritmo GEN-SCX para instâncias simétricas. . . . . . Resultados do algoritmo GEN-SCX-BASED para instâncias simétricas. Resultados do algoritmo MEM-SPLIT para instâncias simétricas. . . . Resultados do algoritmo MEM-SCX para instâncias simétricas. . . . . Resultados do algoritmo MEM-SCX-BASED para instâncias simétricas. Resultados do GRASP para instâncias simétricas. . . . . . . . . . . . . Resultados do algoritmo GEN-SPLIT para instâncias assimétricas. . . Resultados do algoritmo GEN-SCX para instâncias assimétricas. . . . . Resultados do algoritmo GEN-SCX-BASED para instâncias assimétricas. Resultados do algoritmo MEM-SPLIT para instâncias assimétricas. . . Resultados do algoritmo MEM-SCX para instâncias assimétricas. . . . Resultados do algoritmo MEM-SCX-BASED para instâncias assimétricas. Resultados do GRASP para instâncias assimétricas. . . . . . . . . . . .. 38 38 39 41 42 42 43 43 44 44 45 46 47 48 49 50 51 51 52 52 52 52 52 53.

(12) Lista de abreviaturas e siglas PTP – Profitable Tour Problem OP – Orienteering Problem PCTSP – Prize-Collection Traveling Salesman Problem PCVPQ – Problema do Caixeiro Viajante com Passageiros e Quota TSPRQ – Traveling Salesman Problem with Ridesharing and Quota RAM – Random Access Memory g++ – GNU C++ Compiler.

(13) Lista de Algoritmos 1 2 3 4 5 6. Heurística de carregamento ótimo para o PCVPQ. GRASP para o PCVPQ. . . . . . . . . . . . . . . . Procedimento de reparo de um cromossomo. . . . . Heurística de carregamento. . . . . . . . . . . . . . Arquitetura do algoritmo genético. . . . . . . . . . Arquitetura do algoritmo memético. . . . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 28 29 33 33 34 35.

(14) Sumário 1 1.1 1.2 1.3 1.3.1 1.3.2 1.4. INTRODUÇÃO . . . . . . . . . . . . . . . . . . Objeto de Estudo . . . . . . . . . . . . . . . . . . Procedimentos Metodológicos . . . . . . . . . . Objetivos . . . . . . . . . . . . . . . . . . . . . . . Objetivos Gerais . . . . . . . . . . . . . . . . . . . . Objetivos Específicos . . . . . . . . . . . . . . . . . Organização do Trabalho . . . . . . . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . . . . . . . .. 15 15 15 18 18 18 18. 2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.3. TRABALHOS RELACIONADOS . . . . . . . . . . Problemas de Roteamento com Coleta de Bônus . Profitable Tour Problem (PTP) . . . . . . . . . . . . . . Orienteering Problem (OP) . . . . . . . . . . . . . . . . Prize-Collection Traveling Salesman Problem (PCTSP) Problemas de Transporte Solidário . . . . . . . . . . O Problema de Ridesharing . . . . . . . . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . . . . . . . .. 19 19 19 20 20 20 21. 3. PROBLEMA DO CAIXEIRO VIAJANTE COM PASSAGEIROS E QUOTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Definição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . 24. 3.1 4 4.1 4.2 4.3 4.4 4.5 4.5.1 4.5.2 4.5.3. . . . . . . .. . . . . . . .. 4.5.3.2. ALGORITMOS DE SOLUÇÃO PARA O PCVPQ Método Exato . . . . . . . . . . . . . . . . . . . . . . . Heurística de Carregamento Ótimo (NAIVE) . . . GRASP . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmos Evolucionários para o PCVPQ . . . . . Algoritmos Genéticos . . . . . . . . . . . . . . . . . . Representação do Cromossomo . . . . . . . . . . . . . . Inicialização e Seleção . . . . . . . . . . . . . . . . . . . Cruzamento . . . . . . . . . . . . . . . . . . . . . . . . . Recombinação SPLIT (GEN-SPLIT) . . . . . . . . . . . . . Cruzamento Sequencial Construtivo (GEN-SCX) . . . . . . .. 4.5.3.3. Cruzamento Sequencial Construtivo Modificado (GEN-SCX-BASED). 4.5.4 4.5.5 4.5.6 4.5.7. Mutação . . . . . . . . . . . . . . . . . . Critério de Parada . . . . . . . . . . . . Procedimento de Reparação da Solução Heurística de Carregamento . . . . . . .. 4.5.3.1. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 27 27 27 28 28 29 29 30 30 30 30 31. 32 32 32 32.

(15) 4.6. Algoritmos Meméticos . . . . . . . . . . . . . . . . . . . . . . . . . . 34. 5 5.1 5.1.1 5.1.2 5.2. EXPERIMENTOS E RESULTADOS . . . . . Experimentos Computacionais . . . . . . . . . . Sobre o Banco de Instâncias . . . . . . . . . . . . . Metodologia . . . . . . . . . . . . . . . . . . . . . . Resultados . . . . . . . . . . . . . . . . . . . . . .. 6 6.1 6.2. CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . 54 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . . . . .. REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36 36 36 37 39. 55.

(16) 15. 1 Introdução O presenta capítulo está organizado em quarto seções nas quais descrevem, respectivamente o objeto de estudo da pesquisa; os procedimentos metodológicos utilizados para solução do problema investigado e as contribuições desta pesquisa; os objetivos e por fim, a organização do trabalho.. 1.1. Objeto de Estudo. A classe de problemas de roteamento com coleta de bônus, introduzida por (BALAS, 1989), se trata de problemas de otimização combinatória caracterizados por sua definição através de grafos com bônus associados aos seus vértices nos quais não há obrigação de visita de qualquer vértice em especial. O Problema do Caixeiro Viajante com Passageiros e Quota (PCVPQ) também denominado Traveling Salesman Problem with Ridesharing and Quota (TSPRQ) inclui no tradicional problema de roteamento com coleta de bônus, a consideração do valor econômico relativo ao aproveitamento do potencial do transporte solidário associado ao eventual compartilhamento do carro do motorista. Levando em consideração a representação do problema através de grafos, o motorista não é obrigado a visitar qualquer vértice específico, no entanto, a coleta total de bônus feita nos vértices escolhidos, devem atender à uma quota mínima pré-estabelecida. Dessa forma, a escolha dos vértices a serem visitados pelo caixeiro, bem como a rota empregada para tal visita, depende tanto dos bônus que são recolhidos em cada vértice, como da possível economia decorrente do potencial embarque de passageiros nos vértices visitados. A contribuição de cada passageiro no custo total da viagem é calculada em função da rota escolhida, não podendo exceder o valor limite que este está disposto a pagar pela viagem, uma vez que o PCVPQ não objetiva diretamente lucro, mas a redução de custos. O PCVPQ tem um grande impacto socioeconômico, de um lado beneficia motoristas e passageiros pela redução dos custos da viagem e por outro, contribui na redução de emissões de poluentes, assim como na diminuição do fluxo de carros nas vias.. 1.2. Procedimentos Metodológicos. Otimização consiste em encontrar um máximo ou mínimo de uma determinada função que está definida em um certo domínio. Nesse sentido, a otimização combinatória, onde o domínio é normalmente finito, pode parecer um problema simples de se resolver encontrando a melhor solução contida no número finito de possibilidades. Essas possibili-.

(17) Capítulo 1. Introdução. 16. dades podem, por exemplo, incluir todos os ciclos Hamiltonianos de um grafo completo. Listar todas a possibilidades para encontrar a melhor solução dentre elas é uma prática um tanto inviável, mesmo para instâncias de tamanho razoável (GRÖTSCHEL; LOVÁSZ, 1993). Nos casos em que a solução é muito difícil de encontrar, algoritmos heurísticos podem ser utilizados para encontrar uma solução aproximada(GRÖTSCHEL; LOVÁSZ, 1993). Segundo (GOLDBARG; GOLDBARG; LUNA, 2016), heurística é uma técnica aproximativa que objetiva encontrar uma solução aproximada utilizando um esforço computacional admissível para um determinado problema, sendo capaz de garantir viabilidade ou até mesmo a otimalidade da solução encontrada, dependendo das condições. Meta-heurística é uma arquitetura geral de regras que pode servir de base para o projeto de heurísticas em geral (GOLDBARG; GOLDBARG; LUNA, 2016). Os Algoritmos Evolucionários são uma classe de meta-heurísticas que trabalham em iterações, chamadas de gerações e operam sob um espaço de busca 𝑆, onde cada ponto do conjunto 𝑆 é uma possível soluções para o problema em questão. Uma espécie de pontuação é atribuída a cada solução de 𝑆 através do uso de uma função 𝑓 , chamada de função fitness. A cada geração é constituída uma nova população 𝑃 , onde 𝑃 é uma coleção de elementos de 𝑆, e cada elemento de 𝑃 é chamado de indivíduo. Dessa forma, pela definição, 𝑃 pode conter várias cópias de indivíduos. A renovação de 𝑃 a cada geração é feita através da seleção de alguns de seus indivíduos que irão gerar novos pontos de 𝑆. Esses indivíduos selecionados são chamados de pais, que vão gerar novos indivíduos. Geralmente, os melhores indivíduos de 𝑃 são mantidos em 𝑃 , e os piores tendem a ser substituídos pelos novos (JANSEN, 2013). Os Algoritmos Evolucionários têm se mostrado uma ferramenta útil e eficiente em várias aplicações práticas. Um bom exemplo é o Problema do Caixeiro Viajante. Dentre os algoritmos evolucionários mais conhecidos destacam-se os Algoritmos Genéticos (AGs) (WHITLEY; SUTTON, 2012) e os Algoritmos Genéticos Híbridos, também chamados de Meméticos (AMs) (EL-MIHOUB et al., 2006; NERI; COTTA, 2012). Os AMs são uma variante já reconhecida como promissora pelo estado da arte (ONG; KEANE, 2004). O termo Algoritmo Genético (AG) foi inicialmente utilizado por Holland (1975). O GA é eficiente na solução de problemas de otimização combinatória devido a sua grande capacidade de diversificação de suas soluções, no entanto em algumas situações encontra dificuldades para realizar a intensificação (HORN; GOLDBERG, 1994). De modo geral, o AG inicia com uma população de indivíduos (conjunto inicial de soluções) e a cada iteração evolui essa população para uma nova geração, geralmente com melhores indivíduos. O processo de renovação da geração é feito como descrito anteriormente, tal como na metáfora evolutiva, a cada iteração indivíduos são selecionados para fazer recombinação ou cruzamento, repassando suas características para seus filhos gerados, que por sua vez são incorporados à população atual. Após o processo de cruzamento, cada indivíduo gerado pode sofrer uma mutação. O processo de seleção é feito após o cruzamento dos indivíduos.

(18) Capítulo 1. Introdução. 17. selecionados, dando origem a uma nova geração. O critério de parada do AG pode ser o número de gerações que se quer alcançar até extrair o melhor indivíduo da geração resultante. Antes de falar de Algoritmo Memético (AM) é necessário definir o termo meme, cunhado por Dawkins (1976) para representar uma unidade de informação codificada em formato não genético ou mesmo uma unidade de informação cultural. O Algoritmo Memético é uma variante do Algoritmo Genético que inclui uma função de melhoria após os processos de recombinação e mutação. Na fase de evolução do AM, é permitida a herança de características adquiridas, além disso, qualquer melhoria obtida por um cromossomo é passível de transmissão (GOLDBARG; GOLDBARG; LUNA, 2016). GRASP, do Inglês (Randomized Adaptive Search Procedures) é uma meta-heurística iterativa usada em problemas de combinatória onde cada iteração consiste em duas fases: construção e busca local. A primeira fase, construção, é responsável por construir uma solução válida de forma gulosa e aleatória. Na busca local, segunda fase, um procedimento de busca local é usado para explorar a vizinhança da solução obtida na primeira fase até encontrar um mínimo local. A melhor solução encontrada é armazenada e esse procedimento é repetido várias vezes (GENDREAU; POTVIN, 2010). O GRASP é uma meta-heurística de fácil adaptação e implementação, dependendo do problema de otimização que se que atacar. Além disso, suas fases não dependem uma da outra, o que permite a composição de procedimentos construtivos com estratégias de busca local (GOLDBARG; GOLDBARG; LUNA, 2016). Tendo em vista que o PCVPQ é um problema de otimização combinatória, esse trabalho propõe uma formulação de modelo matemático para o problema. Nesse sentido, os Algoritmos Evolutivos tendem a ser uma boa alternativa para esse tipo de problema, assim, esse trabalho optou por usar o GA, e AM como ferramenta para solucionar o PCVPQ, bem como o GRASP, em função de sua fácil adaptação e implementação aos problemas de otimização combinatória (GOLDBARG; GOLDBARG; LUNA, 2016). Nesse sentido, dentre as contribuições dessa pesquisa podemos destacar a proposição de um modelo matemático para o PCVPQ. Uma heurística NAIVE, três versões de algoritmo genético, três versões de algoritmo memético, e uma implementação do GRASP. Como mencionado anteriormente o PCVPQ é um problema que reúne características de dois problemas: o clássico Problema de Roteamento com Coleta de Bônus e o Ridesharing, que serão abordados no capítulo seguinte. Nesse sentido, procurou-se abordagens já apresentadas para ambos problemas para servir de base para a concepção da solução do problema. Esse trabalho contribui para pesquisas futuras em otimização de problemas de roteamento aliado com Ridesharing. Além disso, outra importante contribuição é uma base de instâncias para o problema proposto. Em um dos capítulos desse trabalho trata-se dos experimentos computacionais para a comprovação da eficiência dos algoritmos desenvolvidos para solução do PCVPQ..

(19) Capítulo 1. Introdução. 18. A análise experimental é fundamentada na comparação dos resultados dos algoritmos desenvolvidos com um conjunto de referência, que foi construído a partir das melhores soluções encontradas pela junção das soluções obtidas pelos métodos aqui usados, uma vez que o problema é novo e não existem casos de teste ou abordagens de solução para resolvê-lo, até onde compreende o autor.. 1.3 1.3.1. Objetivos Objetivos Gerais. O objetivo geral desta dissertação é modelar e sugerir algoritmos de solução para uma nova variante do Problema do Caixeiro Viajante com Quota que adiciona características de um problema de roteamento, o ridesharing ou em Português, Caronas Solidárias, presentemente denominado Caixeiro Viajante com Passageiros e Quota (PCVPQ).. 1.3.2. Objetivos Específicos. ∙ Produzir informações para suportar futuras pesquisas no tema, através da definição do problema e apresentação dos trabalhos relacionados; ∙ Desenvolver o modelo matemático do problema; ∙ Desenvolver algoritmos de solução para o problema para servir de inspiração ou ponto de partida para pesquisas futuras no tema.. 1.4. Organização do Trabalho. Este trabalho se divide em 6 capítulos. O Capítulo 1 introduz de forma breve a origem e importância do problema aqui abordado, assim como os objetivos almejados no desenvolvimento dessa pesquisa. No Capítulo 2 são apresentados trabalhos da literatura relacionados ao tema desta dissertação. O Capítulo 3 descreve o Problema do Caixeiro Viajante com Passageiros e Quota de forma detalhada e apresenta também um modelo matemático para o problema. O Capítulo 4 descreve os algoritmos usados na resolução do PCVPQ, onde é apresentado um método exato, uma heurística e 7 algoritmos metaheurísticos. No Capítulo 5, descreve-se a metodologia empregada para os experimentos computacionais, assim como os resultados obtidos. Finalmente, no Capítulo 6, são apresentados as considerações finais e trabalhos futuros..

(20) 19. 2 Trabalhos Relacionados Este capítulo descreve alguns trabalhos da literatura mais relevantes para a contextualização do problema proposto nesta dissertação. São apresentados alguns conceitos relacionados ao problema do transporte solidário e ridesharing.. 2.1. Problemas de Roteamento com Coleta de Bônus. Os problemas de roteamento com coleta de bônus, do Inglês Traveling Salesman Problem with Profits (TSPP), são definidos em grafos com bônus associados aos vértices. O motorista não é obrigado a visitar qualquer vértice específico do grafo, contudo deve realizar um ciclo hamiltoniano que permita recolher pelo menos uma quota conhecida de bônus (AWERBUCH et al., 1998). Essa classe de problemas foi introduzida por Balas (1989). Awerbuch et al. (1998) estuda um caso de coleta semelhante ao presentemente proposto e é denominado como Quota Traveling Salesman Problem. No tema, destacam-se os trabalhos de Ausiello et al. (2004) que relata um algoritmo para o The On-Line Quota Traveling Salesman Problem, bem como no trabalho de Yu, Liu e Bao (2014), qual investiga algoritmos determnísticos ótimos para algumas variantes do Problema do Caixeiro Viajante com Quotas On-Line. Jozefowiez, Glover e Laguna (2008) introduz uma nova abordagem para o Problema do Roteamento com Coleta de Bônus multiobjetivo que lida com dois objetivos conflitantes: minimizar o tamanho do tour e maximizar a coleta de bônus. Sua abordagem consiste em um algoritmo evolucionário multiobjetivo combinado a uma busca local ejection chain para geração de soluções iniciais diversificadas. O seu método híbrido é validado comparando-se as soluções obtidas com boas soluções mono-objetivas obtidas da literatura. Segundo Jozefowiez, Glover e Laguna (2008), da perspectiva mono-objetivo, podemos definir, de forma geral, três problemas de Caixeiro Viajante com coleta bônus: Profitable Tour Problem (PTP), Orienteering Problem (OP) e Prize-Collection Traveling Salesman Problem (PCTSP).. 2.1.1 Profitable Tour Problem (PTP) O Profitable Tour Problem (PTP), inicialmente proposto por Dell’Amico, Maffioli e Värbrand (1995), é um problema que envolve um único veículo e um bônus associado à cada cidade (profit). O objetivo é determinar uma rota, que seja um ciclo hamiltoniano, que minimiza a diferença entre o custo total da viagem e o bônus coletado..

(21) Capítulo 2. Trabalhos Relacionados. 20. 2.1.2 Orienteering Problem (OP) O Orienteering Problem (OP) (CHAO; GOLDEN; WASIL, 1996), também conhecido como Selective Traveling Salesman Problem (STSP) (LAPORTE; MARTELLO, 1990), consiste em definir uma rota, que seja um ciclo hamiltoniano, de forma a maximizar a coleta de bônus levando em consideração um tempo limite para completar a viagem. O nome Orienteering Problem (OP) originou-se do esporte orienteering, onde competidores individuais começam a prova em um ponto específico, tentando alcançar o máximo de marcos de percurso (checkpoints), e retornando ao mesmo ponto de início em um certo tempo. Cada checkpoint tem uma pontuação e o objetivo é maximizar o total de pontos coletados nesses marcos. Dessa forma, o OP é uma combinação da seleção de vértices e a determinação do menor caminho hamiltoniano considerando o vértices de partida e os marcos da prova (VANSTEENWEGEN; SOUFFRIAU; OUDHEUSDEN, 2011).. 2.1.3 Prize-Collection Traveling Salesman Problem (PCTSP) O Prize-Collection Traveling Salesman Problem (PCTSP) (BALAS, 1989) considera uma coleta mínima de bônus 𝑝𝑚𝑖𝑛 como restrição. O objetivo do PCTSP é encontrar uma rota, sendo um ciclo hamiltoniano, que minimiza o custo da viagem do caixeiro e cuja coleta de bônus obtida no percurso não seja menor que 𝑝𝑚𝑖𝑛 .. 2.2. Problemas de Transporte Solidário. O transporte solidário incentiva o compartilhamento de um veículo por diferentes pessoas que tenham um destino de viagem ou parte do trajeto em comum. Os sistemas de transporte público ou privado podem ser considerados casos especiais do transporte solidário, entretanto o foco do transporte solidário é o compartilhamento de veículos de propriedade privada sem fins lucrativo. A prática desse tipo de transporte possibilita uma série de vantagens para todas as partes envolvidas, motoristas donos dos veículos e passageiros podem ser beneficiados por: redução de custos e do tempo de viagem, aumento do conforto e segurança dos passageiros embarcados. Adicionalmente benefícios ambientais são alcançados através da redução da poluição e diminuição do fluxo de carros nas vias, contribuindo para um trânsito mais fluido. O transporte solidário é incentivado em países como os Estados Unidos, Canadá e alguns estados da União Europeia (NOURINEJAD, 2014). Segundo Nourinejad (2014) existem diferentes modalidades de serviços de transporte emergentes que incorporaram o consumo colaborativo em seus modelos de negócio, tais como bikesharing, carsharing, ridesharing, personal vehicle sharing, carpooling, slugging e taxi-sharing. O Bikesharing e o carsharing possibilita o uso de bicicletas e veículos,.

(22) Capítulo 2. Trabalhos Relacionados. 21. respectivamente, a indivíduos que não se preocupam com os custos e responsabilidades de proprietário. O Ridesharing consiste em combinar motoristas com passageiros em sua rota, que vão dividir os custos da viagem. No Personal vehicle sharing indivíduos têm acesso a curto prazo a veículos de propriedade privada. O carpooling é o compartilhamento de viagens diárias específicas como ir ao trabalho. O Slugging é uma variação do ridesharing onde é feita a prática informal do carpooling para tirar vantagens da máxima ocupação do veículo e redução de pedágios. A carona é oferecida informalmente em filas localizadas nas proximidades do acesso à pista. Finalmente o taxi-sharing é o compartilhamento de viagens em taxis. Indivíduos com rotas comuns dividem o custo da viagem pago ao taxista.. 2.3. O Problema de Ridesharing. A popularização do ridesharing nos últimos anos deu-se principalmente em função do uso de Smartphones que possibilitou o uso em massa do GPS, e redes sociais (AMEY; ATTANUCCI; MISHALANI, 2011). Alguns aplicativos foram desenvolvidos para facilitação da reunião de caronas e motoristas como: Uber, BlaBlaCar, Zanzu, Carona Direta, Meleva, dentre outros. O problema de ridesharing é definido de várias formas na literatura (AMEY; ATTANUCCI; MISHALANI, 2011). De uma forma geral, corresponde ao problema de reunir duas ou mais pessoas para partilhar uma única viagem em um veículo, sem levar em conta um acordo prévio ou um histórico de cooperação (DAILEY; LOSEFF; MEYERS, 1999). O problema é tradicionalmente aplicado ao transporte com o uso de carros e implica, na prática, na reunião de um motorista e diversos passageiros que ocupam assentos no carro do motorista aproveitando para seguir na viagem previamente definida pelo motorista. Outras implicações são possíveis além da lotação do carro, com impactos em áreas como transportes, economia e ciências sociais (KLEINER; NEBEL; ZIPARO, 2011). Em ampla visão o serviço de ridesharing pode ser pensado até mesmo como um serviço de taxi ou de transporte personalizado, todavia seguindo um trajeto e condições definidas previamente (CHAN; SHAHEEN, 2012). A importância do aspecto ocasional e oportunista da reunião de motoristas e passageiros é ressaltada em vários trabalhos na literatura de forma que as versões “real-time” (GRUEBELE, 2008) ou “dinâmica” (DEAKIN; FRICK; SHIVELY, 2010) do ridesharing têm recebido grande atenção e esforço de pesquisa atualmente. A reunião de motoristas e passageiros se dá espontaneamente em razão das mútuas vantagens. Os motoristas podem dividir os custos de operação do carro com o carona ou obter vantagens do sistema de transporte como redução de pedágio e outras. Os caronas podem economizar nos custos de viagem, reduzir o tempo de deslocamento, alcançar maior conforto, maior segurança e aumentar suas opções de decisão. Eventualmente motorista e carona podem valorizar a oportunidade de socialização e companhia no trajeto..

(23) Capítulo 2. Trabalhos Relacionados. 22. Finalmente pode haver incentivo oficial com descontos no pedágio, descontos em taxas de estacionamento, licenciamento do carro e outras. Por outro lado, embora muitas vezes vantajoso, principalmente na questão econômica, deve-se levar em conta o lado negativo na prática do ridesharing. Nesse sentido, podemos destacar como ponto negativo o fato de compartilhar o veículo com pessoas desconhecidas implicando em questões de segurança. Podemos relacionar o ridesharing ao carpooling e ao dial-a-ride de forma que o carpooling apresenta a peculiaridade de uma demanda regular com pouca mudança nos destinos dos participantes e com longo planejamento (MORENCY, 2007). O dial-a-ride consiste no planejamento das rotas e horários de menor custo operacional para 𝑚 veículos idênticos localizados em um mesmo ponto de partida, para atender uma demanda de pedidos de recolhimento e entrega (pickup and delivery) onde usuários clientes definem o ponto de recolhimento e o ponto de entrega de um objeto (CORDEAU; LAPORTE, 2007). Nesse sentido, o ridesharing se assemelha ao dial-a-ride no fato de tentar atender a pedidos de caronas com origem e destino variados dentro de uma área específica, e por ser direcionado a um público alvo geralmente conhecido, e por serem atendidos por carros apropriados para esse tipo de demanda. Basicamente existem duas variantes de algoritmos de solução para o ridesharing: de otimização centralizada e de otimização descentralizada baseada em agentes. Na opção centralizada a função objetivo é compartilhada por motoristas e caronas. Na opção descentralizada, via de regra, os caronas podem possuir diferentes objetivos. Uma revisão sistemática dos modelos de otimização mais relevantes do ridesharing dinâmico com informação online é apresentada em (AGATZ et al., 2012). Agatz et al. (2012) observam que os métodos centralizados de otimização não fornecem respostas em tempo real para casos práticos em tempo suficientemente rápido. Ressaltam também que não conferem a flexibilidade necessária para atender vários passageiros com embarques e desembarques variados. Os autores apontam a introdução de novos modelos que unem o ridesharing descentralizado com abordagens de decomposições eficazes no que diz respeito à segmentação geográfica baseada no ponto de desembarque dos passageiros. Agatz et al. (2011), Amey, Attanucci e Mishalani (2011) e Ghoseiri et al. (2011) apresentam abordagens centralizadas. Winter e Nittel (2006), Xing et al. (2009) e Kleiner, Nebel e Ziparo (2011) apresentam abordagens descentralizadas. Xing et al. (2009) introduz um sistema de ridesharing, em que os passageiros buscam por motoristas que oferecem caronas em uma rede on-line que é atualizado a cada 2 minutos. Os autores apontam que quando comparado ao transporte público, o sistema oferece um menor tempo de viagem para os passageiros que demandam carona, desde que haja motoristas suficientes para atender a demanda de caronas. Diversas variantes de Colônia de Formigas para o ridesharing multi-objetivo são estudadas no trabalho de Herbawi e Weber (2011). Os objetivos a serem minimizados, são:.

(24) Capítulo 2. Trabalhos Relacionados. 23. o custo, tempo e número de motoristas. Herbawi e Weber (2012) trata novamente uma versão multi-objetivo do ridesharing, mas dessa vez, os objetivos a serem minimizados são: a distância total da percurso, o tempo total dos motoristas e o tempo total dos passageiros. Essa versão também considera maximizar o número de demandas atendidas dos passageiros. Coltin e Veloso (2014) investigam o problema de ridesharing com passageiros que é controlado por um sistema de decisão centralizado. Furuhata et al. (2013) apresenta uma classificação de sistemas que implementam soluções para o problema de ridesharing. O trabalho mais recente que apresenta uma revisão do estado da arte dos problemas de roteamento é apresentado por Lahyani, Khemakhem e Semet (2015)..

(25) 24. 3 Problema do Caixeiro Viajante Com Passageiros e Quota Este capítulo apresenta uma definição mais detalhada do objeto de estudo deste trabalho, o Problema do Caixeiro Viajante com Passageiros e Quota. Uma proposta de modelo matemático também é apresentada.. 3.1. Definição do problema. O Problema do Caixeiro Viajante com Passageiros e Quota (PCVPQ) também denominado Traveling Salesman Problem with Ridesharing and Quota (TSPRQ) é uma variação do problema do caixeiro viajante com quota combinado com o problema de ridesharing em que o caixeiro pode reduzir o custo total da viagem compartilhando o custo de deslocamento entre trechos com eventuais passageiros que solicitam carona. O problema considera um grafo 𝐺 = (𝑁, 𝑀, 𝐵), onde 𝑁 = {1, ..., 𝑛} é o conjunto de cidades, 𝑀 = {1, ..., 𝑚} é o conjunto de estradas que ligam as cidades de 𝑁 e 𝐵 = {𝑏1 , 𝑏2 , ..., 𝑏𝑛 } é o conjunto de bônus associados às cidades, onde 𝑏1 = 0. Os bônus são coletados a cada cidade visitada e a soma total de bônus coletado deve ser no mínimo 𝑇 . Custos 𝑑𝑖𝑗 para viajar de uma cidade 𝑖 para a 𝑗, 𝑖, 𝑗 ∈ 𝑁 , estão associados às estradas que as ligam. A viagem é iniciada na cidade 1. Existe um conjunto de potenciais passageiros, 𝐿 = {1, ..., 𝑛}, onde cada passageiro se encontra em uma cidade de 𝑁 e deseja se deslocar para uma das cidades que o caixeiro pode escolher. Contudo, cada passageiro está disposto a pagar no máximo 𝑡𝑙 , 𝑙 ∈ 𝐿, unidades monetárias pela viagem. Essa restrição de contribuição máxima garante uma vantagem econômica para o passageiro assim como impossibilita uma possível extensão da viagem para aumentar a contribuição do passageiro e consequentemente diminuir o custo do motorista. Cada passageiro 𝑙, 𝑙 ∈ 𝐿, tem como cidade de origem 𝑃𝑙 e destino 𝑄𝑙 , 𝑄𝑙 ̸= 𝑃𝑙 , ∀𝑙 ∈ 𝐿. O custo de deslocamento entre as cidades 𝑖 e 𝑗, 𝑑𝑖𝑗 , é divido igualmente entre os ocupantes do veículo, incluindo o motorista. O caixeiro pode transportar no máximo 𝑅 passageiros em seu veículo. O objetivo é minimizar o custo total da viagem do caixeiro, atendendo as restrições de capacidade do carro, origem e destino dos passageiros, contribuição máxima permitida para o passageiro e a soma mínima de quotas coletadas nas cidades visitadas pelo caixeiro. O transporte dos passageiros é condicionado aos custos do caixeiro e o mesmo não é obrigado a transportar qualquer passageiro. É considerado também que não existe incompatibilidade entre os passageiros, ou seja, qualquer passageiro pode compartilhar sua viagem com qualquer outro. O motorista é livre para decidir que cidades irá visitar e que passageiros irá transportar. No entanto, somente podem ser embarcados passageiros cujo custo de.

(26) Capítulo 3. Problema do Caixeiro Viajante Com Passageiros e Quota. 25. sua viagem associada não ultrapasse o valor máximo fixado pelo próprio passageiro. Os passageiros e o motorista não levam em consideração a duração da viagem, permanência nas localidades ou o número de cidades visitadas. Na medida em que as hipóteses anteriores são modificadas, são possíveis diversas variantes para o PCVPQ. Por ser um problema da classe do caixeiro viajante, o PCVPQ possui restrições que garantem uma solução que contém um simples e contínuo subtour Hamiltoniano que inicia e termina no vértice raiz, que para o modelo proposto é representado pelo vértice 1. Existem também restrições que garantem que o embarque e o desembarque dos passageiros ocorram nas respectivas cidades de origem e de destino. Dessa forma, uma vez que o passageiro embarca, o motorista deve obrigatoriamente deixá-lo em seu destino, caso contrário o seu embarque não é feito. No modelo proposto aqui, é considerado um grafo 𝐺 = (𝑁, 𝑀, 𝐵), onde 𝑁 = {1, ..., 𝑛} é o conjunto de vértices que representam as cidades, 𝑀 = {1, ..., 𝑚} é conjunto de arestas que representam as rodovias que ligam as cidades, e 𝐵 = {𝑏1 , ..., 𝑏𝑛 } é conjunto de bônus associado à cada vértice, coletado no momento da visita à uma cidade. 𝑑𝑖𝑗 ∈ 𝑀 é custo associado à aresta (𝑖, 𝑗), que representa o custo de deslocamento entre da cidade 𝑖 para a 𝑗. 𝐿 = {1, ..., 𝑛} é o conjunto de potenciais passageiros, um para cada cidade. 𝑥𝑖𝑗 , uma variável binária, cujo valor será 1 se a aresta (𝑖, 𝑗) está na solução e 0, caso contrário. 𝑣𝑖𝑗𝑙 , também binária, e terá valor 1 se o passageiro 𝑙 é transportado pela aresta 𝑖 − 𝑗, 0 caso contrário. 𝑠𝑙 e 𝑑𝑙 , que representam respectivamente, a origem e destino de uma passageiro 𝑙 ∈ 𝐿. 𝑠 é o vértice em que o caixeiro irá iniciar e finalizar o tour. Com base nas variáveis definidas, segue o modelo para o PCVPQ é apresentado por meio das expressões matemáticas 3.1-3.19. A função objetivo, expressa em 3.1, visa minimizar o custo total da viagem do caixeiro fazendo o rateio dos custos de deslocamento dentre os ocupantes do carro, incluindo o motorista. As restrições 3.2 e 3.3 permitem que o percurso do caixeiro possa ser composto por um subconjunto de vértices de 𝑁 . As restrições 3.4 e 3.5 garantem que o percurso feito pelo caixeiro inicia e termina na cidade 𝑠. A restrição 3.6 garante que ao entrar em uma cidade, diferente de sua origem, o caixeiro tem que sair. A restrição 3.7 garante que só haverá um subciclo na solução (MILLER; TUCKER; ZEMLIN, 1960). A restrição 3.8 garante a coleta mínima de bônus 𝑇 durante o percurso. A restrição 3.9 garante a capacidade do carro, no máximo 𝑅. A restrição 3.10 garante que cada passageiro 𝑙 ∈ 𝐿 pagará no máximo 𝑡𝑙 unidades monetárias pela viagem. A restrição 3.11 garante que se o passageiro embarcar, ele deve ser conduzido até seu destino. As restrições 3.12 e 3.13 garantem que o passageiro 𝑙 ∈ 𝐿 só trafegará da sua origem 𝑠𝑙 ao seu destino 𝑑𝑙 . A restrição 3.14 garante o retorno de um passageiro somente para origem, caso em que sua cidade de origem seja diferente de 𝑠 e seu destino seja a cidade em que o caixeiro iniciou o percurso, caso contrário o passageiro não está apto para embarcar, uma vez que sua cidade destino já passou. E por último, a restrição 3.15 garante que não há coleta de bônus na cidade de.

(27) Capítulo 3. Problema do Caixeiro Viajante Com Passageiros e Quota. 26. origem do caixeiro.. Minimizar 𝑍=. ∑︁. 𝑥𝑖𝑗 𝑑𝑖𝑗 𝑣𝑖𝑗𝑙 + 1. (3.1). ∑︁ (𝑖,𝑗)∈𝑀. 𝑙∈𝐿. Sujeito à ∑︁. 𝑥𝑖𝑗 ≤ 1. ∀𝑗 ∈ 𝑁 ∖ {𝑠}. (3.2). 𝑥𝑗𝑖 ≤ 1. ∀𝑗 ∈ 𝑁 ∖ {𝑠}. (3.3). 𝑖∈𝑁 ∖{𝑗}. ∑︁ 𝑖∈𝑁 ∖{𝑗}. ∑︁. 𝑥𝑠𝑖 = 1. (3.4). 𝑥𝑖𝑠 = 1. (3.5). 𝑖∈𝑁 ∖{𝑠}. ∑︁ 𝑖∈𝑁 ∖{𝑠}. ∑︁. ∑︁. 𝑥𝑖𝑗 −. 𝑥𝑗𝑖 = 0. (3.6). 2 ≤ 𝑖, 𝑗 ≤ 𝑛, 𝑖 ̸= 𝑗. (3.7). 𝑖∈𝑁 ∖{𝑗}. 𝑖∈𝑁 ∖{𝑗}. 𝑢𝑖 − 𝑢𝑗 + (𝑛 − 1)𝑥𝑖𝑗 ≤ 𝑛 − 2 ∑︁. ∀𝑗 ∈ 𝑁 ∖ {𝑠}. 𝑏𝑖 𝑥𝑖𝑗 ≥ 𝑇. (3.8). (𝑖,𝑗)∈𝑀 𝑖̸=𝑗. ∑︁. 𝑣𝑖𝑗𝑙 ≤ 𝑅𝑥𝑖𝑗. ∀(𝑖, 𝑗) ∈ 𝑀, 𝑖 ̸= 𝑗. (3.9). 𝑙∈𝐿. 𝑣𝑖𝑗𝑙 𝑑𝑖𝑗. ∑︁. ∀𝑙 ∈ 𝐿, 𝑖 ̸= 𝑗. (3.10). ∀𝑙 ∈ 𝐿, 𝑖 ∈ 𝑁 ∖ {𝑠𝑙 , 𝑑𝑙 }. (3.11). 𝑙 𝑣𝑖𝑠 =0 𝑙. ∀𝑙 ∈ 𝐿. (3.12). 𝑣𝑑𝑙 𝑙 𝑖 = 0. ∀𝑙 ∈ 𝐿. (3.13). ∀𝑙 ∈ 𝐿, 𝑠𝑙 ̸= 𝑠. (3.14). ∑︁ (𝑖,𝑗)∈𝑀. 𝑣𝑖𝑗𝑙 + 1. − 𝑡𝑙 ≤ 0. 𝑙∈𝐿. ∑︁. 𝑙 𝑣𝑗𝑖 −. 𝑗∈𝑁 ∖{𝑖}. ∑︁. 𝑣𝑖𝑗𝑙 = 0. 𝑗∈𝑁 ∖{𝑖}. ∑︁ 𝑖∈𝑁 ∖{𝑠𝑙 }. ∑︁ 𝑖∈𝑁 ∖{𝑑𝑙 }. ∑︁. 𝑙 𝑣𝑠𝑖 =0. 𝑖∈𝑁 ∖{𝑠}. 𝑏𝑠 = 0 1 ≤ 𝑢𝑖 ≤ 𝑛 − 1. (3.15). 2≤𝑖≤𝑛. 𝑏𝑖 ∈ R +. (3.16) (3.17). 𝑥𝑖𝑗 ∈ {0, 1}. ∀(𝑖, 𝑗) ∈ 𝑀. (3.18). 𝑑𝑖𝑗 ∈ R+. ∀(𝑖, 𝑗) ∈ 𝑀. (3.19).

(28) 27. 4 Algoritmos de Solução para o PCVPQ O presente capítulo descreve os algoritmos utilizados para resolver o PCVPQ. Um método exato, uma heurística, um GRASP, 3 algoritmos genéticos e 3 meméticos são descritos.. 4.1. Método Exato. O modelo proposto, descrito na seção anterior, foi implementado usando o solver de programação matemática Gurobi versão 6.5.21 , que oferece suporte a diversos tipos de problemas, tais como Programação Linear (LP), Programação Linear Inteira Mista (MILP), Programação Quadrática (QP), Programação Quadrática Inteira Mista (MIQP), e Programação Quadrática Restrita (QCP) e Programação Quadrática Restrita Inteira Mista (MIQCP). Também suporta algumas linguagens de programação, tais como C++, Java, .NET e Python. Para a implementação, o modelo de programação matemática utilizado foi o de Programação Quadrática e a linguagem de programação C++.. 4.2. Heurística de Carregamento Ótimo (NAIVE). A heurística de carregamento ótimo (NAIVE) visa obter a rota de menor custo possível, e para essa rota, obter o embarque ótimo para o carro. Inicialmente a rota 𝑅 é obtida com os vértices de maior bônus que são adicionados a 𝑅 até que o bônus mínimo 𝑇 seja atingido, satisfazendo a inequação 3.8. A rota obtida é então submetida à função Melhoria, que no caso de instâncias simétricas, consiste no uso da heurística Lin-Kernighan, considerada um dos métodos mais eficientes na resolução do PCV, onde são feitas trocas de arestas às quais está associado um ganho. A troca de arestas só é feita se há um ganho positivo. O algoritmo termina quando não houver mais ganho ou quando todas as trocas possíveis forem feitas (LIN; KERNIGHAN, 1973). Já no caso de instâncias assimétricas a busca local 2-opt é utilizada. Inicialmente proposto por Croes (1958), o algoritmo da busca local 2-opt remove duas arestas do tour e as reconecta de forma a gerar outro tour diferente, que é considerado um vizinho. Esse procedimento é feito até que todos os vizinhos sejam gerados ou atinja um caso de parada específico, por exemplo um número máximo de vizinhos gerados. Após a tentativa de melhorar a rota, a mesma é submetida à função Solver cujo objetivo é obter uma configuração de carregamento ótimo para uma rota preestabelecida. Dessa forma, Solver é definida fixando valores para cada 𝑥𝑖𝑗 nas restrições 3.2 à 3.7 reduzindo modelo matemático proposto para o PCVPQ na 1. Solver de programação matemática. Pode ser acessado em: <http://www.gurobi.com/>.

(29) Capítulo 4. Algoritmos de Solução para o PCVPQ. 28. seção 3.1 às restrições de 3.8 à 3.19 com a mesma função objetivo. O Algoritmo 1 descreve o procedimento da heurística descrita nessa seção. As soluções obtidas pela heurística NAIVE são usadas como limite superior para análise de qualidade das soluções obtidas pelos algoritmos metaheurísticos descritos nas seções seguintes. Algoritmo 1: Heurística de carregamento ótimo para o PCVPQ. 1 NAIVE(𝐺 = (𝑁, 𝑀, 𝐵), 𝑇 ) 2 Considere R uma fila 3 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠 ← 𝑁 4 𝑅.𝑝𝑢𝑠ℎ(0) # cidade inicial 5 enquanto bônus de 𝑅 < 𝑇 faça 6 𝑐 ← selecione o vértice não visitado de maior bônus em 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠 7 marque 𝑐 como visitado 8 𝑅.𝑝𝑢𝑠ℎ(𝑐) 9 fim 10 𝑛𝑜𝑣𝑎𝑅𝑜𝑡𝑎 ← Melhoria(𝑅) 11 𝑆𝑜𝑙 ← Solver(𝑛𝑜𝑣𝑎𝑅𝑜𝑡𝑎) 12 retorne 𝑆𝑜𝑙. 4.3. GRASP. O GRASP para o PCVPQ é descrito no pseudocódigo 2, a sua fase de construção consiste na utilização de uma roleta para selecionar os vértices de acordo com o seu bônus e os incorporando à rota. A solução construída nessa primeira fase desconsidera o embarque de passageiros, portanto o caixeiro faz seu percurso, sem embarcar passageiro algum (linhas 2 à 8). A fase de busca local é similar à heurística NAIVE descrita na seção anterior. No caso de instâncias simétricas usa-se Lin-Kernighan, caso assimétricas, 2-opt. A carregamento dessa solução é obtido de forma ótima pela mesma função Solver definida também na heurística NAIVE. Esse procedimento é repetido várias vezes armazenando-se a melhor solução.. 4.4. Algoritmos Evolucionários para o PCVPQ. Para os algortimos evolucionários implementados para solução do PCVPQ, a função fitness utlizada é função objetivo, descrita na seção 3.1. As seções a seguir dedicamse a descrição desses algoritmos desenvolvidos, sendo 3 algoritmos genéticos e 3 meméticos..

(30) Capítulo 4. Algoritmos de Solução para o PCVPQ. 29. Algoritmo 2: GRASP para o PCVPQ. 1 GRASP(𝐺 = (𝑁, 𝑀, 𝐵), 𝑇 ) 2 Considere 𝑀 𝐴𝑋_𝐼𝑇 𝐸 como sendo o número máximo de iterações do GRASP 3 Considere 𝐵𝑒𝑠𝑡𝑆𝑜𝑙 como sendo a melhor solução encontrada 4 para 𝑖 de 1 até 𝑀 𝐴𝑋_𝐼𝑇 𝐸 faça 5 Considere R uma fila 6 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠 ← 𝑁 7 𝑅.𝑝𝑢𝑠ℎ(0) # cidade inicial 8 enquanto bônus de 𝑅 < 𝑇 faça 9 𝑏 ← Roleta(𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠) 10 𝑅.𝑝𝑢𝑠ℎ(𝑏) 11 fim 12 𝑛𝑜𝑣𝑎𝑅𝑜𝑡𝑎 ← Melhoria(𝑅) 13 𝑆𝑜𝑙 ← Solver(𝑛𝑜𝑣𝑎𝑅𝑜𝑡𝑎) 14 se 𝑆𝑜𝑙 é melhor que 𝐵𝑒𝑠𝑡𝑆𝑜𝑙 então 15 𝐵𝑒𝑠𝑡𝑆𝑜𝑙 ← 𝑆𝑜𝑙 16 fim 17 fim 18 retorne 𝐵𝑒𝑠𝑡𝑆𝑜𝑙. 4.5. Algoritmos Genéticos. Três versões de algoritmo genético foram criadas, cada um com operadores de cruzamento diferente.. 4.5.1. Representação do Cromossomo. O cromossomo ou indivíduo é representado por duas listas 𝐿𝑟 e 𝐿𝑒 , onde 𝐿𝑟 define a sequência de cidades a ser visitada, ou seja, a rota do motorista, e 𝐿𝑒 define quais passageiros serão transportados. A i-ésima posição de 𝐿𝑒 , 𝐿𝑒 [𝑖], é 1 se o passageiro na localidade 𝐿𝑟 [𝑖] estiver embarcado e 0 caso contrário. A Figura 1 mostra um exemplo de um cromossomo. A rota do motorista contém as cidades 1, 3, 2 e 4. Passageiros nas cidades 1, 3 e 4 estão embarcados nesta ordem. Lr. 1. 3. 2. 4. Le. 1. 1. 0. 1. Figura 1 – Representação do cromossomo..

(31) Capítulo 4. Algoritmos de Solução para o PCVPQ. 4.5.2. 30. Inicialização e Seleção. A população inicial, 𝑃 , é composta por cromossomos que representam soluções válidas geradas aleatoriamente com distribuição uniforme. 𝑃 é inicializada com |𝑃 | cromossomos. O tamanho da população, |𝑃 |, é um parâmetro dos algoritmos genéticos. Uma vez definida a população inicial, 𝑃𝑥 cromossomos de 𝑃 são selecionados via roleta para a recombinação. 𝑃𝑥 também é um parâmetro do algoritmo.. 4.5.3. Cruzamento. Três operadores de cruzamento são definidos: recombinação SPLIT, cruzamento sequencial construtivo (SCX) e operador baseado no SCX com poucas modificações. Cada cruzamento define um algoritmo genético diferente. 4.5.3.1. Recombinação SPLIT (GEN-SPLIT). Os 𝑃𝑥 cromossomos selecionados são organizados em pares para cruzar e assim dar origem a novos cromossomos. Dado dois cromossomos 𝐴 e 𝐵, a operação de recombinação consiste na escolha aleatória de um ponto de quebra 𝑘 (1 ≤ 𝑘 ≤ |𝐴| − 1, para 𝐴 e 1 ≤ 𝑘 ≤ |𝐵| − 1, para 𝐵, onde |𝑋| é o número de cidades visitadas na rota 𝑋) para cada cromossomo. A recombinação entre 𝐴 e 𝐵 irá gerar dois novos cromossomos, 𝐴′ e 𝐵 ′ , onde o primeiro filho, 𝐴′ , será composto pela primeira parte de 𝐴, obtida com a quebra, e elementos de 𝐵 que não estão na primeira parte de 𝐴. A concepção do segundo filho, 𝐵 ′ , se dá de maneira análoga à 𝐴′ . A Figura 2 ilustra o procedimento de recombinação entre dois cromossomos 𝐴 e 𝐵. O ponto de quebra escolhido para p cromossomo 𝐴 é 𝑘𝐴 = 2. Para 𝐵, 𝑘𝐵 = 3. Os novos cromossomos 𝐴′ e 𝐵 ′ são construídos com base na escolha dos pontos de quebra. A cada geração são realizadas 𝑃2𝑥 recombinações. PAIS. 1. 2. 4. 5. A. 1. 3. 5. 4. 2. 1. 0. 1. 1. 1. 1. 3. 5. 2. 4. 1. 0. 1. 0. 1. B. 1. 0. 1. 0. FILHOS. 1. 2. 3. 5. 4. A'. B'. 1. 0. 0. 1. 1. Figura 2 – Recombinação entre dois cromossomos.. 4.5.3.2. Cruzamento Sequencial Construtivo (GEN-SCX). O operador Cruzamento Sequencial Construtivo, também conhecido como SCX (Sequencial Contrutive Crossover, do Inglês) constrói um novo cromossomo usando as.

(32) Capítulo 4. Algoritmos de Solução para o PCVPQ. 31. melhores arestas de seus pais, com base em seus valores. O SCX não depende somente da estrutura dos cromossomos dos pais, uma vez que ele pode inserir no novo cromossomo novas boas arestas que não estão nos pais (AHMED, 2010). Abaixo o passo a passo do procedimento de cruzamento: Passo 1: Inicie no vértice 1 (𝑝 = 1), concatene-o a solução. Passo 2: Busque em ambos os pais um vértice ainda não visitado que aparece depois de 𝑝. Se não existir, busque sequencialmente nos vértices {2, 3, ..., 𝑛} considerando o primeiro candidato. Passo 3: Se o nó 𝛼 e 𝛽 encontrados respectivamente no primeiro e segundo pai, vá para o Passo 4. Passo 4: Se o custo 𝐶𝑝𝛼 < 𝐶𝑝𝛽 (custo das arestas 𝑝 − 𝛼 e 𝑝 − 𝛽), selecione 𝛼, se não 𝛽 e concatene-o ao cromossomo filho parcialmente construído. Se o cromossomo filho é um cromossomo completo então pare, se não atribua este nó à 𝑝 e volte ao Passo 1. 4.5.3.3. Cruzamento Sequencial Construtivo Modificado (GEN-SCX-BASED). Como mencionado o PCVPQ é um subproblema peculiar do PCV. As rotas manipuladas nem sempre têm todos os vértices. No passo 4 do SCX há uma escolha do próximo 𝑝, e esse 𝑝 pode não existir no máximo em um dos pais. Uma adaptação é feita, segue abaixo o procedimento: Passo 1: Inicie no vértice 1 (𝑝 = 1), concatene-o a solução. Passo 2: Busque em ambos os pais um vértice ainda não visitado que aparece depois de 𝑝. Considere o nó 𝛼 e 𝛽 encontrados respectivamente no primeiro e segundo pai. Se um dos dois não existir, iguale o que não foi encontrado ao que foi encontrado, ou seja, os dois vão ter o mesmo valor (𝛼 = 𝛽). Passo 3: Caso houve sucesso na busca de 𝛼 e 𝛽, escolha o que tem melhor custo 𝐶𝑝𝛼 < 𝐶𝑝𝛽 e incorpore a solução e atualize 𝑝 com o nó escolhido. Passo 4: Se 𝑝 foi herdado do primeiro pai, copie os vértices não visitados depois de 𝑝 do segundo pai para o cromossomo em construção. Caso contrário a copia é feita a partir do primeiro pai. Passo 5: Insira os vértices ainda não visitados em ordem no cromossomo filho..

(33) Capítulo 4. Algoritmos de Solução para o PCVPQ. 4.5.4. 32. Mutação. Após a fase de cruzamento, é possível que as soluções representadas pelos novos cromossomos não sejam válidas, assim é necessário repará-las. O procedimento de reparação de solução é descrito na seção 4.5.6. Para a mutação, um limite de admissibilidade, 𝑎𝑙𝑖𝑚 , é considerado para mutação. Esse valor é um parâmetro para o algoritmos genéticos e é definido no intervalo [0, 1]. Para cada cromossomo um valor nesse intervalo é definido de forma uniforme. Se este for maior que 𝑎𝑙𝑖𝑚 , o cromossomo sofre mutação. Dessa forma, a taxa de mutação é 1 - 𝑎𝑙𝑖𝑚 . A mutação consiste na escolha de uma posição randômica, 𝑖, do cromossomo e atribuir 𝐿𝑒 [𝑖] = 1 se o valor de 𝐿𝑒 [𝑖] for 0, e 𝐿𝑒 [𝑖] = 0, caso 𝐿𝑒 [𝑖] for 1. A cada iteração os cromossomos da próxima geração são escolhidos via roleta dentre os cromossomos novos e antigos, dando origem a uma nova população de tamanho |𝑃 |.. 4.5.5. Critério de Parada. O critério de parada é baseado na quantidade máxima de avaliações da função objetivo realizada na execução, assim quando essa quantidade é atingida a execução do algoritmo é interrompida.. 4.5.6. Procedimento de Reparação da Solução O procedimento de reparação consiste em duas partes:. ∙ Reparar a rota para garantir a restrição de quota definida na inequação 3.8. ∙ Reparar os embarques. O Algoritmo 3 mostra o reparo de um cromossomo. O reparo da rota é feito nas linhas de 2-11. Para garantir que coleta ou soma de bônus mínimo, 𝑇 , seja alcançada, novas cidades são incluídas na rota até que a coleta mínima seja atingida. O embarque é reparado nas linhas 12 e 13, onde os embarques que violam a restrições do problema são removidos, por exemplo, 𝐿𝑒 [𝑖] é definido como 0 se a solução for inválida devido ao embarque de um passageiro na cidade 𝐿𝑟 [𝑖]. No pior caso, todos os embarques são removidos, garantindo assim que todo cromossomo possa ser reparado apesar da qualidade da solução que o mesmo representa. Para melhorar a qualidade da solução o cromossomo reparado é submetido à uma heurística de carregamento descrita na seção 4.5.7.. 4.5.7. Heurística de Carregamento. O objetivo da heurística de carregamento é melhorar a qualidade de uma solução representada por um cromossomo. Sua estratégia é explorar a capacidade máxima do.

(34) Capítulo 4. Algoritmos de Solução para o PCVPQ. 33. Algoritmo 3: Procedimento de reparo de um cromossomo. 1 Reparar(cromossomo 𝐴) 2. se. |𝐴| ∑︀. 𝐵[𝐿𝑟 [𝑖]] < 𝑇 então. 𝑖=1 3 4. 5 6 7 8 9 10. # Repara a rota para garantir a coleta da quota mínima Defina uma lista 𝑍 com cidades que não estão em 𝐴 em ordem decrescente de bônus 𝑗←1 repita |𝐴| ← |𝐴| + 1 𝐿𝑟 [|𝐴|] ← 𝑍[𝑗] 𝑗 ←𝑗+1 até. |𝐴| ∑︀. 𝐵[𝐿𝑟 [𝑖]] ≥ 𝑇 ;. 𝑖=1 11 12 13. fim verficar 𝐴 em busca de embarques que violam as restrições remover todos os embarques que violam restrições. veículo para minimizar o custo da viajem embarcando passageiros que não violem as restrições. O objetivo é obter o melhor carregamento possível do carro para um trajeto pré-estabelecido. O procedimento Carregar tenta inserir um passageiro em cada cidade da rota preservando o atendimento das restrições do problema. A heurística é descrita no Algoritmo 4. Algoritmo 4: Heurística de carregamento. 1 2 3 4 5 6 7 8 9. Carregar(cromossomo 𝐴) para 𝑖 ← 1 até |𝐴| faça se 𝐿𝑒 [𝑖] = 0 então 𝐿𝑒 [𝑖] ← 1 se 𝐿𝑒 [𝑖] viola alguma restrição então 𝐿𝑒 [𝑖] ← 0 fim fim fim. A arquitetura geral dos algoritmos genéticos é descrita no pseudocódigo 5. Ao gerar a população inicial, para garantir que as soluções representadas pelos seus cromossomos sejam válidas, é necessário aplicar o procedimento de reparação para cada cromossomo de 𝑃 (linhas 4-6). Após a fase de reprodução, linhas 7-9, as soluções representadas pelos dois novos indivíduos criados são reparadas pelo Algoritmo 3, uma vez que ao alterar a rota ou a configuração de embarque, a solução pode se tornar inválida..

(35) Capítulo 4. Algoritmos de Solução para o PCVPQ. 34. Algoritmo 5: Arquitetura do algoritmo genético. 1 GEN(𝐺 = (𝑁, 𝑀, 𝐵), |𝑃 |, 𝑎𝑣𝑎𝑙𝑠, 𝑎𝑙𝑖𝑚 , taxa de cruzamento) 2 𝑛𝑖𝑠 ← taxa de recombinação ×|𝑃 | 3 𝑃 ← população inicial de tamanho |𝑃 | 4 para cada 𝐶 ∈ 𝑃 faça 5 Reparar(𝐶) 6 fim 7 repita 8 𝐿𝑖𝑛𝑑𝑠 ← selecione 𝑛𝑖𝑠 indivíduos de 𝑃 via roleta 9 para cada 𝐴, 𝐵 ∈ 𝐿𝑖𝑛𝑑𝑠 faça 10 𝐴′ , 𝐵 ′ ← Cruzamento(𝐴, 𝐵) 11 Mutacao(𝐴′ ) 12 Mutacao(𝐵 ′ ) 13 Reparar(𝐴′ ) 14 Carregar(𝐴′ ) 15 Reparar(𝐵 ′ ) 16 Carregar(𝐵 ′ ) 17 𝑃 ← 𝑃 ∪ {𝐴′ , 𝐵 ′ } 18 fim 19 𝑃 ← selecione |𝑃 | indivíduos de 𝑃 20 até que o número de avaliações seja igual a 𝑎𝑣𝑎𝑙𝑠; 21 retorne a melhor solução 𝑆 ∈ 𝑃. 4.6. Algoritmos Meméticos. Os operadores de cruzamentos descritos na seção 4.5.3.1, também são usados nesses algoritmos, dando origem a três versões de algoritmo memético: MEM-SPLIT, MEM-SCX e MEM-SCX-BASED. Para criar os algoritmos meméticos uma função de melhoria da solução foi adicionada à da arquitetura do genético (pseudocódigo 5). Para instâncias simétricas o Lin-Kernighan é usado como procedimento de melhoria, já para as instâncias assimétricas o 2-opt é adotado, uma vez que o Lin-Kernighan é uma boa heurística para o PCV simétrico (LIN; KERNIGHAN, 1973). O pseudocódigo geral do algoritmo memético é descrito no Algoritmo 6. Após a reprodução e reparo das soluções, linhas 7-11, a função de melhoria é aplicada às duas soluções criadas a cada reprodução..

(36) Capítulo 4. Algoritmos de Solução para o PCVPQ. Algoritmo 6: Arquitetura do algoritmo memético. 1 Men(𝐺 = (𝑁, 𝑀, 𝐵), |𝑃 |, 𝑎𝑣𝑎𝑙𝑠, 𝑎𝑙𝑖𝑚 , taxa de cruzamento) 2 𝑛𝑖𝑠 ← taxa de recombinação ×|𝑃 | 3 𝑃 ← população inicial de tamanho |𝑃 | 4 para cada 𝐶 ∈ 𝑃 faça 5 Reparar(𝐶) 6 fim 7 repita 8 𝐿𝑖𝑛𝑑𝑠 ← selecione 𝑛𝑖𝑠 indivíduos de 𝑃 via roleta 9 para cada 𝐴, 𝐵 ∈ 𝐿𝑖𝑛𝑑𝑠 faça 10 𝐴′ , 𝐵 ′ ← Cruzamento(𝐴, 𝐵) 11 Mutacao(𝐴′ ) 12 Mutacao(𝐵 ′ ) 13 Reparar(𝐴′ ) 14 Carregar(𝐴′ ) 15 Reparar(𝐵 ′ ) 16 Carregar(𝐵 ′ ) 17 𝐴′ ← Melhoria(𝐴′ ) 18 𝐵 ′ ← Melhoria(𝐵 ′ ) 19 𝑃 ← 𝑃 ∪ {𝐴′ , 𝐵 ′ } 20 fim 21 𝑃 ← selecione |𝑃 | indivíduos de 𝑃 22 até que o número de avaliações seja igual a 𝑎𝑣𝑎𝑙𝑠; 23 retorne a melhor solução 𝑆 ∈ 𝑃. 35.

(37) 36. 5 Experimentos e Resultados Esse capítulo descreve os experimentos computacionais, assim como a metodologia empregada no mesmo. Os resultados alcançados também são descritos aqui.. 5.1. Experimentos Computacionais. Os experimentos computacionais foram desenvolvidos em um computador com processador Intel(R) Core(TM) i7-4790 CPU de 3.60GHz, 16GB de RAM, e sistema operacional Linux Ubuntu 14.04 LTS 64-bit. Os algoritmos desenvolvidos foram implementados em C++. O compilador usado foi o GNU C++ Compiler (g++) versão 4.8.4, e os argumentos passados para o compilador no momento da construção do executável foram -O3, para otimização do executável e -std=c++11 para especificar que a versão do C++.. 5.1.1. Sobre o Banco de Instâncias. As instâncias são divididas em simétricas e assimétricas. As simétricas foram construídas a partir de uma adaptação das instâncias obtidas no trabalho de Calheiros (2015) para o PCV-Pa. As assimétricas foram retiradas e adaptadas da TSPLIB (REINELT, 1991). Segue abaixo a estrutura das instâncias geradas para o problema aqui proposto: ∙ 𝑛 – Número de cidade (vértices); ∙ 𝑝 – Número de pessoas que solicitam carona; ∙ 𝑅 – Número máximo de passageiros permitidos no veículo; ∙ 𝐷 – Matriz de custos entre as cidades de ordem 𝑛, onde cada 𝑑𝑖𝑗 ∈ 𝐷 representa o custo de deslocamento da cidade 𝑖 para a cidade 𝑗; ∙ Uma lista com 𝑝 pares de cidades definindo a origem e destino de cada possível passageiro; ∙ Uma lista com 𝑝 entradas que definem quanto no máximo cada solicitante de carona está disposto a pagar pela viagem; ∙ 𝑇 – Bônus total a ser coletado, ou seja a quota mínima; ∙ Uma lista com 𝑛 entradas onde cada uma representa o bônus associado a cada cidade..

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

foram realizadas: Centro Cirúrgico, Unidade de Tratamento In -. tensivo e Berçário, mostrando, de certa forma, pacientes

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Esta pesquisa discorre de uma situação pontual recorrente de um processo produtivo, onde se verifica as técnicas padronizadas e estudo dos indicadores em uma observação sistêmica

No sentido de reverter tal situação, a realização deste trabalho elaborado na disciplina de Prática enquanto Componente Curricular V (PeCC V), buscou proporcionar as