• Nenhum resultado encontrado

PROBLEMA DE ESCALONAMENTO DE CONDUTORES: UMA METODOLOGIA HEURÍSTICA PARA CONSTRUÇÂO DO PROBLEMA DE COBERTURA DE CONJUNTOS

N/A
N/A
Protected

Academic year: 2021

Share "PROBLEMA DE ESCALONAMENTO DE CONDUTORES: UMA METODOLOGIA HEURÍSTICA PARA CONSTRUÇÂO DO PROBLEMA DE COBERTURA DE CONJUNTOS"

Copied!
11
0
0

Texto

(1)

PROBLEMA DE ESCALONAMENTO DE CONDUTORES: UMA

METODOLOGIA HEURÍSTICA PARA CONSTRUÇÂO DO PROBLEMA DE

COBERTURA DE CONJUNTOS

Edilson Costa de Castro

Universidade Estadual de Maringá - Departamento de Informática

Av. Colombo, 5790, CEP 87020-290, Maringá-PR

e-mail: eccastro@din.uem.br

Ademir Aparecido Constantino

Universidade Estadual de Maringá - Departamento de Informática

Av. Colombo, 5790, CEP 87020-290, Maringá-PR

e-mail: ademir@din.uem.br

Silvio Alexandre de Araujo

Departamento de Ciências de Computação e Estatística (DCCE)

Universidade Estadual Paulista (UNESP)-São José do Rio Preto – SP

e-mail: saraujo@ibilce.unesp.br

Candido Ferreira Xavier de Mendonça Neto

Universidade Estadual de Maringá - Departamento de Informática

e-mail: xavier@din.uem.br

Resumo: O problema de escalonamento de condutores é um dos problemas clássicos da área de

Pesquisa Operacional, tem como ambiente empresas de transporte rodoviário urbano de passageiros (transporte coletivo); e consiste em distribuir de forma eficiente o quadro de viagens a serem cumpridas pela empresa entre os condutores disponíveis. Uma das abordagens mais utilizadas na literatura é modelar este problema como um problema de cobertura de conjuntos (set covering). Porém, a maioria dos trabalhos iniciam com o PCC já construído, ou no máximo apresentam técnicas que se limitam a filtrar parte das colunas do problema, sem se preocuparem com as linhas do PCC (que, no caso do escalonamento de condutores, corresponderiam aos pieces - ou blocos de viagens). Este trabalho parte da hipótese de que a formação das linhas do set covering influi no resultado final da resolução do problema de escalonamento de condutores e, conseqüentemente, uma boa metodologia de construção do PCC poderia contribuir para que algoritmos de resolução de PCC’s obtenham melhores resultados. A metodologia aqui apresentada para este fim utiliza a meta-heurística Simulated Annealing, e os resultados obtidos nos testes preliminares apontam para a veracidade da hipótese em que se baseia este trabalho.

Palavras-chave: escalonamento de condutores, transporte de passageiros (coletivo), cobertura de

conjuntos, geração de linhas e colunas.

Abstract: The crew scheduling problem is a classic Operational Research problem that arises in

public transportation companies, which consists in attributing efficiently a set of trips to be carried out by the company to its drivers. A common resolution approach in the literature consists in to model this problem as a set covering problem (SCP). However, most of papers consider the SCP built previously, or simply apply some filtering technique over the problem’s columns, but don’t include the rows (pieces – blocks of trips) generation. This work considers the hypothesis of a set covering’s rows (and columns) generation technique should help the SCP resolution algorithms to obtain better results. The presented SCP construction is based on Simulated Annealing meta-heuristic, and the obtained results appoint to the veracity of hypothesis which is considered in this work.

(2)

Keywords: crew scheduling, public transportation, set covering, problem construction, rows and

columns generation.

1 Introdução

