• Nenhum resultado encontrado

Estratégias para a Solução do PRV

2.3 PROBLEMAS DE ROTEAMENTO DE VEÍCULOS

2.3.3 Estratégias para a Solução do PRV

A resolução da maioria das variantes do PRV pode ser feita por meio de métodos exatos: O algoritmo Branch-and-Cut (B&C) tem suas raízes nas ideias dos algoritmos gerais de

Branch-and-Bound (B&B) e de planos de corte (HILLIER & LIEBERMAN, 2006; TAHA,

2008; ARENALES et. al, 2011). Contudo, o problema costuma ser difícil em termos de cálculo, no sentido de que o tamanho ou o tempo de computação exigido para obter uma solução pode se tornar desordenadamente grande.

O algoritmo B&B baseia-se na ideia de uma enumeração inteligente das soluções candidatas a solução ótima inteira de um problema, cuja estratégia é composta por dois passos que geram uma árvore de busca para encontrar a solução ótima. Dessa forma, Hillier e Lieberman (2006) enfatizam que, enquanto o passo branch é responsável por fazer com que árvore cresça, o passo bound é responsavel por limitar esse crescimento.

Já o algoritmo B&C é um método exato que combina as estratégias dos métodos B&B e de planos de cortes com o objetivo de reduzir o número de nós na árvore B&B. Em cada nó da árvore B&B, adicionam-se desigualdades válidas de modo a obter um limitante superior mais apertado no nó, ou seja, um limitante mais exato para o nó antes de ramificá-lo e podá-lo.

Segundo Hillier e Lieberman (2006), o CPLEX é um software de ponta usado largamente para solucionar problemas de Pesquisa Operacional extensos e desafiadores. O CPLEX usa o método B&C para resolver modelos de programação inteira mista (MIP). O procedimento do B&C gerencia uma árvore de pesquisa composta por nós. Cada nó representa um subproblema de programação linear ou quadrática a ser processado; isto é, ser resolvido, ser verificado para a integralidade, e talvez para ser mais analisado. Os nós são chamados ativos se eles ainda não foram processados. Depois que um nó foi processado, ele não está mais ativo.

Ao processar um nó, o CPLEX começa resolvendo o relaxamento contínuo de seu subproblema. Isto é, o subproblema sem restrições de integralidade. Se a solução violar qualquer corte, o CPLEX pode adicionar alguns ou todos eles para o problema do nó e pode resolvê-lo. Esse procedimento é iterativo até que cortes violados não são mais detectados pelo algoritmo. Se em qualquer ponto na adição de cortes o nó torna-se inviável, o nó é podado, ou seja, é removido da árvore.

Caso contrário, o CPLEX verifica se a solução do problema do nó satisfaz as restrições de integralidade. Se assim for, e se o seu valor objetivo é melhor do que o do atual titular, a solução do problema do nó é usada como o novo operador histórico. Se não, a ramificação irá ocorrer, mas primeiro um método heurístico pode ser tentado neste ponto para ver se um novo

operador histórico pode ser inferido a partir da solução LP-QP neste nó, e outros métodos de análise podem ser nele realizados. O ramo, quando ocorre, é realizado em uma variável onde o valor da presente solução viola sua exigência de integralidade. Esta prática resulta em dois novos nós sendo adicionados à árvore para processamento posterior.

Cada nó, após o seu relaxamento ser resolvido, possui um valor de função objectivo ótimo Z. Em qualquer dado ponto do algoritmo, existe um nó cujo valor Z é melhor (menor, no caso de um problema de minimização, ou superior para uma problema de maximização) do que todos os outros. Este valor de Melhor Nó pode ser comparado com o valor da função objetivo da solução estabelecida.

Entretanto, para instâncias maiores, os métodos exatos não conseguem fornecer a solução ótima em tempo hábil e isso dificulta sua aplicação em casos práticos. Nesse sentido, métodos heurísticos são utilizados na maioria das aplicações práticas, pois produzem soluções aproximadas de boa qualidade em tempo reduzido, porém sem garantir a sua otimalidade. Dentre estes, destacam-se as heurísticas construtivas e as heurísticas de refinamento.

