• Nenhum resultado encontrado

3 O Problema do Embarque de Passageiros PEP do PCV-MPQ

Este capítulo tem o objetivo de apresentar na seção 3.1 o subproblema do PCV- MPQ, na seção 3.2.1 um método de solução heurístico do subproblema e na seção 3.3 um modelo de programação matemática para o subproblema.

3.1

Subproblema do PCV-MPQ

O Problema do Embarque de Passageiros - PEP é um subproblema do PCV-MPQ, que possui o objetivo de encontrar uma configuração ótima de passageiros de embar- que para uma dada rota.

SejaP um conjunto de passageiros e R uma rota qualquer, o problema consiste em

encontra um subconjunto de passageiros p ⊆ P que proporcione o melhor custo para R. Dentre várias formas de solucionar o PEP, mostra-se a seguir um método de solução.

3.2

Abordagem de solução do PEP

3.2.1

Método heurístico

Em virtude de o embarque representar uma decisão muito importante para esse modelo, desenvolveu-se uma heurística específica para alcançar um bom embarque de uma dada rota, heurística focada em alcançar um bom desempenho em tempo compu- tacional. A heurística é descrita no Algoritmo 1 e denominada de Embarque Heurístico - EH.

O Algoritmo 1, no passo 1 inicializa os parâmetros necessários para o procedimento e, logo após, no passo 2 realiza a definição de uma lista de passageiros ordenados de forma crescente pela quantidade de arestas que utilizará caso seja embarcado, definida

Algoritmo 1EH EH (r, Passageiros)

1. Inicializar:Passageiros, PO, P, PN, P-best;

2.PO ← ordenar(Passageiros);

3. Parai = 1 até tamanho(PO)

4. Se (viavel(r, PO[i])) 5. P ← PO[i]; 6. Senão 7. PN ← PO[i]; 8.P-best ← P 9. BuscaLocalEH (r, P, PN, P-best); 10. RetorneP-best;

porPO. Posteriormente, no passo 3 dá sequência com a execução de um laço, que exe-

cuta até uma quantidade de vezes equivalente ao tamanho da listaPO e define a lista P

de passageiros viáveis a embarcar na rota definida porr, e a lista PN de passageiros não

embarcados, verificando no passo 4 se o passageiroi da lista PO é viável a embarcar na

rotar, se sim, o passo 5 insere o passageiro i na lista P, caso contrário, o passo 7 inseri

o passageiroi na lista PN. O passo 8 atualiza a melhor configuração de passageiros de r, definida por P-best. Logo após, no passo 9 com o objetivo de melhorar a configura-

ção P-best, definida no passo anterior, um procedimento de busca local definido por

BuscaLocalEH, que verifica a troca de passageiros da listaP por passageiros da lista PN é realizado. Ao final, o passo 10 retorna P-best. Na seção 3.2.1.1, explica e ilustra o

procedimento BuscaLocalEH. 3.2.1.1 Busca local EH

O Algoritmo 2 realiza inicialmente, no passo 1 a execução de um laço uma quan- tidade de vezes equivalente ao tamanho da rota definida porr. No passo 2, um laço é

executado uma quantidade de vezes equivalente a quantidade de passageiros da lista

Algoritmo 2BuscaLocalEH BuscaLocalEH (r, P, PN, P-best)

1. Parai = 1 até tamanho(r)

2. Paraj = 1 até quantidade(P, r[i])

3. Parak = 1 até quantidade(PN, r[i])

4. Se (viavel(P[i][j], PN[i][k]))

5. TrocaP[i][j] por PN[i][k];

6. Atualiza (P-best, P, r);

7. TrocaP[i][j] por PN[i][k];

cada iteração do laço do passo 2, o passo 3 executa um laço uma quantidade de vezes equivalente a quantidade de passageiros da lista PN de passageiros não embarcados

emr, que possui origem na localidade i da rota, e verifica a cada iteração, no passo 4 se

é viável a troca do passageiroj que possui origem na localidade i da rota, pertencente a

listaP, pelo passageiro k que possui origem na localidade i da rota, pertencente a lista PN, se sim, realiza a troca dos passageiros no passo 5, atualiza a melhor configuração

de passageiros der definida por P-best a partir de P no passo 6, e realiza a troca dos

passageiros novamente no passo 7 para retornar a configuração inicial da listaP e PN.

A seguir, exemplo de operação do procedimento BuscaLocalEH.

Na Figura 1 temos uma representação de substituição de passageiro definido para embarcar por passageiro não definido para embarcar na rota do caixeiro. Na localidade 1 o caixeiro define para embarcar os passageiros P1, P3 e P5. Com o procedimento BuscaLocalEH a verificação de trocas viáveis de passageiros definidos para embarcar na localidade i por passageiros não definidos para embarcar e que possuem origem

na localidadei é realizada. Com a verificação das trocas viáveis do passageiro P2 por

passageiros definidos para embarcar na localidade 1, tem-se que a troca do passageiro P2 pelo passageiro P3 proporciona melhoria no custo da rota, então, armazena a nova configuração de embarque, definida pelos passageiros P1, P2, P5, P6, P7 e P8.

Figura 1: Exemplo de operação do BuscaLocalEH

3.3

Modelo matemático para o PEP

Com o objetivo de encontrar a melhor configuração possível de passageiros para uma rota qualquer do problema, utilizou um modelo exato de programação mate- mática para embarque de passageiros, definido em (CALHEIROS, 2017). A solução do modelo foi obtida utilizando osolver Gurobi versão 7.5.1.

O modelo utiliza as seguintes variáveis:

• ci: variável real que define o custo do trecho de rotai;

• zij: variável binária, cujo valor será 1 se no trecho de rotai a vaga do carro j foi

utilizada e 0, caso contrário;

• vp: variável binária, cujo valor será 1 se o passageirop utilizou o dado trecho de

rota e 0, caso contrário;

• n: quantidade de localidades da rota. Minimizar: X 1≤i≤n ci− X 2≤j≤K cizij j (j − 1) (3.1) Sujeito à: X org(p)≤i<dst(p) vp= K X w=2 ziw 1 ≤ i ≤ n (3.2) n X i=1 qpiwpp ∈ P (3.3) civpk X w=2 ciziw w (w − 1)qpi 1 ≤ i ≤ n, org (p) ≤ i < dst(p) (3.4) qpi ∈ R ≥ 0 1 ≤ i ≤ n, ∀p ∈ P (3.5) ziw1, ziw∈ R ≥ 0 1 ≤ i ≤ n, 2 ≤ w ≤ K (3.6)

A função objetivo expressa em (3.1) realiza o cálculo do custo do percurso divi- dindo igualmente com todos os ocupantes do veículo, visando minimizar o custo total do caixeiro. A restrição (3.2) proporciona que a quantidade de passageiros embarcados em cada trecho de rota não ultrapasse a quantidade de vagas do carro. As restrições (3.3) e (3.4) garantem que a despesa total de cada passageirop não ultrapasse wp. As

4

Abordagens de solução do