O transporte rodoviário urbano de passageiros é a modalidade de transporte rodoviário utilizado para a movimentação da população nos centros urbanos das cidades, periferia e regiões metropolitanas, sendo caracterizado por apresentar linhas regulares de curta distância, com horários e itinerários bem definidos e de grande freqüência. Nesta modalidade de transporte, um veículo pode chegar a realizar até 40 viagens por dia. Geralmente, é um serviço prestado por uma empresa privada, que dispõe de um determinado número de ônibus e condutores (geralmente acompanhados de cobradores) para cumprir o seu quadro de viagens.

O problema de escalonamento de condutores é um problema clássico da área de Pesquisa Operacional, e tem como ambiente as empresas de transporte rodoviário urbano de passageiros; tal problema consiste em distribuir de maneira eficiente o quadro de viagens a serem cumpridas pela empresa entre os condutores disponíveis, formando suas escalas diárias de trabalho. Em geral, essa eficiência refere-se ao custo da mão-de-obra, que, por sua vez, é afetado pelo número de condutores, quantidade de horas-extras, períodos ociosos pagos, etc.

2 Descrição do problema e formulação matemática

O escalonamento de condutores tem estreita relação com o problema de escalonamento de veículos, responsável por determinar a distribuição do quadro de viagens entre os ônibus da frota. Grande parte dos trabalhos nesta área efetua o (ou consideram a resolução do) escalonamento de veículos antes do

de condutores (por exemplo: [CAS02], [LI02], [MAU04], [MAY96], [MIT85], [PAI93], [WRE85], [WRE95]). Neste caso, o problema de escalonamento de condutores pode ser modelado como um problema de cobertura de conjuntos (PCC) – set covering. A formulação matemática do PCC é a seguinte:

onde:

− I é o conjunto de linhas a serem cobertas;

− J é o conjunto de colunas para cobertura das linhas;

⎩⎨

=

contrário

caso

,

0

linha

a

cobre

coluna

a

se

,

1

j

i

a

ij

⎩⎨

=

contrário

caso

,

0

solução

na

stá

coluna

a

se

,

1

j

e

x

j − cj é o custo da coluna j.

No caso do escalonamento de condutores, as linhas do problema são as viagens a serem executadas, e cada coluna representa uma – possibilidade de – escala de trabalho de um condutor, que cobre (executa) uma pequena quantidade de linhas do problema. A mesma linha pode ser coberta por várias colunas no modelo, sendo que a melhor solução consiste no subconjunto de colunas que cobre cada uma das linhas ao menos uma vez, com o menor custo possível. Possíveis redundâncias (mais de uma

∈J j j j

x

c

Min

(1)

J j j ij

x

a

1

:

s.a

iI (2)

}

1

,

0

{

j

x

j

J

(3)

(3)

coluna cobrindo uma linha na solução) devem ser eliminadas após a resolução (estas redundâncias poderiam ser evitadas, substituindo-se no modelo a desigualdade (2) por uma igualdade. Desta forma, teríamos um problema de partição de conjuntos - set partitioning. Porém, muitos trabalhos optam pelo set covering a fim de facilitar o processo de resolução).

O custo cj de uma coluna j corresponde ao valor pago pela empresa pelo cumprimento de cada escala;

podendo variar, por exemplo, de acordo com a quantidade de horas-extras contidas na escala (outras variáveis podem entrar no cálculo de cj, dependendo da modelagem que se queira adotar).

Nos métodos de resolução existentes na literatura, costuma-se agrupar as viagens em blocos ou pieces, o que diminui consideravelmente o tamanho do problema (número de linhas). Na verdade, estes pieces são resultado da quebra das escalas de veículo geradas anteriormente. Assim, um piece é um bloco de viagens a serem executadas pelo mesmo condutor, guiando o mesmo veículo.

A modelagem do problema de escalonamento desta forma permite sua resolução pelos vários algoritmos destinados ao PCC existentes na literatura (exemplos:

[BEA94]

,

[CAP95]

, [JAC94], [WRE95]).

3 Algoritmo de construção do problema de cobertura de conjuntos