As heurísticas construtivas têm por objetivo gerar uma solução viável inicial. Dentre as heurísticas construtivas desenvolvidas para o PRV, pode-se citar a heurística das economias (Savings Heuristics), proposta por Clarke & Wright (1964); a heurística do vizinho mais próximo e a heurística da inserção mais distante. Já as heurísticas de refinamento, por sua vez, iniciam o processo de busca a partir de uma solução já existente, procurando, iterativamente, substituir a solução corrente por uma melhor, contida em sua vizinhança. Laporte e Semet (2002) apresentam mais detalhes referentes às heurísticas construtivas e de refinamento que foram desenvolvidas para o PRV.

A fim de encontrar soluções satisfatórias para estes problemas, metaheurísticas também podem ser usadas. As metaheurísticas consistem em métodos de resolução que regem a interação entre procedimentos de melhoria local e estratégias de alto nível para criar processos capazes de escapar de ótimos locais (GLOVER & KOCHENBERGER, 2002). É um algoritmo que vêm sendo usado para resolver problemas de otimização em vários domínios de problemas para os quais soluções robustas são difíceis ou impossíveis de encontrar usando abordagens tradicionais como a programação matemática (BOUSSAID et. al., 2013).

Em comparação com as heurísticas clássicas, as metaheurísticas efetuam uma pesquisa mais aprofundada do espaço de solução e seguem os princípios de intensificação e diversificação. A intensificação visa explorar com detalhes as áreas mais promissoras do espaço de busca. Já a diversificação evita que uma dada solução fique presa em um ótimo local durante

o processo de busca (LAPORTE & SEMET, 2002). Como resultado, as metaheurísticas são capazes de constantemente produzir soluções de alta qualidade, mesmo consumindo mais tempo que as heurísticas (CORDEAU et. al., 2002). Metaheurísticas podem ser classificados em dois tipos principais:

▪ Busca Local. Nos métodos de Busca Local, o espaço de soluções é explorado através de movimentos, que são aplicados na solução corrente a cada iteração, sempre tentando encontrar um vizinho 𝑠′ melhor que 𝑠. Alguns exemplos desta categoria são: (1) Greedy Randomized Adaptive Search Procedure (GRASP); (2)

Simulated Annealing (SA); (3) Tabu Search (TS); (4) Variable Neighborhood Search (VNS); (5) Iterated Local Search (ILS);

▪ Busca Populacional. Os métodos baseados em busca populacional, mantém um conjunto de soluções consideradas “boas”, para combiná-las com o objetivo de produzir soluções melhores. Alguns exemplos são: (1) Ant Colony Optimization (ACO); (2) Genetic Algorithm (GA).

O sucesso relativo à aplicação de metaheurísticas pode ser observado na prática. Dullaert

et. al. (2007) elencam uma série de trabalhos relativos a aplicações de metaheurísticas para

solucionar problemas reais relacionados aos transportes de cargas, dentre os quais, o trabalho de Alegre, Laguna & Pacheco (2007), que trata da otimização da coleta periódica de matérias- primas para um fabricante de autopeças, ou seja, o problema consiste em atribuir um cronograma de recebimento para cada um dos locais do seu fornecedor e também estabelecer rotas diárias a fim de minimizar os custos de transporte total. A abordagem desenvolvida para este PVRP consiste em uma adaptação de busca de dispersão (Scatter search – SS).

Explicações detalhadas sobre metaheurísticas são encontradas em Osman & Laporte (1996), Glover & Kochenberger (2002), Gendreau & Potvin (2010) e Lopes, Rodrigues & Steiner (2013). Para aplicações em diversas variantes do PRV, consultar Gendreau et. al. (2008).

É importante ressaltar que, sempre que possível, os métodos exatos devem ser utilizados, já que eles fornecem a solução ótima. Além disso, muitos problemas práticos rotineiros envolvem instâncias pequenas, que podem ser rapidamente resolvidas por softwares especializados, cada vez mais eficientes.

Documentos relacionados