• Nenhum resultado encontrado

4. MÉTODOS DE SOLUÇÃO PROPOSTOS

4.3. RESOLUÇÃO DO PROBLEMA INTEGRADO

A ideia principal do algoritmo proposto para resolver o problema integrado é gerar inicialmente uma solução inicial para o 3L-CVRP usando o algoritmo de Clarke & Wright, verificando, a cada nova união de roteiros, a factibilidade do padrão de carregamento utilizando o algoritmo de George & Robinson adaptado.

Para tal, foi utilizado como base o trabalho de Bortfeldt (2012) que faz a verificação do carregamento somente nos melhores resultados da Busca Local, a fim de otimizar o tempo computacional. Foi também utilizada a estratégia ii) do trabalho de Junqueira e Morabito (2015), de gerar o padrão de carregamento durante o roteamento.

Para isso será adotada a estratégia routing first, packing second, que é amplamente utilizada na literatura para tratar o 3L-CVRP. Basicamente, ela consiste em primeiro determinar o roteamento e a sequência de clientes e, em seguida, verificar a factibilidade do padrão de carregamento para cada um dos roteiros gerados.

Os algoritmos de Clarke & Wright e George & Robinson foram escolhidos para gerar a solução inicial do problema de roteamento e do problema de carregamento, respectivamente, por se tratarem de heurísticas já consolidadas na liteartura, mostrando que as mesmas apresentam bons resultados com tempo computacional hábil.

O Algoritmo ILS foi escolhido por ser uma meta-heurística fácil de ser implementada e com bons resultados para problemas de otimização combinatória de maneira geral.

O ALNS foi escolhido pois verificou-se que não existem implementações para o 3D- CLP utilizando essa meta-heurística.

Após gerada a solução inicial, aplica-se a meta-heurística ILS (Seção 4.1.1) para tentar melhorar a solução inicial explorando a vizinhança desta solução. Novamente, para a verificação da factibilidade do carregamento, utiliza-se o algoritmo de George & Robinson adaptado (Seção 4.2.1) e, nas situações em que não for factível a solução obtida pelo algoritmo de George & Robinson adaptado, aplica-se a meta-heurística ALNS (Seção 4.2.2).

Em uma tentativa de melhorar o tempo computacional para resolução de cada instância, foi adotada a estratégia de, ao gerar a solução inicial, somente verificar a factibilidade do carregamento no momento em que a demanda dos clientes ultrapassar a metade do volume total do veículo. Dessa maneira, a verificação da factibilidade do carregamento para a solução inicial é feita menos vezes, e há, então, um ganho no tempo computacional.

O Algoritmo 5 gera uma solução inicial para o 3L-CVRP. Nesse algoritmo, adaptou-se o algoritmo de C&W para que seja feita uma verificação de factibilidade do problema de carregamento utilizando o algoritmo de G&R adaptado para cada novo cliente inserido no roteiro. Caso esta inserção seja factível, os roteiros são unidos. Após obtida a solução inicial do 3L-CVRP gerada pelo Algoritmo 5, aplica-se a meta-heurística ILS apresentada no Algoritmo 6 na tentativa de encontrar novas soluções, fazendo uma busca na vizinhança utilizando as estruturas de vizinhança 2-opt, 3-opt, OR-opt, 1PM, 2PM, 3PM e Cross-Exchange.

Para a melhor solução da Busca Local encontrada no Algoritmo 6, o Algoritmo 4 (Verificar Carregamento) é executado para então verificar a factibilidade do carregamento. No Algoritmo 4, e representam o volume total do carregamento. A variável é usada pela meta-heurística ALNS para destruir uma parte da solução na tentativa de factibilizar o carregamento. Observe que os pesos e , que são variáveis do ALNS, são inicializados no Algoritmo 6 para que em cada iteração do ILS, o ALNS já priorize os métodos que tiveram melhores resultados nas iterações anteriores.

Resumidamente, o Algoritmo 5 gera uma solução inicial para o 3L-CVRP e, na sequência, o Algoritmo 6 é executado com o objetivo de realizar as buscas nas vizinhanças. O Algoritmo 4 é executado para verificar a factibilidade do carregamento para cada melhor resultado da Busca Local.

Algoritmo 4: Verificar Carregamento

Entrada: Um conjunto de clientes com posições conhecidas; um conjunto de itens/caixas disponíveis para serem carregados dentro dos veículos, com tipos, dimensões e quantidades (por cliente) conhecidos.

Saída: Factibilidade ou não do carregamento.

1. = Solução inicial gerada pelo algoritmo de George & Robinson adaptado (Seção 4.2.1). 2. se não for factível então

3. repita

4. Seleciona os métodos de destruição e reparação onde ∈ Ω e ∈ Ω usando e

5. = ( ( )).

6. Atualiza e

7. se todos os carregamentos forem factíveis

8. Retorna Verdadeiro.

9. fim se

10. =

11. até condição de parada ou carregamento factível 12. se pelo menos um carregamento não for factível

13. Retorna Falso.

14. fim se

Algoritmo 5: Solução inicial do 3L-CVRP - Adaptação do algoritmo de Clarke & Wright

Entradas: Um conjunto de clientes com posições e demandas conhecidas, e que devem ser visitados por uma frota homogênea de veículos com dimensões conhecidas e capacidade (volumétrica); um conjunto de itens/caixas disponíveis para serem carregados dentro dos veículos, com tipos, dimensões e quantidades (por cliente) conhecidos.

Saídas: Uma solução factível para o 3L-CVRP. 1. Crie um roteiro para cada cliente.

2. para todos os pares de clientes faça

3. Calcule os valores das economias e coloque-os em uma lista. 4. fim para

5. Coloque a lista em ordem não crescente dos valores das economias. 6. enquanto for possível unir roteiros faça

7. Inicie no par de clientes com o maior valor de economia.

8. Se a capacidade do veículo não foi excedida e o volume total dos itens for maior que a metade do volume total do veículo.

9. Executa o algoritmo de George & Robinson adaptado (Seção 4.2.1).

10. Se carregamento factível

11. Junte os roteiros.

12. Remova da lista o par de clientes e a respectiva economia.

13. fim se

14. fim se

Algoritmo 6: ILSALNS para o 3L-CVRP

Entrada: Uma solução inicial para o 3L-CVRP gerada pelo Algoritmo 5. Saída: Uma solução possivelmente melhorada para o 3L-CVRP. 1. ∗ = Solução Inicial do 3L-CVRP.

2. = (1,...,1); = (1,...,1).

3. Seja ={2-opt, 3-opt, 1-PM, 2-PM}. 4. para = 1, … , faça

5. para todos os operadores de Busca Local ∈ faça

6. ∗ = Aplique o operador de Busca Local

7. fim para

8. para = , … , faça

9. Perturbação (escolha aleatória entre OR-opt(2,3), 3-PM e Cross-Exchange).

10. para todos os operadores de Busca Local ∈ faça

11. = ∗

12. para todos os nós j na solução faça

13. Aplique o operador de Busca Local ∈ para o nó j.

14. se ∗ é melhor que

15. = ∗.

16. se não se (

) maior que um número aleatório entre 0 e 1

17. = ∗.

18. fim se

19. fim para

20. Executa o Algoritmo 4 para o melhor movimento da Busca Local .

21. se carregamento for factível para

22. ∗ =

23. fim se

24. fim para

Documentos relacionados