Grande parte dos trabalhos a respeito de escalonamento de veículos e condutores - e muito mais aqueles que tratam do PCC especificamente - iniciam seus estudos a partir do estágio onde o modelo já está montado, com suas linhas e colunas definidas, sem ocuparem-se da origem destas linhas e colunas. Alguns trabalhos vão um pouco além, e aplicam métodos que procuram trabalhar com apenas um subconjunto de colunas do PCC construído, a fim de facilitar a resolução.

Em [CAS02], colunas consideradas ineficientes são simplesmente retiradas do modelo, a não ser que alguma linha não esteja coberta suficientemente para permitir tal exclusão.

Em [MAU04], o método para a resolução de um PCC consiste em, a partir de um sub-PCC inicial (com apenas algumas das colunas do PCC original), utilizar-se programação linear na obtenção de um direcionamento para a formação de um novo sub-conjunto de colunas (e, conseqüentemente, um novo sub-PCC); e assim sucessivamente, até obter-se um sub-conjunto de colunas satisfatório segundo critérios estabelecidos. Este último sub-PCC é então resolvido utilizando-se programação linear inteira, obtendo-se assim uma solução para o PCC original (completo).

Outra abordagem, sugerida em [MAY96], consiste em realizar uma estimativa do custo das escalas de condutor já na etapa de escalonamento dos veículos, incluindo essa estimativa no cálculo do custo das escalas de veículo. A técnica utilizada tenta direcionar a formação das escalas de veículo de forma a reduzir períodos ociosos pagos nas escalas de condutor, a serem geradas posteriormente.

Porém, o presente trabalho explora não só a possibilidade de se trabalhar com as colunas do PCC, mas também com suas linhas. Partindo da hipótese de que, quanto maior o número de colunas que cobre cada linha, maior a probabilidade de se encontrar uma boa solução, é proposta a utilização de um algoritmo heurístico, entre as etapas de escalonamento de veículos e de condutores, que procura quebrar as escalas de veículo em pieces de maneira a gerar um PCC onde todas as linhas sejam cobertas por um número razoável de colunas. Ou seja, procura-se evitar que linhas sejam cobertas por poucas colunas, permitindo ao posterior algoritmo de escalonamento de condutores ter mais possibilidades de encontrar uma boa solução; mas, ao mesmo tempo, evitando a geração de colunas desnecessárias (que cobrem linhas já razoavelmente cobertas), o que aumentaria o tamanho do PCC sem necessidade.

(4)

3.1 Quebra em pieces utilizando algoritmo de Djikstra

A metodologia aqui apresentada baseia-se na idéia proposta em [MAY96] para a quebra em pieces; a qual se utiliza de um grafo de formação de pieces H(I, C), onde o conjunto I de vértices corresponde aos intervalos (possivelmente nulos) entre cada par de viagens consecutivas que formam a escala, além dos pontos s e t, que representam, respectivamente, o início e o fim da mesma; a existência de uma aresta

(

x

,

y

)

C

indica a possibilidade de se formar um piece com as viagens entre os intervalos x e y.

O custo cxy associado a cada arco é relativo ao intervalo de trabalho txy compreendido entre os

intervalos x e y; cxy é dado por:

⎪ ⎩ ⎪ ⎨ ⎧ > ∞ < = casos demais nos , se , se xy máx xy min xy min xy t P t P t , P c

,

onde Pmin e Pmáx são, respectivamente, os limites mínimo e máximo de comprimento dos pieces,

estabelecidos pelo usuário. Observe que é permitido que um piece tenha um comprimento menor que Pmin; porém, sua utilização nas escalas é dificultada pelo artifício de se atribuir a estes pequenos pieces

um custo maior do que o seu comprimento (no caso, o próprio parâmetro Pmin). A figura abaixo mostra

um exemplo do grafo de formação de pieces para uma escala de 5 viagens.

Figura 1 - Exemplo de um grafo de formação de pieces

Encontrar a melhor divisão de pieces para a escala em questão seria equivalente a encontrar o caminho de custo mínimo no grafo H acima. Esta solução pode ser dada, por exemplo, pelo algoritmo de Dijkstra. O objetivo principal de se modelar o problema da quebra em pieces desta forma é procurar quebrar as escalas de veículo nos pontos de maior intervalo entre as viagens, evitando assim que esses intervalos se tornem períodos ociosos dentro das escalas de condutor, mais adiante.

Note que os pieces constituirão as linhas do problema de cobertura de conjuntos, e as colunas (escalas de condutor) são formadas pelas combinações destes pieces que não apresentem sobreposição de horários ou violações às regras da metodologia adotada, como leis trabalhistas ou restrições impostas pela empresa de transporte. Normalmente, uma escala de condutor é formada pela junção de um a quatro pieces de trabalho.

Porém, nos experimentos realizados com esta maneira de montar o PCC, notou-se que alguns pieces são cobertos por um número muito reduzido de colunas. Inclusive, se não for dada a oportunidade de se formar escalas de condutor com apenas um piece (o que ocorre em [MAY96]), alguns deles poderão não ser cobertos por nenhuma coluna, inviabilizando o processo de escalonamento.

Por exemplo, considere as escalas de veículo e os respectivos pieces na Figura 2. (Obs.: o tempo de permanência dos veículos no local de destino das viagens – quando ocorre o embarque e desembarque de passageiros e a troca de condutores, se houver – está incluído no tempo de duração das mesmas).

(5)

Figura 2 – Exemplo de uma quebra em pieces utilizando o algoritmo de Dijkstra

Sendo Dijkstra um algoritmo exato, caso ele encontre duas escalas idênticas como as mostradas na figura acima, ele quebrará as escalas em pieces de maneira também idêntica.

O problema é que, com os pieces arranjados desta forma, não é possível formar nenhuma escala de condutor, pois:

− o intervalo de 15 minutos (12:00 – 12:15) entre os pieces é muito pequeno para formar um intervalo de almoço, que normalmente é de, no mínimo, uma hora.

− se considerarmos o intervalo entre os pieces como um período apenas para troca de veículos, obteríamos um período contínuo de trabalho muito extenso: 7 horas e 15 minutos; sendo que, geralmente, não se deve ultrapassar 6 horas.

Dessa forma, seriam necessários 4 condutores para cobrir estes 4 pieces de trabalho.

3.2 Quebra em pieces utilizando um algoritmo guloso randomizado

Como alternativa, propõe-se o uso de um “algoritmo guloso randomizado”, construído a partir do próprio algoritmo de Dijkstra, para que este apresente formas aleatórias (mas sempre com tendência ao melhor caminho) de divisão de pieces, relaxando um pouco a restrição sobre períodos ociosos dentro dos pieces em favor de um número maior de combinações (escalas).

Dessa forma, uma possível saída apresentada pelo algoritmo de Dijkstra modificado seria a mostrada abaixo. Note que foi possível agora a formação de uma escala combinando dois pieces, também mostrada na figura.

(6)

Com esta nova possibilidade de escala de condutor, cobrindo os pieces 1 e 4, pode-se agora cobrir os 4 pieces do exemplo com apenas 3 condutores, um a menos que no exemplo anterior. Eis um pequeno exemplo do que se pretende conseguir com a metodologia apresentada neste trabalho.

Agora, com um algoritmo gerando várias possibilidades de se quebrar cada escala, é necessário obter uma configuração apropriada de pieces para todo o conjunto de escalas de veículo. Uma metodologia para esta tarefa é apresentada a seguir.

3.3 Construção do problema de cobertura de conjuntos

Aqui será descrito o algoritmo proposto para a construção do problema de cobertura de conjuntos, referente ao problema de escalonamento de condutores a ser resolvido. Este algoritmo efetuará a busca por um conjunto de linhas (pieces) que, ao serem combinados para a geração das colunas (possibilidades de escala de trabalho), sejam cobertos de maneira apropriada. Ou seja, partindo-se da solução obtida utilizando-se o algoritmo de Djikstra (seção 3.1) para cada uma das escalas de veículo, o algoritmo de construção do PCC fará modificações no conjunto de pieces, buscando principalmente aumentar a cobertura de linhas “raras” – ao mesmo tempo evitando aumentar o tamanho do problema desnecessariamente –, segundo discutido anteriormente. Estas modificações são obtidas gerando-se novas quebras de pieces para as escalas de veículo com o algoritmo descrito na seção 3.2.

O algoritmo de construção do PCC proposto baseia-se na meta-heurística Simulated Annealing (SA), apresentada em [KIR83] e [CER85], e que desde então vem sendo utilizada em diversos trabalhos na literatura como método de otimização. Detalhes a respeito desta meta-heurística podem ser encontrados em [OTT89].

De maneira breve, Simulated Annealing é semelhante ao método de busca local comum, com a diferença que o SA aceita, com uma certa probabilidade que decresce ao longo do processo, soluções inferiores à incumbente. Abaixo, uma descrição formal da meta-heurística:

Sejam os parâmetros de entrada:

− MT = tempo limite para execução do algoritmo;

− T = temperatura inicial; este parâmetro influencia na probabilidade de aceitação de soluções inferiores à incumbente;

− TL = número de iterações para cada valor da temperatura (T);

− CF = fator de resfriamento; coeficiente que determina o decréscimo da temperatura a cada TL iterações;

Algoritmo:

construir uma solução factível S, cujo custo é dado por f(S); enquanto não ultrapassado o tempo MT faça

para i = 1 até TL faça

S’ = solução vizinha a S; seu custo é dado por f(S’);

faça δ = f(S’) - f(S);

se δ <= 0

faça S = S’;

se f(S’) < f(S*) então S* = S’; senão

com probabilidade e-δ / T, faça S = S’;

fim-se fim-para

faça T = T . CF;

(7)

Assim como em outras meta-heurísticas, utilizar-se do Simulated Annealing para criar um algoritmo consiste em implementar cada um dos passos da meta-heurística, adequando-a ao problema a ser resolvido. No caso do Simulated Annealing, existem três passos a serem implementados: a geração da solução inicial, a geração da solução vizinha e o cálculo da função f (custo da solução). Para gerar a solução inicial, utilizou-se o algoritmo Dijkstra “original”, como já exposto na seção 3.1. A implementação dos outros dois passos é apresentada nas sub-seções seguintes.

3.3.1 Geração da solução vizinha

Denomina-se uma “solução”, no caso deste algoritmo de construção do PCC, o conjunto de escalas de veículo com todas as suas escalas quebradas em pieces.

O processo de geração da solução vizinha (busca local) não é muito complexo. O algoritmo apenas escolhe algumas das escalas da solução atual S, e gera uma nova quebra em pieces para estas escalas, utilizando o algoritmo Dijkstra “randomizado” descrito na seção 3.2. Cada escala possui uma probabilidade p1 (definida pelo usuário) de ter seus pieces modificados.

(a)

(b)

Figura 4 – Representação de uma solução (a); geração da solução vizinha (b). 3.3.2 Cálculo do custo da solução

Como dito anteriormente, uma das etapas do processo de resolução do problema global de escalonamento aqui proposto, é combinar os pieces em possíveis escalas de trabalho. O custo de um

(8)

conjunto de escalas de veículo quebrado em pieces é calculado a partir do conjunto de escalas de trabalho gerado por ele.

Uma escala de trabalho é formada pela combinação de 1, 2, 3 ou até 4 pieces, e deve obedecer aos seguintes parâmetros (referentes à leis trabalhistas e/ou à certas regras internas da empresa):

Figura 5 - Ilustração dos parâmetros para formação de escalas de condutores

− TC (trabalho contínuo máximo): é o máximo período de tempo que um condutor pode trabalhar sem ter um período de descanso.

− JN (jornada normal de trabalho): é a duração máxima de uma escala de trabalho normal (sem horas extras).

− IDmin e IDmáx (mínimo e máximo intervalo de descanso): delimitam o comprimento de um

período de descanso.

− TV (mínimo intervalo para troca de veículo): é o tempo mínimo estimado para um condutor trocar de veículo, entre um piece e outro.

− HE (máximo período de horas extras): é a quantidade máxima de horas extras que uma escala pode conter. Uma escala não pode ter duração maior do que JN + HE.

Todas as combinações possíveis de 1, 2, 3 e 4 pieces são testadas na geração de escalas de trabalho; porém, em razão das restrições acima e da possível sobreposição de horários, nem toda combinação de pieces é capaz de gerar uma escala.

Depois de gerado o conjunto de escalas de trabalho possíveis, calcula-se o custo de uma solução através da seguinte fórmula:

( )

pieces

(

( ))

(

( ))

f S

=

c

+

k

μ

÷

μ

cob p

+ ×

k

δ

δ

cob p

onde:

− cpieces é o custo referente aos pieces formados, dado pela soma dos custos de cada piece que

forma a solução; considerando cp como sendo custo do piece p, Pmin o parâmetro que indica o

tamanho mínimo desejado para os pieces, e tp a duração do piece p, o custo cp de um piece

pertencente a solução é dado por:

⎪⎩

<

=

casos

demais

nos

,

se

,

min min p piece p

t

P

t

P

c

considerando que, neste ponto do algoritmo, não existirão pieces com comprimento maior que Pmax;

− cob(p) é o número de escalas que cobrem o piece p; assim,

μ

(cob

)

e

δ

(cob

)

representam, respectivamente, a média e o desvio padrão de cob(p); se para algum p pertencente a solução S, cob(p) = 0, então f(S) =

;

(9)

k

μ

e k

δ são coeficientes de correção, cuja função é equilibrar a influência de cpieces,

μ

(cob

)

e

)

(cob

δ

no valor do custo. Estes coeficientes são calculados na geração da solução inicial através das seguintes fórmulas:

)

(cob

c

k

μ

=

pieces

×

μ

;

k

δ

=

c

pieces

÷

δ

(cob

)

sendo todos os parâmetros das fórmulas referentes à solução inicial.

A fórmula de f(S) foi arranjada de tal forma que, ao tentar minimizar o custo da solução, o Simulated Annealing estará procurando uma quebra em pieces que apresente o maior número possível de escalas

de trabalho (maior

μ

(cob

)

), com os pieces sendo cobertos de forma mais homogênea (menor

)

(cob

δ

) e com a menor quantidade de períodos ociosos fazendo parte dos pieces (menor cpieces),

executando assim o propósito apresentado no

início da seção

. Note que a geração das colunas (escalas de trabalho) do PCC é efetuada como parte do cálculo do custo das soluções.

4 Resultados obtidos

Com a finalidade de testar a metodologia proposta, esta foi implementada em um protótipo de sistema de escalonamento, utilizando ambiente de programação Delphi 7.0, banco de dados Interbase, ambos rodando sobre sistema operacional Windows 98. O hardware utilizado consiste em um AMD K6 500Mhz com 64Mb de memória RAM.

Como discutido anteriormente, o algoritmo de construção do problema de cobertura foi concebido como uma etapa intermediária entre o escalonamento de veículos e o de condutores, sendo então necessário utilizar um algoritmo para a geração das escalas de veículo (para geração dos dados de entrada apropriados) e outro para as escalas de condutores (para avaliar a influência do algoritmo de construção no resultado final do escalonamento de condutores). Ambos os algoritmos de escalonamento utilizados são descritos em [CAS03].

Por sua vez, os dados de entrada do algoritmo de escalonamento de veículo foram extraídos de [MAY96], e são referentes a uma empresa de transporte coletivo de Florianópolis/SC

O objetivo dos testes é avaliar, em primeiro lugar, se o algoritmo de construção do PCC cumpre seu objetivo de melhorar a cobertura de pieces “raros” sem aumentar desnecessariamente o tamanho do problema. Isto pode ser observado através dos dados de saída média e desvio padrão de cobertura, conforme discutido na seção 3.3.2. Os resultados aqui apresentados são preliminares e, embora se apresentem favoráveis, é prematura qualquer conclusão definitiva. Em segundo lugar, deve ser verificado se esta melhoria na formulação do problema causa algum efeito sobre o resultado final, ou seja, sobre o processo de escalonamento de condutores.

Uma parte dos resultados obtidos nos testes com o algoritmo de construção do PCC é reproduzida abaixo, sendo que em cada bloco de resultados encontra-se primeiro a parametrização do algoritmo (conforme seções 3.3 e 3.3.1), e depois os resultados obtidos com esta parametrização:

Parâmetros do algoritmo Resultados

T CF TL p1 MT pieces

δ

(cob

)

μ

(cob

)

cpieces

1,1 0,9 40 0,15 7 min 210 165,70 211,98 157,79 217 162,30 204,28 159,20 1,2 0,9 50 0,15`` 15 min 216 173,01 228,41 156,17 1,2 0,9 50 0,15 12 min 221 148,77 194,91 157,26 212 144,74 183,42 158,90 1,2 0,9 50 0,08 12 min 216 151,45 200,67 155,16

(10)

211 166,41 211,31 157,55 1,2 0,75 50 0,08 12 min 213 156,28 212,07 154,09 219 177,04 253,80 152,39 223 160,35 217,52 154,27 215 158,35 209,53 156,00 218 151,34 205,16 154,42 216 153,85 200,43 156,49 215 155,86 215,55 152,67

Tabela 1 - resultados obtidos nos testes com o algoritmo de construção do PCC

Para efeito de comparação, utilizando somente o algoritmo de Dijkstra para efetuar a quebra de pieces (seção 3.1), obteve-se:

1) 205 pieces

δ

(cob

)

= 161,36;

μ

(cob

)

= 193,41; cpieces = 160,83

Resolvendo-se pelo método descrito em [CAS03] as instâncias do PCC geradas por ambas as abordagens (Dijkstra e algoritmo de construção do PCC), foram obtidos os seguintes resultados:: Problema gerado com o algoritmo de Dijkstra:

Tentativa Condutores Custo

1 90 34,33

2 89 34,56

Problemas gerados com o algoritmo de construção do PCC:

Tentativa Condutores Custo

1 86 31,79

2 86 31,88

3 86 32,05

4 86 31,77

O que corresponde a uma redução, em média, de 3,9% no número de condutores utilizados, e de 7,4% no custo dos planos de escalas. Portanto, observa-se uma sensível melhora nos resultados com a aplicação desta metodologia.

5 Conclusão

Nos testes realizados, o algoritmo de construção do problema de cobertura de conjuntos apresentou resultados condizentes com os objetivos traçados: melhorar a cobertura de pieces “raros” sem aumentar desnecessariamente o tamanho do problema. Nota-se pelos resultados obtidos que, depois de estabilizada uma parametrização apropriada para o algoritmo, a média de cobertura das colunas apresenta-se maior do que a conseguida utilizando-se apenas o algoritmo Dijkstra para a formação dos pieces, assim como o desvio padrão é reduzido.

Da mesma forma, quando os problemas gerados por ambas as abordagens são submetidos ao algoritmo de resolução do PCC, os melhores resultados são os obtidos com os problemas gerados pelo algoritmo de construção proposto.

Referências bibliográficas

[BEA94] BEASLEY, J. E. e CHU, P. C. (1994). A Genetic Algorithm for the Set Covering

Problem. Technical Report, The Management School Imperial College. pp. 1-16. London, England.

(11)

[CAP95] CAPRARA, A., FISCHETTI, M. e TOTH, P. (1995). A Heuristic Algorithm for the Set Covering Problem. Technical Report, DEIS, University of Bologna, Italy, pp. 1-24.

[CAS02] CASTRO, J. R. P. (2002). Geração de Escalas de Trabalho em Transporte Urbano de

Passageiros: Uma Formulação Heurística Para a Formulação do Problema de Cobertura de Conjuntos. Dissertação de Mestrado. Universidade Federal de Santa Catarina - UFSC.

[CAS03] CASTRO, E. C.; CONSTANTINO, A. A. (2003). Escalonamento de Veículos e

Condutores em Empresas de Transporte Urbano Rodoviário, Trabalho de Graduação. Universidade Estadual de Maringá – UEM.

[CER85] CERNY, V., (1985). “Thermodynamical approach to the Traveling Salesman

Problem”. Journal of Optimization Theory and Applications, 45, 41-51

[JAC94] JACOBS, L. W. e BRUSCO, M. J. (1994). A Local-Search Heuristic for Large

Set-Covering Problems. Naval Search Logistics, Vol. 42, pp. 1129-1140

[KIR83] KIRKPATRICK, S., GELATT Jr., C. D., and VECCHI, M. P. (1983). "Optimization

by Simulated Annealing", Science, 220, 671-683.

[LI02] LI, J., (2002). Fuzzy evolutionary approaches for bus and rail driver scheduling.

Dissertação de Doutorado. The University of Leeds School of Computing.

[MAU05] MAURI, G. R., (2005). Novas heurísticas para o problema de escalonamento de

tripulações. Dissertação de Mestrado. INPE, São José dos Campos.

[MAY96] MAYERLE, S. F., (1996). Um sistema de apoio à decisão para o planejamento

operacional de empresas de transporte rodoviário urbano de passageiros. Dissertação de Doutorado. Universidade Federal de Santa Catarina - UFSC.

[MIT85] MITRA, G.; DARBY-DOWMAN, K. (1985). “CRU-SHED: A Computer Based Bus

Crew Scheduling System Using Integer Programming”, in: ROUSSEAU J.-M. (ed.), Computer Scheduling of Public Transport 2,

Elsevier

, Amsterdam.

[OTT89] OTTEN, R. H. J. M., van GINNEKEN, L. P. P. P., (1989). “The Annealing

Algorithm”, Kluwer Academic, Boston.

[PAI93] PAIAS, A. M., PAIXÃO, J. (1993). “State space relaxation for set covering problems

related to bus driver scheduling”, European Journal of Operational Research, Vol. 71, No. 2, 303-316.

[WRE85] WREN, A.; SMITH, B. M.; MILLER, A. J. (1985). “Complementary Approach to

Crew Scheduling”, in: ROUSSEAU J.-M. (ed.), Computer Scheduling of Public Transport 2, Elsivier, Amsterdam.

[WRE95] WREN, A.; WREN, D. O. (1995). “A Genetic Algorithm for Public Transport Driver

Referências

Documentos relacionados

No capítulo 4 são abordados os principais resultados obtidos diante das restrições impostas à coleta de dados, bem como a avaliação dos dados obtidos caracterizando os períodos

Assim, o dispositivo CIDR® permite ser reutilizado até três vezes em protocolo de curta duração (cinco dias) associado a um análogo de prostaglandina e ao efeito macho na

Os supercondutores magnéticos, volantes de inércia e os condensadores são apropriados para aplicações que necessitam de grande potência de saída em pouca

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Here, we aim to understand how expression of RA degradation enzymes (Cyp26) can be correlated with RA distribution and functions during amphioxus (B. lanceolatum)

O 6º ano do Mestrado Integrado em Medicina (MIM) é um estágio profissionalizante (EP) que inclui os estágios parcelares de Medicina Interna, Cirurgia Geral,

The challenges of aging societies and the need to create strong and effective bonds of solidarity between generations lead us to develop an intergenerational

O relatório encontra-se dividido em 4 secções: a introdução, onde são explicitados os objetivos gerais; o corpo de trabalho, que consiste numa descrição sumária das