um algoritmo hÍbrido para a soluÇÃo de problemas de...
TRANSCRIPT
UM ALGORITMO HÍBRIDO PARA A SOLUÇÃO DE PROBLEMAS DE
ESCALA DE MOTORISTAS
Alan de Freitas
Dissertação de Mestrado apresentada ao
Programa de Pós-graduação em Engenharia
de Sistemas e Computação, COPPE, da
Universidade Federal do Rio de Janeiro, como
parte dos requisitos necessários à obtenção do
título de Mestre em Engenharia de Sistemas e
Computação.
Orientador: Nelson Maculan Filho
Rio de Janeiro
Setembro de 2011
UM ALGORITMO HÍBRIDO PARA A SOLUÇÃO DE PROBLEMAS DE
ESCALA DE MOTORISTAS
Alan de Freitas
DISSERTAÇÃO SUBMETIDA AO CORPO DOCENTE DO INSTITUTO
ALBERTO LUIZ COIMBRA DE PÓS-GRADUAÇÃO E PESQUISA DE
ENGENHARIA (COPPE) DA UNIVERSIDADE FEDERAL DO RIO DE
JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS PARA A
OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS EM ENGENHARIA DE
SISTEMAS E COMPUTAÇÃO.
Examinada por:
Prof. Nelson Maculan Filho, H.D.R.
Profa. Marcia Helena Costa Fampa, D.Sc.
Prof. Luiz Satoru Ochi, D.Sc.
RIO DE JANEIRO, RJ – BRASIL
SETEMBRO DE 2011
de Freitas, Alan
Um Algoritmo Híbrido para a Solução de Problemas de
Escala de Motoristas/Alan de Freitas. – Rio de Janeiro:
UFRJ/COPPE, 2011.
X, 46 p.: il.; 29, 7cm.
Orientador: Nelson Maculan Filho
Dissertação (mestrado) – UFRJ/COPPE/Programa de
Engenharia de Sistemas e Computação, 2011.
Referências Bibliográficas: p. 43 – 46.
1. Problema de Escalonamento de Motoristas(PEM). 2.
Geração de Colunas. 3. Metaheurísticas. 4. Busca Tabu,
VNS. I. Maculan Filho, Nelson. II. Universidade Federal
do Rio de Janeiro, COPPE, Programa de Engenharia de
Sistemas e Computação. III. Título.
iii
Agradecimentos
Gostaria de agradecer a Deus, que proporcionou coragem e estímulo para continuar
e concluir esse trabalho.
Gostaria de agradecer aos meus pais, Gonçalo e Maria, minha irmã e meu cunhado,
que me ajudaram dando apoio, "puxões"de orelha e que depositaram total confiança
para eu concluir esse trabalho.
Gostaria de agradecer a CNPQ, que pelos meses que contribuiu financeiramente
com os meus estudos no mestrado.
Gostaria de agradecer ao meu orietador e amigo, Nelson Maculan Filho, pela
paciência e atenção comigo, também pelos conhecimentos repassados nas aulas e
reuniões em sua sala.Além disso, pelo estímulo e confiança depositadas em mim, o
que contribuiu para a conclusão desse trabalho.
Gostaria de agradecer a Secretária Acadêmica Solange e Secretária da linha de
otimização Maria de Fátima, que tiveram total paciência e atenção comigo, que me
socorreram em situações de apuros durante o mestrado.
Gostaria de agradecer aos meus colegas de mestrado e de sala de estudo: Brígida
Sartinni, Rogério Tostas, Claudia Susie, Herbert; que contribuiram com conheci-
mento e materiais de apoio; e descontração, nos momentos de tensão e desespero.
Gostaria de agradecer aos meus amigos de mestrado Diana Sasaki, Vinícius Forte,
Vinícius Xavier, Viviane, Carolina, Larissa Spinelli, Renan Vicente, pelas horas de
estudo super descontraída na sala do "marimbondo"e no LUG.
Gostaria de agradecer aos minhas amigas da UERJ, Joyce e Sueni, que me apoiaram
e motivaram nos momentos de desespero no projeto de elaboração desse trabalho.
iv
Resumo da Dissertação apresentada à COPPE/UFRJ como parte dos requisitos
necessários para a obtenção do grau de Mestre em Ciências (M.Sc.)
UM ALGORITMO HÍBRIDO PARA A SOLUÇÃO DE PROBLEMAS DE
ESCALA DE MOTORISTAS
Alan de Freitas
Setembro/2011
Orientador: Nelson Maculan Filho
Programa: Engenharia de Sistemas e Computação
Apresenta-se, nesta tese, uma metodologia híbrida para resolução de Problemas
de Escalonamento de Motoristas(PEM).Na literatura, existem muitas contribuições
sobre o Problema de Escalonamento de Motoristas(PEM), em geral, modelamos esse
problema como um Problema de Particionamento de Conjuntos, que no caso, não
podemos resolvê-lo através de Algoritmos exatos, pois, o PPC é um problema NP-
Completo. Então, uma forma que muitos autores adotam são algoritmos heurísticos
de busca local para resolver problemas com dados reais, mas esses algoritmos podem
se perder no grande espaço de solução gerado pela solução inicial.Então, uma pro-
posta feita para esse trabalho é resolver o problema através de geração de colunas,
com auxílio de algoritmos heurísticos para acelerar o processo de geração de novas
colunas no subproblema princing, obtendo assim, um número reduzido de colunas,
que nos facilita na resolução do problema mestre, que um Problema de Particiona-
mento de Conjuntos(PPC).Para comprovar a eficiência da metodologia em resolver
tal problema, repotamos resultados computacionais para dados na literatura, que
foram tomados na literatura, e que comprova o método híbrido pode resolver de
forma exata Problemas de Escalonamento de Motoristas(PEM) mais rapidamente
que utilizando-se apenas métodos exatos ou apenas heurísticas.
v
Abstract of Dissertation presented to COPPE/UFRJ as a partial fulfillment of the
requirements for the degree of Master of Science (M.Sc.)
A HYDRID ALGORITHM FOR SOLVING THE DRIVERS SCHEDULING
PROBLEM
Alan de Freitas
September/2011
Advisor: Nelson Maculan Filho
Department: Systems Engineering and Computer Science
In this work, we present a hybrid methodology for solving Drivers Scheduling
Problems(PEM). In literature, there are many contributions on the Drivers Schedul-
ing Problem(DSP), in general, we model this problem as a partitioning problem Sets,
in which case, we can not solve it through exact algorithms, because PPC is an NP-
complete. So one way that many authors adopt are local search heuristic algorithms
to solve problems with real data, but these algorithms can get lost in the large so-
lution space generated by the solution inicial.Então, made a proposal for this work
is to solve the problem by column generation with the aid of heuristic algorithms to
accelerate the process of generating new columns in the subproblem textit Princ-
ing, obtaining thus a reduced number of columns, which facilitates us in solving
the master problem, a Partitioning problem Sets (PPC). to prove the efficiency of
the methodology to solve this problem, repot computational results for data in the
literature that were taken in the literature, and that proves the hybrid method can
solve problems accurately Scheduling Drivers (PEM) faster than using only exact
methods or just heuristics.
vi
Sumário
Lista de Figuras ix
Lista de Tabelas x
1 Introdução 1
2 Revisão Bibliográfica 4
2.1 Planejamento de Transporte em Massa . . . . . . . . . . . . . . . . . 4
2.1.1 Definições Básicas . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Construção de Rotas . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Construção de quadro de horãrios para os veículos . . . . . . . 6
2.1.4 Escalonamento de Veículos . . . . . . . . . . . . . . . . . . . . 7
2.1.5 Escalonamento de Tripulação . . . . . . . . . . . . . . . . . . 11
2.1.6 Etapa 5: Rodízio de Tripulação . . . . . . . . . . . . . . . . . 15
2.2 Abordagens usadas para a Resolução do PET . . . . . . . . . . . . . 15
2.3 Geração de Tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Problema de Escalonamento de Tripulação(PET) . . . . . . . . . . . 18
3 Problema de Escalonamento de Motorista(PEM) 19
3.1 Descrição do PEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Formulação Matemática do PEM . . . . . . . . . . . . . . . . . . . . 22
4 Aplicação do Método de Geração de Colunas no PEM 26
4.1 Método da Geração de Colunas . . . . . . . . . . . . . . . . . . . . . 26
4.2 Resolução do PEM através de Geração de Colunas . . . . . . . . . . . 30
4.2.1 Formulação do Problema Mestre . . . . . . . . . . . . . . . . . 30
4.3 Solução do Subproblema Pricing . . . . . . . . . . . . . . . . . . . . 31
5 Algoritmo Híbrido para Solução do PEM 35
5.1 Algoritmo Proposto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2 Solução Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3 Resolução do subproblema . . . . . . . . . . . . . . . . . . . . . . . . 37
vii
5.3.1 Relaxação Linear . . . . . . . . . . . . . . . . . . . . . . . . . 37
6 Resultados 39
6.1 Instância Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Conclusão e Recomendações Futuras 41
Referências Bibliográficas 43
viii
Lista de Figuras
2.1 Planejamento de Transporte em Massa QIAO[1] . . . . . . . . . . . . 4
2.2 Relação entre tarefa, pedaço de trabalho e bloco[2] . . . . . . . . . . 6
2.3 Uma solução para o PEV (SIMOES [3]) . . . . . . . . . . . . . . . . . 10
2.4 Bloco de veículos particionado em tarefas(SIMOES[3]) . . . . . . . . 12
4.1 O grafo que representa o PCMRR com dois recursos[4] . . . . . . . . 33
ix
Lista de Tabelas
2.1 Estrutura que define uma viagem GONÇALVES[2] . . . . . . . . . . 7
2.2 Tabela de Horários . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 tarefas da instância L1170-54(SANTOS[4]) . . . . . . . . . . . . . . . 21
3.2 Uma solução do PEM, utilizando jornadas simples SANTOS[4] . . . . 22
3.3 Uma solução do PEM(jornadas do tipo dupla pegada) SANTOS[4] . . 22
6.1 Estrutura que define uma tarefa do problema . . . . . . . . . . . . . . 39
6.2 Dados da Instância BHTrans(SANTOS[4]) . . . . . . . . . . . . . . . 40
6.3 Parâmetros utilizados no algoritmo proposto . . . . . . . . . . . . . . 40
x
Capítulo 1
Introdução
O problema de escalas de tripulação (PET) tem sido foco de estudo há vários anos
em função de sua complexidade e da necessidade de as empresas terem pessoal su-
ficiente para as suas operações. Esse problema pode ser analisado em vários tipos
empresas, como transportes rodoviários, ferroviários, aéreos, marítimo, etc. Em to-
das as empresas, o objetivo é o mesmo, ou seja, alocar tripulantes necessários para
a realização das operações previstas para a empresa com o menor custo possível e
maximizando a utilização dos recursos (tripulantes).
Segundo a ANTT[5], Agência Nacional de Transportes Terrestres, o transporte ro-
doviário de passageiros, no Brasil, é um serviço que movimenta mais de 140 milhões
de usuários por ano. A ANTT é o órgão responsável pela permissão e autorização
dos serviços de transportes, através de empresas legalmente constituídas no setor de
transporte. A maioria das empresas de grande e médio porte oferecem transporte
coletivo para locomoção dos seus funcionários até o seu local de trabalho com o
objetivo de proporcionar comodidade e pontualidade, assim os funcionários não pre-
cisam enfrentar ônibus coletivo urbano com "superlotação"e atrasos devido à espera
pelo coletivo em seus pontos de parada.
Por outro lado, a grande maioria dependem de ônibus coletivo para movimentar-se
pelos grandes centros urbanos, sejam por questões de trabalho ou à passeio. Além
disso, grande parte das empresas não se preocupam em alugar ônibus privativos para
translado dos seus funcionários, já que oferecem vale transporte ou "RioCard"para
que os mesmos possam utilizar o coletivo urbano.
Assim, para oferecer condições excelentes de atendimento a essa parcela da popula-
ção as empresas transporte coletivo devem organizar os seus veículos e motoristas
de tal forma a prestar um melhor atendimento ao público que depende desse trans-
porte. Em particular, criar escalas eficientes de motoristas e cobradores de tal forma
que minimize os custos com a mão de obra. Segundo BOUZADA[6](2000),diz que
a mão de obra operacional é uma das componentes que mais pesa na planilha de
custos, e que motoristas e/ou cobradores, pode chegar a 80 % do custo operacional
1
total. Então, os autores confirmam que uma redução nos custos com mão de obra
pode gerar um ganho significativo para empresa. Logo, essa redução implicará di-
retamente na diminuição da tarifa cobrada ao usuário do coletivo(passageiro), com
isso, aumenta-se o nível de competitividade das empresas do setor.
Neste trabalho, vamos abordar o problema de escalas de tripulação (PET) em trans-
porte urbano em massa, mas conhecido como Problema de Escalonamento de Mo-
toristas e Cobradores(PEMC) ou em alguns casos, simplesmente, Problema de Es-
calonamento de Motoristas(PEM). Para resolver estes tipos de problemas, utiliza-
remos recursos da otimização que é uma ferramenta muito importante no processo
decisório.[7]
O problema de escalonamento de transporte pode ser dividido em dois subproblemas,
que são: O Problema de Escalonamento de Veículos e o Problema de Escalonamento
de Tripulação. No primeiro caso, queremos atribuir os veículos à um conjunto de
tarefas de custo mínimo, enquanto que o segundo devemos atribuir os motoristas aos
veículos escalonados anteriormente. Ambos os problemas tem pontos em comum,
mas existem diferenças cruciais no segundo, principalmente, por que no segundo
problema nos deparamos com leis trabalhistas e fatores humanos, que aumentam a
complexidade do segundo problema.
A grande maioria dos Problemas de Escalonamento de Tripulantes, ou como trata-
remos nesse trabalho, como Problema de Escalonamento de Motoristas(PEM) são
NP-completos e não podem ser resolvidos através de algoritmos exatos para to-
das as instâncias do problema, sob o ponto de vista prático, porém para pequenas
instâncias, podemos obter excelentes resultados utilizando recursos de softwares co-
merciais. Porém, existem na literatura abordagens que envolvem algoritmos exatos,
como geração de colunas, que junto com metaheurísticas, aceleraram o processo de
geração de novas colunas (variáveis do problema).(CALVI[8]).
Segundo SANTOS[4], a utilização de um algoritmo exato puramente, pode consumir
bastante tempo e memória para instâncias baseada em dados reais, pois devemos
enumerar todas as possíveis jornadas viáveis, que mesmo utilizando um software
comercial(XPRESS, por exemplo) pode ser uma tarefa complicada. Por outro lado,
a utilização de metaheurísticas, puramente, pode acontecer da solução se perder no
grande espaço de solução. Uma vez que, a solução ótima geralmente contém apenas
um número reduzido de jornadas, o método de geração de colunas parece ser bas-
tante ideal para atingirmos a otimalidade.
Na literatura, existem muitas contribuições sobre a resolução do Pro-
blema de Escalas de Tripulação; utilizando algoritmos exatos (QIAO[1],
BEASLEY&Cao [9],SANTOS [4],HUISMAN et al [10], WOEGINGERet al [11],
ROUSSEAU et al [12], SCHELTEN et al[13], SOUZA et al [14], LORENA et al [15],
MAURI&LORENA[16], MINGOZZI et al [17],LORENA et al [18], WALGELMANS
2
et al [19], entre outros) e algoritmos metaheurísticos(GONÇALVES[2], THEMIDOet
al [20], CUNHAet al [21],CALVI[8], entre outros).
A metodologia desse trabalho é propor um algoritmo para resolver um Problema de
Escalonamento de Motoristas(PEM), em particular, um problema que foi abordado
no trabalho de SANTOS[4] e trata do transporte coletivo de ônibus na cidade de
Belo Horizonte, cujo modelo é um Problema de Particionamento de Conjuntos com
Restrições adicionais. Nesse algoritmo, utilizaremos o método de geração de colunas
combinado com heurísticas de busca local, com o objetivo de acelerar a geração de
novas colunas, isto é, resolver heuristicamente, o subproblema pricing.
Então, organizamos esse trabalho da seguinte forma:
• 2. Revisão bibliográfica: Nesse capítulo descreveremos o planejamento de
transporte urbano em massa, assim como, com Problema de Escalonamento
de Tripulação, e citaremos alguns métodos exatos de resolução para o problema
em questão.
• 3. Nesse capítulo faremos uma descrição detalhada de Problema de Escalo-
namento de Motorista, que será objeto de estudo do nosso trabalho, que é
um caso particular, abordado no trabalho de SANTOS[4], que é o caso de
um Problema de Escalonamento de Motoristas de Ônibus da cidade de Belo
Horizonte. Depois, formularemos matematicamente esse problema, utilizando
um modelo de Programação Linear Inteira 0-1.
• 4. Nesse capítulo, faremos um resumo do método de geração de colunas,
depois, Aplicaremos esse método ao problema modelado no capítulo 2, mo-
delando o problema mestre e o subproblema pricing relacionado ao problema
original.
• 5. Nesse capítulo, descreveremos o algoritmo usado nesse trabalho, que é
subdivido em passos: No primeiro passo, construção de uma solução inicial;
No segundo passo, resolver o subproblema Pricing, através das metaheurísticas
vistas no capítulo 3.
• 6. Nesse capítulo, apresentaremos os resultados obtidos pelo emprego da me-
todologia adotada nesse trabalho, comparações entre a relaxação linear e a
solução metaheuristica do subproblema Pricing, através de tabelas e gráficos
comparativos.
• 7. Nesse capítulo, apresentaremos a conclusão e recomendação para trabalhos
futuros.
3
Capítulo 2
Revisão Bibliográfica
2.1 Planejamento de Transporte em Massa
Como vimos anteriormente, na introdução desse trabalho, os sistemas de transpor-
tes de massa apresentam um problema muito complexo na elaboração do seu pla-
nejamento. Portanto, nos diversos trabalhos publicados na literatura recomenda-se
dividí-lo em etapas, formando assim problemas menores (QIAO[1]), que estão es-
quematizados abaixo:
Figura 2.1: Planejamento de Transporte em Massa QIAO[1]
4
2.1.1 Definições Básicas
Antes de descrevermos tais etapas do processo de Planejamento de Transporte em
massa, vamos definir alguns termos que são importantes na compreensão do pro-
blema:
1. Viagem: É a tarefa de transferir passageiros de um ponto a outro. Para realizar
essa tarefa devem ser conhecidos os horários de embarque e desembarque, assim
como o local de partida e de chegada nesses pontos de transferência.
2. Bloco: É uma seqüência de viagens que um determinado veículo deve realizar
em um dia, começando e terminando na garagem. O conjunto de blocos forma
a escala do ônibus.
3. Oportunidade de Troca(OT): É um local e horário onde é permitido que uma
tripulação abandone ou assuma um veículo. Então, a cada oportunidade de
troca está associado um Horário de Troca e um Ponto de Troca, os quais
representam respectivamente a hora e um local onde poderá haver uma troca
de tripulações.
4. Tarefa: É a viagem realizada por um tripulante entre duas oportunidades
de Troca consecutivas sobre um bloco. Assim, conseqüentemente, durante a
realização de uma tarefa não é possível que haja troca de tripulação. Veremos,
mais adiante que, as tarefas são dados de entrada para a resolução do Problema
de Escalonamento de Tripulação(PET);
5. Pedaço de trabalho: É um conjunto contendo um número de tarefas consecu-
tivas.
6. Jornada: É a combinação de várias viagens que serão atribuídas a um tripu-
lante para compor o seu dia de trabalho. Geralmente, esse termo é conhecido
como turno de trabalho.
7. Demanda: É a quantidade de jornadas que devem ser cumpridas num mesmo
dia de modo a atender ao mercado. De acordo com os dias da semana e as
estações do ano, a quantidade de jornadas, bem como as viagens previstas em
cada uma, podem ser diferentes.
8. Escala: É o conjunto de jornadas que cobre toda a escala de ônibus.Este
termo também é conhecido na literatura como Escala de Tripulação ou Escala
de Trabalho.
9. viagem morta: É a viagem realizada a partir da garagem até o ponto de
embarque de passageiros, assim como do último ponto de embarque presente
na jornada até a garagem.
5
A figura abaixo, ilustra a relação entre tarefas, pedaço de trabalho e bloco.
Figura 2.2: Relação entre tarefa, pedaço de trabalho e bloco[2]
Agora, nas próximas subseções, veremos resumidamente, cada etapa do plane-
jamento de transporte.
2.1.2 Construção de Rotas
Segundo QIAO[1], nessa etapa um conjunto de rotas são construídas e seleciona-
das para servir a uma determinada área. Essas rotas são construídas a partir de
ligações viáveis numa rede, e são selecionadas de acordo com a demanda pelo ser-
viço.Geralmente, essas ligações são produzidas manualmente e pelo dono ou gerente
de planejamento da empresa, isto é, são procedimentos manuais que não são custo-
sos.
2.1.3 Construção de quadro de horãrios para os veículos
Obtidas as rotas na etapa anterior, e considerando as informações sobre a disponi-
bilidade de veículos, bagagem, demanda pelo serviço requisitado, então, dividimos o
espaço de tempo em períodos, o qual é atribuído o horário de partida de cada viagem
e um horário de término, estalecendo a quantidade de viagens que devem ser reali-
zadas por faixa de horário.A quantidade de viagens deve ser suficiente para atender
o usuário do transporte(passageiro) a ser considerado, de modo que ele espere o mí-
nimo possível ou que consiga chegar ao seu destino no momento desejado.Portanto,
6
durante essa etapa, são fixadas freqüências em cada linha disponível na frota esta-
cionada na garagem.
Segundo CASIMIRO[22], a construção de quadro de horários para os veículos, ou
como ele chama Problema de Montagem de Horários, deve ser considerado também
na construção de horários fixos, restrições operacionais que geralmente são impos-
tas por autoridades locais, regionais ou nacionais, uma vez que, essas autoridades
mantém o serviço de transporte funcional até mesmo em horários pouco lucrativos
com um patamar de qualidade adequado.
A tabela abaixo mostra um esquema de viagem, que é um dado de saída obtido nessa
etapa e será um atributo que utilizaremos na construção de jornadas de trabalho
que veremos mais adiante.
ViagemHorário Inicial Horário FinalPonto de Partida Ponto de ChegadaLinha Veículo
Tabela 2.1: Estrutura que define uma viagem GONÇALVES[2]
2.1.4 Escalonamento de Veículos
O Escalonamento de Veículos ou como também é conhecido na literatura Problema
de Escalonamento de Veículos(PEV) ou Vehicle Scheduling Problem(VSP) é a etapa
anterior ao escalonamento de tripulações. Essa etapa, Consiste na criação de uma
rotina diária de operação para uma frota de veículos que está disponível para uso de
uma empresa, de modo que todas a viagens a ela responsabilizadas seja realizadas
e a programação gerada não viole as regras operacionais e as limitações espaço-
temporais existentes. A programação de veículos é feita a partir de uma tabela
de horários, que é obtida na etapa 2 do Planejamento de Transporte em Massa,
cujo dado de saída dessa etapa serão todas as viagens a serem realizadas em um
determinado dia por uma empresa. A tabela abaixo, mostra um fragmento de uma
tabela de horários retirada de SIMOES[3].
Na tabela ??, cada viagem é identificada por meio de um conjunto de atributos
que consistem de informações importantes para a resolução do problema. Como
podemos observar, esses estão organizados nas colunas dessa tabela, tais atributos
são:
• O número da viagem;
7
Viagem Horário Inicial Partida Horário Final Chegada Linha1 5 30 70 30 30.42 5 302 38 302 302.43 20 30 76 30 30.44 240 302 265 302 302.45 255 30 309 30 30.36 260 302 281 302 302.17 270 305 335 305 305.18 270 30 331 30 30.39 270 326 300 326 326.110 280 30 340 30 30.3
Tabela 2.2: Tabela de Horários
• Horário de início da viagem(em minutos);
• O ponto inicial que corresponde ao local de inicio da viagem;
• Horário de término da viagem(em minutos);
• O ponto final que se refere ao local em que a viagem termina;
• A linha o qual a viagem pertence;
• Tempo de embarque se refere ao tempo, em minutos, necessários para que os
passageiros embarque no terminal. Esse tempo depende do horário de início
da viagem;
• Tempo de desembarque se refere ao tempo, em minutos, necessários para que
os passageiros desembarque no terminal final da viagem. Esse tempo está
associado ao horário de término da viagem;
Para exemplificar esse processo, vamos utilizar os dados da tabela ??. Considere
a viagem "1"dessa tabela, essa viagem tem início no ponto "30"aos 5 minutos do
dia, isto é, às 00:05 horas e é finalizada no ponto "30"aos 70 minutos do dia, que
corresponde às 01:10 horas.
Além do conjunto de viagens, devem ser fornecidas também informações
relativas aos tempos de deslocamento entre os vários pontos de parada dos veículos,
incluindo a garagem. De porte dessas informações é possível determinar o tempo
que um veículo gasta, sem passageiros, para sair de um ponto e chegar a outro, ou
seja, uma viagem morta.
8
Para obtermos um escalonamento de veículos viável é necessário atender a uma
série de restrições, as quais podem variar conforme as políticas operacionais que
regem o Sistema de Transporte no qual a empresa atua.
O Sistema de Transporte pode ser público ou privado, no primeiro caso,
temos empresas de ônibus, trens e metros; no segundo caso, empresas de ônibus e
companhias aéreas. Nesse trabalho, estamos realizando um estudo no caso de um
Sistema de Transporte Urbano por Ônibus, mas especificamente na próxima etapa
do Planejamento de Transporte em Massa, que é o Problema de Escalonamento de
Tripulação.
Assim, como em SIMOES[3], vamos analisar o caso do Sistema de Transporte
Público por Ônibus que atua na cidade de Belo Horizonte.Para esse problema,
considere que todos os veículos da frota sejam idênticos e que partem de uma mesma
garagem, e as seguintes restrições para o Problema de Escalonamento de Tripulação:
• Todas as viagens devem ser realizadas por uma veículo da frota, que está sob
a responsabilidade da empresa;
• Antes de se iniciar e após finalizar uma viagem, um veículo deve obrigatori-
amente cumprir um tempo mínimo no terminal, que corresponde ao tempo
necessário para o embarque e desembarque de passageiros.
• Um mesmo veículo somente poderá realizar duas viagens, i e j, consecutiva-
mente, se o intervalo de tempo existente entre elas for suficiente para que o
veículo desloque do ponto final da viagem i para o ponto inicial da viagem j,
respeite os tempos destinados para embarque e desembarque de passageiros e
inicie uma viagem j sem atrasos. Caso contrário, ocorrerá uma sobreposição
de horários entre as viagens.
• Um veículo não deve ficar mais de duas horas em um terminal esperando para
executar a sua próxima viagem. Se o tempo de espera exceder esse limite, o
veículo deverá se deslocar para a garagem. Diz-se, nesse último caso, que o
veículo está realizando uma dupla pegada.
• O número de duplas pegadas da programação não pode exceder 60% do tama-
nho da frota.
• Todo veículo deve iniciar e terminar a sua jornada de trabalho na garagem;
• Todo veículo deve permanecer, no mínimo, trinta minutos consecutivos na
garagem, por dia, para que ocorra a sua manuntenção e limpeza. Este tempo
9
pode ser cumprido quando o veículo pára na garagem durante uma dupla
pegada ou mesmo depois de completada toda a sua jornada operacional diária.
O objetivo dessa etapa é obter uma escala de veículos em que o tamanho da
frota utilizada e os deslocamentos dos veículos fora de operação(deslocamentos que
não equivalem a nenhuma viagem) sejam minimizados.
Afim de obtermos uma solução para o Problema de Programação de Veículos,
então deve-se atribuir um conjunto de viagens a um número de veículos menor ou
igual à frota disponível pela empresa, levando em conta as restrições expressas nos
item (a)-(e), de tal forma, que todas as viagens sejam realizadas com o menor custo
operacional possível.Ao resolvê-lo tem-se como resultado os chamados blocos de
veículos. Cada um desses blocos corresponde a um conjunto de viagens que serão
executadas por um mesmo veículo.
Na figura abaixo, apresentamos um esquema de solução para o Problema de
Escalonamento de Veículos em Transporte Urbano por ônibus. A partir do bloco de
um veículo são criadas as Tarefas, que será um dado de entrada na fase posterior a
essa fase.
Figura 2.3: Uma solução para o PEV (SIMOES [3])
Na literatura, existem muitas contribuições para resolução do PEV, como em
DANNA&LaPApe[23], PRATA[24], MÖLLER[25], WALGEMAN et al [? ]
Nesse trabalho, vamos utilizar a solução já disposta na literatura do PEV, pois o
nosso objetivo é resolver a próxima etapa do planejamento, que é o Escalonamento
10
de Tripulação ou Problema de Escalonamento de Tripulação.
2.1.5 Escalonamento de Tripulação
O Problema de Escalonamento de Tripulação(PPT) é a penúltima etapa do
processo de Planejamento de Transporte e consiste em gerar um conjunto de
jornadas diária de trabalho que cubra todas as tarefas previstas e, posteriormente,
atribuí-las aos tripulantes que conduzirão a frota do meio de transporte que está
em operação.Portanto, nessa etapa, o horizonte de planejamento é diário, isto é, ao
final dessa fase, teremos uma escala diária para todos os tripulantes responsáveis
por cada deslocamento realizado por um veículo.
Para a resolução do PPT, inicialmente os blocos de veículos gerados no PEV
são simplificados em tarefas, isto é, antes do PPT ser resolvido, existe um etapa
intermediária entre o PPT e PEV.Nessa etapa, Os blocos de viagens, gerados na
solução do PEV, são quebrados em tarefas que serão usadas para a solução do PPT,
uma vez que, cada tarefa contém viagens consecutivas de um mesmo veículo e entre
as quais não pode ocorrer a troca de tripulações devido as limitações de tempo
e espaço(GONÇALVES[2]).Segundo SIMOES[3], o procedimento de contrução de
tarefas nos ajudam a resolver a PET, pois mantém as viagens que obrigatoriamente
devem ser realizadas por uma mesma tripulação juntas, evitando dessa forma que
as soluções do PEV e do PET sejam inviáveis.No trabalho de GONÇALVES[2010],
ele desenvolve um algoritmo para gerar as escalas, dado como entrada um conjunto
contendo os blocos de viagens.
Em relação a troca de tripulação, nas oportunidades de troca, SIMOES[3]diz que
é necessário um tempo superior ou igual a seis minutos entre as viagens, podemos
ver um exemplo de um bloco de veículo particionado em tarefas, na figura abaixo:
Na figura ??, as colunas "Viagem Morta"e "Tempo de Terminal"representam
os tempos de viagem do veículo fora de operação(sem passageiro) e de espera no
terminal aguardando o horário de início da próxima viagem agendada.Além disso,
podemos observar que, uma tarefa herda os atributos de uma viagem, como por
exemplo: horário de início, horário de término, ponto inicial e ponto final.
No exemplo dado na figura acima, observa-se que a "Tarefa 5"é composta pelas
viagens "101", "120"e "149"e que entre essas viagens não um intervalo de tempo
suficiente para que ocorra troca de tripulação. Ela iniciará às 15:15 horas, no ponto
"3055", e será finalizada neste mesmo ponto às 20:04 horas. Assim sendo, a "Tarefa
11
Figura 2.4: Bloco de veículos particionado em tarefas(SIMOES[3])
5"é realizada em 4 horas e 49 minutos e possui uma folga acumulada de 4 minutos.
Quando as tarefas são construídas, elas devem cobrir não apenas as viagens
operacionais(com passageiros) dos veículos, como também as viagens sem passa-
geiros(viagem morta), conforme podemos notar nas tarefas "Tarefa 1", "Tarefa
2"e "Tarefa 6"do exemplo da figura acima. A "Tarefa 1"considera a sua primeira
viagem partindo da garagem, ou seja, o seu ponto de partida é a garagem. A
"Tarefa 3"inicia com reposionamento do veículo do ponto "3050"(ponto final da
viagem "60") para o ponto "3055"(local de ínicio da próxima viagem, viagem "87")
e a "Tarefa 6"cobre o retorno do veículo à garagem ao fim da sua jornada de trabalho.
Então, vamos considerar que possuímos as seguintes informações:
1. As rotas de cada veículo;
2. As viagens que compõe as rotas
3. Ponto de repouso e troca de tripulação;
4. Horários e freqüências de cada veículo;
5. Associação dos veículos para cada viagem, de forma que se conheça quais os
funcionários que serão habilitados a conduzí-los para cada viagem, conside-
rando a sua habilidade e experiência no tipo de veículo utilizado.
6. As tarefas geradas a partir da lista de viagens.
12
Como podemos determinar a escala de trabalho de cada trípulante, difinindo
assim a sua jornada diária de trabalho, isto é, que tarefas o tripulante deve cumprir
ao longo de um determinado dia de trabalho?
A solução encontrada para esse problema será um conjunto de jornadas diárias
de trabalho, cuja jornada consiste em uma seqüência de tarefas a serem cumpridas
por uma mesma tripulação e que satisfaça a legislação trabalhista e as regras
operacionais da empresa com o menor custo possível. Essas jornadas geradas na
solução, podem ser de dois tipos:
1. Jornada Tipo Simples: é a jornada em que todos os intervalos entre suas tarefas
consecutivas são inferiores a duas horas, ou seja, a tripulação responsável por
essa jornada trabalhará um único turno.
2. Jornada Tipo Dupla Pegada: é a jornada que possui um intervalo de tempo,
entre duas de suas tarefas consecutivas, igual ou superior a duas horas. Tais
jornadas são realizadas em dois turnos, a pausa dada entre os dois turnos,
nesse caso, não é remunerado pela empresa.
Na formação das jornadas de trabalho, a legislação trabalhista(CLT) e as regras
operacionais devem ser obrigatoriamente satisfeitas para que a solução para o PPT
seja viável. As restrições abaixo, foram consideradas no trabalho de SIMOES[2009]
e também serão levadas em consideração nesse trabalho, que são:
1. Uma tripulação não pode executar duas tarefas simultaneamente;
2. Uma tripulação somente poderá realizar a troca de veículos nas seguintes oca-
siões: Quando os veículos envolvidos na troca se encontram no mesmo terminal
no momento da troca.Então, para que ocorra troca, basta que o tripulante te-
nha um pequeno intervalo de ocioso(cinco minutos no mínimo) para abandonar
um veículo e assumir outro, rapidamente. Por outro lado, se os veículos es-
tiverem em terminais distintos, a troca somente poderá ocorrer em intervalos
entre turnos de uma jornada do tipo dupla pegada, pois, a distância entre os
diferentes terminais é muito grande;
3. Uma tripulação pode extrapolar, no máximo, duas horas diárias de trabalho,
além da duração normal de sua jornada, sendo este tempo excedente conside-
rado hora extra;
13
4. Toda jornada do tipo pegada simples deve ter uma folga mínima de 20 minu-
tos.Esse tempo pode ser fracionado em dois intervalos, tendo cada um, uma
duração igual ou superior a 10 minutos;
5. O intervalo mínimo entre o final de uma jornada e o início da mesma no dia
seguinte deverá ser de 11:00 horas;
6. O número de jornadas de trabalho do tipo dupla pegada não pode exceder a
20 % do total de tripulações na programação.
Na literatura, existem várias abordagens que são utilizadas para a resolução
desse problema. Devido ao grande número de restrições trabalhistas e operacionais
impostas ao PET, então, resolvê-lo como um Problema de Programação Inteira e
incorporando todas as restrições vistas acima no modelo, é uma tarefa complicada.
Portanto, em geral, resolvemos o problema de escalonamento de mão-de-obra,
dividindo-o em três fases principais:
• Geração de Jornadas - um grande número de jornadas é gerado através da
associação de tarefas afins e possíveis de serem executadas consecutivamente
por uma única tripulação. Essas jornadas devem respeitar regras trabalhistas
impostas por uma classe de funcionários.A solução desse problema será uma
solução inicial para o Problema de Cobertura de Conjuntos.
• Problema de Cobertura de Conjuntos - é um problema clássico de otimiza-
ção combinatória utilizado em inúmeras aplicações em logística do transporte,
como por exemplo, problemas de escalonamento de mão-de-obra, roteamento
de veículos e entrega de mercadorias, dentre outras.CASIMIRO(17), modela o
Problema de Escalonamento de Tripulação, Como um Problema de Cobertura
de Conjuntos(PCC), cujo problema é descrito abaixo: Considerado como dado
de entrada um conjunto de tarefas a serem executadas pelas tripulações e um
conjunto de jornadas viáveis capazes de cobrir essas tarefas a um determinado
custo, esse problema procura por um conjunto de jornadas capazes de atender
toda a demanda a um custo mínimo. As duas primeiras fases, vamos agrupar
num único problema, pois a solução da primeira fase será uma solução inicial
viável para o PCC, e a segunda fase, será o processo de otimização dessas
escalas.
• Problema de Seqüênciamento de Jornadas - Esse problema recebe como dados
de entrada as jornadas obtidas pela solução do Problema de Cobertura de
Conjuntos, ele tem o objetivo de criar rosters, que descrevemos na próxima
14
subseção.
Nesse trabalho, focaremos a nossa atenção nas fase 1 e 2, da abordagem
de solução do problema de escalonamento de mão de obra, principalmente, no
caso do Problema de Escalonamento de Tripulação em transporte urbano de
ônibus.Daremos mais detalhes da construção das fases 1 e 2, na seção 1.4.
2.1.6 Etapa 5: Rodízio de Tripulação
Resolvido o PPT para cada dia da semana, através da etapa anterior, agora surge
um novo problema, que é o Problema de Rodízio de Tripulação(PRT), que consiste
em atribuir uma jornada de trabalho mensal para cada tripulação, considerando
certas regras trabalhistas relativas, que não foram aobrdados na programação
diária, o que corresponde a escalonamento de tripulações por um periodo maior
de tempo(semanal e mensal).Segundo CASIMIRO[2005] Tais regras trabalhistas são:
• Número de folgas,
• Atendimento a pedidos de mudança semanal
• Equilíbrio na distribuição da carga de trabalho para o período considerado.
Nesse trabalho, não abordaremos essa etapa, pois o nosso objetivo é resolver
um problema de escalonamento de tripulação, que no caso, é um horizonte de
planejamento diário.
Na próxima seção, mencionaremos algumas abordagens que são usadas na prática
para a resolução do PPT.
2.2 Abordagens usadas para a Resolução do PET
Como vimos na introdução desse trabalho, o Escalonamento de Veículos e o Es-
calonamento de Tripulação são etapas essenciais para um bom planejamento do
transporte, umas vez que, estamos realizando o planejamento de dois objetos cru-
ciais para um bom atendimento da demanda pelo meio de tranaporte, que são:
veículos e mão-de-obra. Porém, mesmo divindo o planejamento de transporte em
etapas(seção anterior), resolver as duas últimas etapas é um problema desafiador.
Portanto, vários autores adotam abordagens distintas para resolver cada um desses
15
problemas.Alguns autores resolvem, consecutivamente, escalonamento de veículos
e tripulações, outros de forma independente, e outros resolvem, simultâneamente,
Escalonamento de veículos e tripulação.No trabalho de SIMOES[2009], ele expõe os
tipos de abordagem para a resolução do PET: Abordagem Seqüencial, Integrada e
Integrada e depois faz as comparações das soluções obtidas em cada abordagem.
Veremos as três abordagens, a seguir:
• Abordagem Seqüencial - Nessa abordagem, inicialmente, é definida a
forma de operação dos veículos e, em seguida, baseando-se na programa-
ção obtida no Problema de Escalonamento de Veículos(PEV), são definidas
as jornadas de trabalho dos tripulantes. Essa metodologia é batante inte-
ressante, uma vez que, o PEV e o PET, segundo a introdução desse traba-
lho, são problemas de grande importância no Planejamento de Transporte em
Massa.(SIMOES[2009]).
• Abordagem Independente - Nessa abordagem, o PEV e o PET são
resolvidos separadamente, e em qualquer ordem e de forma a se relacionarem.
Para tanto, a estratégia de resolução adotada é semelhante à abordagem
seqüencial, com exceção do fato de que cada tarefa no PET corresponderá a
exatamente uma viagem.Além disso, supomos que todas tarefas são executa-
das por um mesmo veículo para que não haja a necessidade de contemplar
trocas de veículos na programação de tripulações. Portanto, são eliminados
todos os veículos entre as programações de veículos e tripulações e ambas
passam a ser definidas a partir do conjunto de viagens. SIMOES[3], diz
que a programação independente do PET e do PEV pode gerar soluções
incompatíveis ou inviáveis no contexto prático.
• Abordagem Integrada - essa abordagem consiste em definir simulta-
neamente, as rotinas de operação dos veículos e as jornadas de trabalho
das tripulações, de tal forma a minimizar os custos envolvidos e ao
mesmo tempo viabilizar a execução de todas as viagens sob responsabi-
lidade da empresa.Existem muitos trabalhos na literatura realizam essa
abordagem, como SIMOES[3], WAGELMANS et al [26],TOTH et al [27],
VALOUXIS&HOUSOS[28], PAIXAO et al [29]
Nesse trabalho, adotaremos a primeira abordagem, a abordagem seqüencial, isto
é, primeiro resolvemos o PEV, e então, com a sua solução, utilizaremos como dado
de entrada para o PET. Mas, devido a complexidade do PET, vamos supor que já
temos disponíveis a solução do PEV, isto é, temos como dado de entrada o bloco de
16
veículos, e por sua vez, cada veículo, o seu conjunto de viagens. Na próxima seção,
veremos o processo para a construção do conjunto de jornadas.
2.3 Geração de Tarefas
Conforme anteriormente mencionado, na seção 1.1, entre as etapas de escalona-
mento de veículos(PEV) e escalonamento de tripulação(PET), existe um etapa
intermediária, cuja etapa será responsável pela geração de tarefas, que serão obtidas
a partir do particionamento de blocos de veículos, obtidos no PEV. No trabalho de
GONÇALVES[2], ele descreveu e utilizou um algoritmo para gerar um conjunto de
tarefas.
Nesse algoritmo, ele considera um conjunto B = {b1, . . . , bn} formado por todos
os blocos de viagens, onde cada elemento bk = {vk1, . . . , vkm} é formado por um
conjunto viagens.
Relembrando que a estrutura de cada viagem possui os seguintes atributos:
• Horário Inicial;
• Horário final;
• Ponto Inicial;
• Ponto Final;
• Linha;
• Veículo;
E que de acordo com os horários iniciais e finais de cada viagem, então, cada um
dos blocos de veículos encontram-se ordenados pelo horário em que cada viagem
deve ser realizada.
Abaixo, descrevemos o pseudocódigo de um algoritmo para gerar tarefas, a
partir de blocos de viagens, ordenados por horário de inicio e fim, de cada viagem.
17
2.4 Problema de Escalonamento de Tripula-
ção(PET)
Este é um dos problemas mais importante do setor de transporte, independen-
temente do tipo de meio de transporte tratado. Programação de Tripulações,
Escalonamento de Tripulações e Alocação de Tripulações, estes são alguns dos
termos mais usuais, para referir-se sobre este problema, que são encontrados na
literatura sobre este problema.
Segundo GONÇALVES[2], O problema consiste em distribuir tarefas aos tripulantes
(pilotos, comissários de bordo, maquinistas, motoristas, cobradores, etc.) durante
vários trechos de viagens a serem cobertos por empresas aéreas, ferroviárias
(metroviário) ou rodoviárias, gerando assim jornadas individuais passíveis de serem
atribuídas a cada uma das tripulações disponíveis. Tudo isso deve ser feito com o
menor custo possível. Em contrapartida, esse custo deve ser minimizado sem violar
quaisquer das restrições do problema, como por exemplo, normas sindicais e leis
trabalhistas, as quais regulam essencialmente o relacionamento entre as companhias
e seus funcionários). Essas restriçoes influenciam diretamente no tempo de algum
algoritmo para resolver o problema.
Uma maneira bastante usual de obter um conjunto de jornadas viáveis, e que é
bastante usada em muitos trabalhos sobre o problema em questão, é representar o
Problema de Escalonamento de Tripulação por meio de grafos. Nessa metodologia,
é dado um grafo G = (V,A), cujo conjunto V de vértices representam as tarefas
a serem executadas e o conjunto A de arestas representam as possíveis transições
entre essas tarefas. Além disso, são adicionados vértices artificiais(depósitos), que
são adicionados ao grafo G para indicar o ínício e o fim de cada jornada.
Vimos na seção 1.1, que o Problema de Escalonamento de Tripulação(PET) é um
problema multi-objetivo, que dependendo do tipo de transporte em massa(aéreo,
urbano,ferroviário), e a empresa que presta o serviço de transporte em questão.
18
Capítulo 3
Problema de Escalonamento de
Motorista(PEM)
3.1 Descrição do PEM
No capítulo anterior, falamos das etapas do processo de escalonamento de tri-
pulação de forma geral, isto é, tripulação de transporte urbano, transporte
aéreo,ferroviário(SOARES[7],GONCALVES[2],PIMENTEL[30], REISetal [31], PAI-
XAO et al [29],WREN&ROUSSEAU[32]). Nesse capítulo, falaremos do Problema de
Escalonamento de Tripulação, sob o ponto de vista, do transporte urbano em massa,
conhecido na literatura, como Problema de Escalonamento de Motoristas(PEM),
ou também referenciado como,Problema de Escalonamento de Motoristas e Cobra-
dores, mas por questões de simplicidade do modelo, facilidade na resolução desse
problema, vamos nos referir motoristas e cobradores, como duplas, que pertencem
a uma mesma escala para condução do veículo. Na próxima seção, vamos obter
a descrição de um Problema de Escalonamento de Motoristas(PEM), no caso na
cidade de Belo Horizonte, cuja descrição foi usada por SANTOS[4]. Na seção se-
guinte, vamos modelar o Problema de Escalonamento de Motoristas(PEM), como
um Problema de Programação Linear Inteira 0-1.
O problema que descreveremos a seguir foi retirado de SANTOS[4], uma vez que,
para se obter dados reais sobre o problema é necessário realizar acordos ou contratos
sigilosos com a empresa de ônibus urbano. Nesse trabalho citado, o autor descreve
resumidamente, o Problema de Transporte Urbano na cidade de Belo Horizonte.
Então, SANTOS[4] descreve que várias empresas que fazem o serviço de transporte
público em Belo Horizonte, cada uma com uma ou mais linhas de ônibus, porém
todas as linhas devem seguir as mesmas regras para formação das jornadas de tra-
balho, estabelecidas na Convenção Coletiva de Trabalho 2002/2003, e fiscalizadas
pelo orgão municipal responsáveis pelo transporte urbano da cidade de Belo Hori-
19
zonte, que é a BHTrans. Vamos apresentar apenas algumas das principais regras
estabelecidas na convenção.
A regulamentação da BHTrans permite que a troca de tripulação de veículos ou de
terminais de início e de fim das tarefas, ocorram durante a sua jornada de trabalho,
nas seguintes ocasiôes:Trocas de linha são permitidas apenas entre alguns itinerá-
rios, geralmente controlados pela mesma empresa e com finais de rota próximos,
mas estes dados, no trabalho de SANTOS[4], vamos considerar que nenhuma troca
de linha seja permitida. Sendo assim, o problema pode ser resolvido separadamente
para cada linha.
Antes de se fazer o escalonamento de tripulações, as viagens sao agrupadas em blo-
cos, que sao seqüências de viagens cujos intervalos entre viagens consecutivas sejam
de no máximo 5 minutos. Intervalos maiores que 5 minutos caracterizam pontos de
troca, onde a tripulação pode ser substituida por outra. Nesse caso, vamos gerar
um conjunto de tarefas para um determinado tripulante.Então, as tarefas consti-
tuem um bloco com uma ou mais viagens, que devem ser conduzidos por um mesmo
tripulante.
As jornadas de trabalho podem ser de dois tipos: jornada simples ou de dupla pe-
gada.
As jornadas de trabalho do tipo dupla pegada são caracterizadas por um intervalo
entre tarefas com duracao igual ou superior a 2 horas. o que justifica o nome dupla
pegada, uma vez que o trabalho é realizado em dois momentos pela tripulação. Para
cada linha de ônibus são permitidas um número limite de jornadas do tipo dupla
pegada sem custo adicional para a empresa, acima desse valor estipulado, os custos
com jornada de dupla pegada são penalizadas na contagem final dos custos opera-
cionais.
Como relação a duração máxima de uma jornada diária de trabalho, temos que para
as jornadas do tipo Dupla Pegada, O tempo máximo de trabalho é de 6 horas e 40
minutos, sendo permitidas até 2 horas extras além desse periodo, isto é, duração
máxima de trabalho durante um dia será: 06 : 40 + 02 : 00 = 08 : 40, ou seja, 8
horas e 40 minutos. Para jornadas simples, tempo máximo de trabalho é de 7 horas
e 10 minutos, nesse tipo de jornada são exigidos ainda pelo menos 30 minutos de
descanso. Esse tempo ocioso pode estar distribuído ao longo da jornada, inclusive no
fim da mesma, sendo contadas inclusive as folgas dentro de uma tarefa (intervalos
entre viagens do bloco), desde que pelo menos um desses momentos seja de pelo
menos 15 minutos ininterruptos.
Essas condições para descanso da tripulação são válidas somente apenas para jor-
nadas simples; jornadas do tipo dupla pegada, já possuem um intervalo longo, que
ocorrem durante o intervalo de duas horas, entre os dois momentos de trabalho,
portanto, essas restrições de descanso não serão consideradas. No intervalo de 2
20
horas de uma dupla pegada é permitido que a tarefa seguinte inicie em uma estação
diferente da estação anterior, antes de começar o intervalo de 2 horas, pois há tempo
suficiente para a tripulação se mover de uma estação para outra. Em todos os de-
mais casos, uma tarefa deve comecar no ponto onde foi concluída a tarefa anterior.
Trocas de veiculos são permitidas em qualquer caso, porém sempre penalizadas.
A Tabela 1, mostra um exemplo de um conjunto de dados de entrada do Problema
de Escalonamento de Motoristas.
Nesse exemplo, da tabela 3.1, nenhuma das tarefas possui folga entre as viagens
Tarefa Veículo Horário Inicial Horário Final Ponto Inicial Ponto Final Folga1 9 345 410 0 4 02 10 365 430 0 4 03 9 420 480 4 4 04 10 435 495 4 4 05 9 495 561 4 4 06 10 510 578 4 4 07 9 570 640 4 4 08 10 590 660 4 4 09 9 650 710 4 4 010 10 665 725 4 4 011 9 730 790 4 4 012 10 745 805 4 4 013 10 830 910 4 4 014 10 930 1006 4 4 015 10 1020 1080 4 4 016 10 1105 1165 4 4 017 10 1190 1240 4 4 018 10 1250 1315 4 0 0
Tabela 3.1: tarefas da instância L1170-54(SANTOS[4])
do bloco, logo todos os intervalos de descanso que existirem nas jornadas são entre
uma tarefa e outra. As tarefas são distribuídas ao longo do dia em dois veículos
distintos(veículo 9 e veículo 10). Algumas tarefas correspondem a retirar ou levar o
ônibus para a garagem (ponto inicial ou ponto final igual a 0), mas a maioria é do
tipo circular, inicia em um ponto e termina no mesmo ponto(no caso, é o ponto 4).
Nas Tabelas 2 e 3 abaixo, respectivamente, mostram possíveis soluções viáveis para
esse exemplo. Na tabela 2, todas as jornadas são do tipo pegada simples, pois essa
jornada foi gerada considerando o fato de que todas as jornadas do tipo dupla pe-
gada tenham custo alto para a empresa. Na tabela 3, considera-se que a empresa
pode utilizar duas jornadas do tipo dupla pegada sem custo adicional. Tais jornadas
estão assinaladas com . Comparando os dois casos apresentados na tabela abaixo,
temos que a segunda solução está economizando (22 : 50− 22 : 18 = 00 : 32)32 mi-
21
nutos de trabalho total, e 22 minutos de tempo ocioso, com o custo de se aumentar
52 minutos de hora extra em relação à primeira solução, sem jornadas do tipo dupla
pegada.
Jornada Tarefas Duração Tempo Ocioso Hora Extra Troca de Veículo1 1-3-5-7-9-11 7:25 1:04 0:15 02 2-4-6-8-10-12 7:20 0:57 0:10 03 13-14-15-16-17-18 08:05 1:34 1:35 0
Tabela 3.2: Uma solução do PEM, utilizando jornadas simples SANTOS[4]
Jornada Tarefas Duração Tempo Ocioso Hora Extra Troca de Veículo1 1-3-5-7-9-11 7:25 1:04 0:15 02 2-4-614-15-16 7:28 0:59 0:48 03 8-10-12-1317-18 7:25 1:00 0:45 0
Tabela 3.3: Uma solução do PEM(jornadas do tipo dupla pegada) SANTOS[4]
De posse de todas as possíveis jornadas viáveis do problema, agora devemos
escolher um conjunto de jornadas que cubram as tarefas disponíveis, como por
exemplo, os conjuntos de dados mostrados nas tabelas 3.2 e 3.3, respectivamente,
acima.Depois, em uma próxima etapa, cada uma das jornadas selecionadas vão ser
designadas a cada motorista.
3.2 Formulação Matemática do PEM
Vimos na seção anterior, que o Problema de Escala de Motoristas possui muitas
restrições que devem ser satisfeitas para que tenhamos um jornadas viáveis de
trabalho, alguns autores como: GONÇALVES [2], SANTOS [3] tratam as restrições
trabalhistas e algumas operacionais como restrições essenciais. Uma formulação
do PEM muito usada na literatura é através do Problema de Particionamento de
Conjuntos. Como descrevemos abaixo:
Sejam N o conjunto de conjunto de colunas do problema(jornadas) e M o con-
junto de linhas a serem cobertas(tarefas).Além disso, considere n o número de jorna-
das (colunas), m o número de tarefas(linhas) a serem cobertas e cj o custo associado
à jornada j.Esse custo associado a cada jornada é calculado em função do tempo
total que o motorista e/ou cobrador são remunerados e não está dirigindo o veículo,
dito tempo ocioso e do total de horas extras contidas na jornada.Esses custos são
calculados da seguinte forma:
22
cj = Thoraextra · Phoraextra + Tocioso · Pocioso
onde:
cj : custo da coluna j;
Thoraextra : número de horas extras na jornada j;
Phoraextra : peso atribuido a cada minuto de hora extra presente na jornada j;
Tocioso : número de horas ociosas da coluna j;
Pocioso : peso atribuido a cada minuto de hora ociosa da coluna j;
Além disso, para cada jornada j ∈ N associamos uma variável binária xj , que
definimos, como:
xj =
{
1, se a jornada j é viável
0, caso contrário
e uma matriz binária A = (aij)|M |×|N |, para i ∈ M e j ∈ N , que definimos como:
aij =
{
1, se a jornada j cobre a tarefa i
0, caso contrário
Portanto, a formulação do PEM através de um modelo de PCC:
(PEMPPC)
min
n∑
i=1
cjxj (3.1)
s.an
∑
j=1
aijxj = 1 i ∈ M (3.2)
xj ∈ 0, 1 j ∈ N (3.3)
Nesse modelo, A função objetivo (1) busca minimizar os custos na jornada j. O
conjunto de restrições (2) garante que todas as tarefas sejam cobertas, sendo cada
tarefa coberta por apenas uma das jornadas selecionadas. A última restrição, (3)
estabelece a integralidade das variáveis de decisão. A restrição (2) satisfaz uma das
restrições do PEM, visto no capítulo 2, seção 2.4, que é a restrição usada muitos
problemas de Escalonamento de Tripulações:
Uma tripulação não pode executar duas tarefas simultaneamente;
Porém, a solução do problema ?? somente satisfaz uma das restrições do PEM, o
nosso objetivo é formular o PEM, de forma a cobrir pelas menos a restrições mais
relevante do problema de escalas, conhecido por GONÇALVES[2], SIMOES[3] e
23
MAPA[33], como restrições essenciais, cujas restrições se não forem satisfeitas, irão
gerar jornadas inviáveis de trabalho.
Então, SILVA etal [34] e SANTOS[4], acrescenta outra restrição ao 3.2. Essa
restrição, diz que, caso haja um conjunto de jornadas de dupla pegada,a quan-
tidade dessas jornadas sem custo adicional deve ser limitado, a uma constante
MAX_DUPLA_PEGADA, que segundo SILVA etal [34], esse número máximo fica,
em geral, em torno de 10 % do número total de motoristas disponíveis na em-
presa(tripulantes). Essa restrição é formulada da seguinte forma:
n∑
j=1
am+1,j .xj ≤ MAX_DUPLA_PEGADA (3.4)
Nesse caso, am+1,j = 1, caso j seja uma jornada do tipo dupla pegada, e 0, caso
contrário. Além disso, vamos penalizar essas jornadas na função objetivo, acrescen-
tando a parcela bk na função objetivo (1.1).Essa modificação no 3.2 é vista abaixo:
(PEMPPC) :
min
n∑
i=1
cjxj + bk (3.5)
s.an
∑
j=1
aijxj = 1 i ∈ M (3.6)
n∑
j=1
am+1,jxj ≤ MAX_DUPLA_PEGADA (3.7)
xj ∈ {0, 1} j ∈ N (3.8)
k ∈ {0, 1} (3.9)
O parâmetro bk acrescentado na função objetivo significa que se a quantidade
de jornadas de dupla ultrapassar 10 % do número total de motoristas disponiveis,
então será cobrado um custo extra no total dos custos referentes a uma jornada.A
variável k é uma variável binária, definida como:
k =
{
1, se a jornada j é de dupla pegada
0, caso contrário
No início dessa seção, quando formulamos o PEM, através de um modelo de um
Problema de Particionamento de Conjuntos (PPC), as variáveis desse problema são
as variáveis xj , que é definida como 1, se j é uma jornada viável e 0, caso contrá-
rio; E depois, quando formulamos o PEM com restrições adicionais, acrecentamos
24
uma variável k, que representa as jornadas de dupla pegada. Então, para formular
esse problema com todas as suas variáveis deveriamos construir anteriormente todas
as possibilidades de jornadas, que cubram uma quantidade de tarefas satisfazendo
as restrições trabalhistas e operacionais, o que é impossível, devido a sua explosão
combinatória.
Porém, a solução desse problema não será todas as jornadas geradas, apenas uma
quantidade finita e mínima de jornadas serão as soluções ótimas, então, um método
ideal de solução para o nosso problema será a utilização de um método de enume-
ração implíticita, e que não precise trabalhar com todas as jornadas possíveis, mas
com um número reduzido de jornadas. Portanto, um método que possa atender
nosso objetivo é o método da geração de colunas.
25
Capítulo 4
Aplicação do Método de Geração de
Colunas no PEM
4.1 Método da Geração de Colunas
uma grande dificuldade na solução do problema de alocação de tripulação mesmo
para casos que possui instâncias pequenas é o grande número de possíveis jornadas
de trabalho. Mesmo existindo diversas regras que controlam a viabilidade de uma
jornada, o conjunto completo de jornadas viáveis é geralmente grande. E quando é
possível gerar o conjunto completo, este número enorme de jornadas torna difícil a
solução do PCC resultante.
Para o caso do Problema de Escalonamento de Motoristas(PEM), ainda é mais
complexo, uma vez que, esse problema possui restrições que são difíceis de modelar
em um Problema de Particionamento de Conjuntos(PCC).Porém, o nosso objetivo
não é obter todas as jornadas possíveis e viáveis, mas as jornadas interessantes para o
problema, isto é, jornadas que são viáveis, que atendem todas as regras operacionais
e trabalhistas, e que possuem um custo mínimo. Portanto, o número de jornadas
efetivamente utilizadas na solução ótima é bem menor comparado ao número total
de jornadas possíveis.
Mesmo para instâncias pequenas é possivel notar que havendo a possibilidade de
prever que certas jornadas viáveis não fazem da parte da solução ótima, ou que
tem pequenas chances de participar desta solução, então, pode-se trabalhar com um
número reduzido de jornadas e encontrar a mesma solução ótima. Ou, pensando de
outra forma, prever quais as jornadas tem maiores chances de participar da solução
ótima.
Portanto, para gerar um subconjunto pequeno de jornadas, acelerar o processo de
geração das jornadas, e facilitar a solucao do PCC. Encontramos duas questões que
dificultam a inserção dessa ideia na prática, que são:
26
(i) Como podemos gerar boas jornadas de trabalho de forma a incluí-las na
solução ótima, em outras palavras, como podemos guiar a geração de jornadas
para produzí-las?
(ii) Como podemos garantir que nenhuma jornada não gerada não melhora a
solução?
Uma forma de solucionar essas questões será utilizando o método chamado geração
de colunas.
Considere o Problema de Programação Linear Inteiro(PPLI), abaixo:
(PPL)
min cTx
s.a Ax = b
Dx ≤ d
x ≥ 0
(4.1)
Suponha que o problema ?? tenha um número muito grande de variáveis,
como é o caso do Problema de Particionamento de Conjuntos(PPC), ou seja,
um problema com uma quantidade muito grande de colunas. Então, segundo
(MACULAN&FAMPA[35],WALGEMANetal [19]), resolvemos esse problema utili-
zando a decomposição de Dantzing-Wolf. Para isso, devemos representar um
dado conjunto conjunto convexo e limitado de soluções viáveis, como uma com-
binação linear convexa de pontos extremos e também das direções extremas desse
conjunto(BUENO[36]).
Se o conjunto de pontos extremos é vazio, dizemos que o conjunto convexo é
limitado, que é o caso do PPC(mesmo que contenha restriçoes adicionais),ou seja, do
Problema de Escalas de Motoristas(PEM), que mesmo leve um tempo muito grande
para resolvê-lo, a solução ótima terá uma quantidade finita de colunas(jornadas,
respectivamente).Para mais detalhes mais detalhes sobre formulações, envoltórias
convexas e detalhes mais teóricos sobre programação inteira e geração de colunas
pode ser encontrado em SCHRIJVER [37], MACULAN & FAMPA [35], WOLSEY
[38].
Portanto, considerando X um conjunto convexo, temos que:
X = {x ∈ Rn+;Dx ≤ d}
= {x ∈ Rn+; x =
p∑
j=1
λjxj ,
p∑
j=1
λj = 1, λ ∈ Rn+}
27
Então, podemos reformular o PPL ??, substituido a equação x =∑p
j=1λj x
j no
problema 4.1, obtemos o seguinte problema: (PM)
minp
∑
j=1
λj cj (4.2)
s.a A
p∑
j=1
λjaj = b (4.3)
p∑
j=1
λj = 1 (4.4)
λj ≥ 0 (4.5)
Nesse caso, definimos cj = cT xj e aj = Axj para cada j ∈ 1, 2, . . . , q. O problema
acima é conhecido como Problema Mestre.Então, a idéia desse método é decompor
esse problema em dois problemas:
1. Problema Mestre: O problema 4.2 formulado acima, que no caso é o problema
a ser resolvido, porém com menos variáveis(colunas).
2. Subproblema pricing : Esse problema é responsável pela geração de novas co-
lunas(variáveis) para o problema mestre. Essas colunas quando incorporadas
no problema mestre melhora a solução atual.
O subproblema pricing é formulado como:
(SP ) :
Max (u1A− c)x+ u0 (4.6)
s.a Dx ≤ b (4.7)
x ≥ 0 (4.8)
Segundo MACULAN&FAMPA[35], BUENO[36], SANTOS[4], LASDON[39], esse
problema não precisa ser resolvido até a otimalidade, isto é, para resolvê-lo basta
que a solução seja viável, ou seja, que satisfaça as seguintes restrições de viabilidade
do problema 4.1:
Dx ≤ b e x ≥ 0
Então, a solução desse problema será uma coluna gerada para o problema 4.2. Na
seção 3.2 do capítulo 3, formulamos o Problema de Escalonamento de Motoristas
como um Problema de Programação Inteira, que no caso, é um Problema de
Particionamento de Conjuntos(PPC), que no caso, mantém algumas características
28
da geração de colunas para o Problema de Programação Linear, que no caso, vamos
considerar agora o conjunto X, que definimos acima como:
Na seção 3.2 do capítulo 3, formulamos o Problema de Escalonamento de Motoris-
tas como um Problema de Programação Inteira, que no caso, é um Problema de
Particionamento de Conjuntos(PPC), que no caso, mantém algumas características
da geração de colunas para o Problema de Programação Linear, que no caso, vamos
considerar agora o conjunto X, que definimos acima como:
X = {x ∈ Zn+;Dx ≤ d}
= {x ∈ Zn+; x =
p∑
j=1
λjxj ,
p∑
j=1
λj = 1, λ ∈ Zn+}
E o problema mestre ficará da seguinte forma:
(PM) :
min zPMI =
p∑
j=1
λj cj (4.9)
s.a A∑p
j=1λja
j = b (4.10)p
∑
j=1
λj = 1 (4.11)
λj ∈ Z+ j = 1, 2, . . . , p (4.12)
(4.13)
Segundo BUENO[36] e WOLSEY[38], a restrição de convexidade∑p
j=1λj = 1
em conjunto com a restrição de integralidade λj ∈ Zp+ será imposto que λ ∈ 0, 1n.
Ou seja, o problema mestre 4.9 será um problema inteiro binário.
Segundo BUENO[36], as formulações original e mestre do problema inteiro, diferem
em sua relaxações lineares e os seus limites(bounds) para a solução das relaxações
lineares do problema original inteiro(−zPI), problema mestre(−z
PM) e a solução
ótima inteira do Problema Inteiro(PI)(z∗PI), estão relacionados através da seguinte
desigualdade:
−zPI ≤ −z
PM ≤ z∗PI
Quando a formulação é tal que o conjunto X = {x ∈ Rn+;Dx ≤ d} tem a propri-
edade da integralidade(GEFRION[1990]), então, teremos que −zPI = −z
PM . Caso
a formulação original não apresente a propriedade da integralidade e a relaxação
linear do problema mestre não fornece uma solução inteira, como é o caso do
29
Problema de Escalonamento de Motoristas(PEM), então teremos a seguinte relação
entre os valores ótimos:
−zPI < −z
PM < zPI
Na seção seguinte, formularemos o problema mestre associado ao PEM, e conse-
quentemente, na próxima, formularemos o subproblema que irá gerar as colunas
para o PEM.
4.2 Resolução do PEM através de Geração de Co-
lunas
4.2.1 Formulação do Problema Mestre
Nessa seção, aplicaremos ao Problema de Escalonamento de Motoristas(PEM),
formulado na seção 3.2 do capítulo anterior, o método da geração de colunas. Para
isso, vamos, considerar a formulação do problema novamente.
PEMPPC :
min
n∑
i=1
cjxj + bk (4.14)
s.an
∑
j=1
aijxj = 1 i ∈ M (4.15)
n∑
j=1
am+1,jxj ≤ MAX_DUPLA_PEGADA (4.16)
xj ∈ {0, 1} j ∈ N (4.17)
k ∈ {0, 1} (4.18)
Temos que o problema acima é um problema linear inteiro binário, onde cada
coluna da matriz de restrições, ou seja, cada variável do problema, é uma jornada
viável, que cobre um subconjunto das tarefas. Cada restricao do problema é uma
tarefa que deve ser coberta. Como existem muitas jornadas viáveis, o problema
possui muitas colunas(variáveis), e por isso, existe a necessidade do uso do método
de geração de colunas. Entretanto, o PEM nao apresenta a propriedade de inte-
gralidade da solução, pela seção anterior, tem que o Relaxação Linear do Problema
Inteiro não é igual a Relaxação do Problema Mestre associado ao Problema Inteiro,
30
com isso é impossível obter o calculo dos custos duais das tarefas.
Para obter o valor das variáveis duais necessários na solução do subproblema, O
PPC nao é resolvido, mas sim sua relaxacao linear. Nesse caso, as variáveis cor-
respondentes a cada coluna deixam de ser binárias e passam a ser não-negativas
.Como visto na seção anterior, não existe a necessidade de limitar o valor da variá-
vel explicitamente em 1, pois as restrições de cobertura,juntamente com restricoes
de não-negatividade, impõem esse limite. Caso a solução ótima do problema re-
laxado não seja inteira, parte-se para uma enumeração branch-and-bound, porém,
com um número reduzido de colunas.
Então, vamos utilizar a formulação do problema mestre proposta por SANTOS[4].
Como a formulação do Problema Mestre trabalha com um número reduzido de colu-
nas, então, vamos considerar um subconjunto N ⊂ N de tarefas e um subconjuntoNDP ⊂ NDP , que essas tais jornadas que estarão no problema mestre, então pro-
blema mestre para esse caso será:
(PM_PEMPPC)
MINn
∑
i=1
cjxj + b k (4.19)
s.a∑
j∈ N atjxj = 1 t ∈ M (4.20)
∑
j∈ NDP
am+1,j.xj ≤ MAX_DUPLA_PEGADA (4.21)
xj ≥ 0 j ∈ N (4.22)k ≥ 0 (4.23)
Mesmo obtendo essa formulação para o problema mestre não conseguimos resolvê-lo
até a otimalidade, uma vez que precisamos enumerar todas as jornadas possíveis
que estão no conjunto N ⊂ N , que são as soluções que farão parte da solução viável
inicial, em outras palavras, esse problema que formulamos ainda é NP-Díficil.Então,
uma forma de resolver esse problema é obter uma solução dual viável do problema
4.2.1, isto é, resolver o subproblema pricing até obter uma solução viável.
4.3 Solução do Subproblema Pricing
A finalidade do subproblema é gerar uma (ou mais) nova jornada de trabalho,
que seja viável e de custo reduzido negativo, quando considerados os preços duais
das tarefas do problema mestre anteriormente resolvido. Estas novas jornadas são
novas colunas acrescentadas ao problema mestre, que melhoram o valor da solução,
ou atualizam os preços duais para permitir a geração de outras novas jornadas pelo
31
subproblema.
Para o problema de alocação de tripulação, que possui diversas restrições
na viabilidade de uma jornada, portanto na criação de uma nova coluna,
uma abordagem bastante utilizada é a modelagem deste problema em um
grafo(IRNICH&DESAULNIERS[40]). A topologia do grafo é facilmente definida
pelas características de uma jornada de trabalho: uma seqüência de tarefas
ordenadas pelo horário de execução.
Para isso, considere um grafo dirigido G = (V,A), em que o conjunto V de
vértices contém um vértice vt associado a cada tarefa t ∈ T a ser coberta no
problema de cobertura, e dois vértices adicionais, v0 e vf marcando o ínicio e o
fim, respectivamente, de uma jornada; e o conjunto A de arcos contém os arcos
(v0, vt) e vt, vf , ∀t ∈ T , e os arcos (vt, vw) para todo par de tarefas t e w tal que
a tarefa w possa ser efetuada logo após a tarefa w em alguma jornada viável. Na
definição desses últimos arcos são considerados os horários de execução das tarefas
e outras características específicas do problema. Dessa forma, a existência de um
arco (vt, vw) indica que o horário de execução da tarefa w é posterior ao da t, o
que dificulta a ocorrência de sobreposição de horários, e que essa sequência atende
outros requisitos do PEM, como: como troca de estações, de veículos, e tempo
mínimo entre tarefas consecutivas.
O grafo G assim construído é um grafo dirigido acíclico, e qualquer jornada de
trabalho viável é um caminho do vértice (v0 ao vértice vf no grafo. Os vértices
vt nesse caminho representam as tarefas t da jornada construída.O grafo está
representado na figura abaixo:
Vamos considerar as seguintes notações, que utilizaremos no modelo. Essas
notações são utilizadas por BEASLY&Cao [9] e SANTOS [4], que são:
• V: Conjunto de vértices do grafo;
• A: Conjunto de arcos do grafo;
• P: Conjunto de arcos com intervalo de tempo superior a 2 horas entre tarefas
consecutivas(dupla pegada), neste caso, temos P ⊆ A;
• Q: Conjuntos de arcos com intervalo de tempo entre tarefas consecutivas su-
perior ou igual a 15 minutos, neste caso, temos Q ⊆ A;
• ca: custo associado a troca de veículo ou de estação, que ocorre no arco a do
grafo.
• da: duração do arco a, a soma da duração da tarefa correspondente ao vértice
final e o intervalo entre as tarefas do arco. Assim, para um arco a = (vt, vw),
32
Figura 4.1: O grafo que representa o PCMRR com dois recursos[4]
temos que:
da = hora final da tarefa w − hora final da tarefa t.
Podemos visualizar esse parâmetro no esquema da figura(3.3).
• la: tempo efetivo de trabalho no arco a, que é o tempo efetivo de trabalho no
vértice final. Assim, para um arco a = (vt, vw), temos que:
la = hora final da tarefaw − hora inicial da tarefa w
−folga entre as viagens do bloco da tarefa w
• ch:Custo por hora extra(minutos que extrapolam a duração máxima de tempo,
isto é, quando ultrapassam às 7 horas e 10 minutos para jornadas simples e 6
horas e 40 minutos para o caso de jornadas de dupla pegada);
• cr:Custo por tempo ocioso(minutos de intervalo entre tarefas e folga entre
viagens);
Para os arcos a = (vt, vw), que finalizam o caminho, da = l e a = 0. Para os arcos
a = (v0, vt), que iniciam o caminho, da e la são calculados da mesma forma que os
33
arcos entre tarefas, porem considerando-se que o intervalo entre as tarefas é 0.
Esse problema é conhecido como Problema de Caminho Mínimo com Restrições de
Recursos(PCMRR), que foi definido e modelado por IRNICH&DESAULNIERS[40],
proporam alguns métodos de solução para tal problema, como o Método de
Programação Dinâmica por Rotulação,Heurística Langrageana e Programação por
Restrições. Segundo os autores, esse problema pode ser utilizando na solução
de Problemas de Escalonamento de Tripulação, Escalonamento e Roteamento de
Veículos. A formulação do subproblema, encontra-se abaixo:
No próximo capítulo, mostraremos o algoritmo utilizado no trabalho para obter
uma solução para o PEM.
34
Capítulo 5
Algoritmo Híbrido para Solução do
PEM
5.1 Algoritmo Proposto
Nesse capítulo, descreveremos o algoritmo que será usado para resolver o PEM,
que foi formulado no capítulo 3. Alguns passos do algoritmo como a resolução do
subproblema através de metaheuristicas, assim como a sua iteração com o algoritmo
de geração de colunas são ao trabalho de santos[4], porém, nesse trabalho para ajudar
a acelerar o processo de geração de novas colunas, vamos obter uma solução inicial,
tal como é descrita no artigo de Santos&Geraldo, tal procedimento é chamado de
heurística de Chvatal. No trabalho de Santos&Geraldo foram obtidas boas jornadas
utilizando tal heurística. Nesse trabalho, não nos abordaremos a solução inteira,
pois, uma vez que, o conjunto de jornadas obtidas na solução linear será o mínimo
para obtermos as soluções inteiras mais rapidamente através do otimizador Xpress.
Os passos do algoritmo estão descritos abaixo:
1. Solução Inicial: Obter uma quantidade razoável de jornadas iniciais;
2. Resolver o subproblema pricing, formulado no capítulo anterior, para verifi-
car, se as jornadas geradas anteriormente são ótimas. Primeiro, resolvemos o
problema linear até a otimalidade, para obter uma solução ótima.
3. Devido a dificuldade encontrada para obter as soluções do PEM, através de
métodos exatos, utilizamos o algoritmo genético, e geramos mais rapidamente
as colunas.
4. As soluções obtidas avaliamos através do Xpress, obter a relaxação inteira.
35
5.2 Solução Inicial
Para obtermos as jornadas, inicialmente, devemos obter as tarefas, que são geradas
a partir do bloco de viagens.Todas as viagens que constitui uma tarefa possuem as
seguintes caracteristicas:
1. Tempo de terminal entre as viagens menor que cinco minutos;
2. Final de uma tarefa ocorre apenas nos pontos onde existe um fiscal da empresa;
3. A primeira viagem da tarefa tem início na garagem da empresa, ou em um
ponto onde existe um fiscal;
4. A última viagem da tarefa tem término em um ponto onde existe um fiscal,
ou na garagem da empresa;
Agora, abordaremos algumas restrições que são levadas em conta, nessa etapa:
1. Folga mínima entre tarefas de 15 minutos e folga total de 30 minutos;
2. Tempo máximo de trabalho de 9 horas e 10 minutos;
3. Jornada normal de trabalho com duração de 7 horas e 10 minutos;
4. O início da primeira janela de troca corresponde ao início da janela com horário
mais cedo;
5. O término da última janela de troca corresponde ao término da janela com
horário mais tarde;
6. Adiciona-se o tempo médio de trabalho da linha ao horário de início, marcando
o meio da janela seguinte;
7. Subtrai-se o tempo médio de trabalho da linha ao horário de término, mar-
cando o meio da última janela;
A heurística de Chvátal constrói interativamente uma solução para o PEM. A cada
iteração do método o conjunto de colunas(jornadas) é avaliado por uma função que
leva em consideração o custo de cada coluna e o número de tarefas por ela coberta.
Então, cada coluna será avaliada pelo seguinte expressão para custo relativo:
custoRelativoj =cj
totaltarefascobertas(5.1)
(5.2)
onde:
36
• cj é o custo da coluna j, visto capítulo 3,
• totaltarefascobertas representa o número de tarefas cobertas pela inserção da
coluna j na solução inicial;
• custoRelativo representa o custo relativo da coluna j.
Depois da avaliação de cada coluna, através da expressão 5.1, é inserida na solução
inicial, a coluna de menor custo relativo.Essa coluna é excluida do conjunto de
colunas candidatas. A seguir, todas as colunas candidatas restantes são novamente
avaliadas pela expressão 5.1, excluindo-se em cada coluna as tarefas já cobertas
pelas colunas anteriormente inseridas no conjunto solução. Este procedimento
encerra-se quando todas tarefas forem cobertas.
5.3 Resolução do subproblema
5.3.1 Relaxação Linear
Submetemos a relaxação linear do modelo do subproblema, visto no capítulo 4, a um
pacote de programação linear(Xpress), e se a solução do problema relaxado não for
inteira, usamos essa solução fracionária para construir uma jornada (uma solução
inteira, mesmo que não ótima). A solução ótima do subproblema é um caminho do
vértice v0 ao vértice vf no grafo Construído no capítulo 4, representando a sequência
de tarefas da jornada. Uma solução fracionária é um conjunto de "caminhos parci-
ais"entre os vértices v0 e vf , que representa um conjunto de jornadas, onde algumas
tarefas são incluídas parcialmente em uma e outra jornada. A Figura abaixo,
ilustra esse conjunto de caminhos. Os arcos pontilhados não fazem parte da solu-
ção do problema relaxado, e os demais foram selecionados, mesmo que parcialmente.
Para escolher um vértice em um caminho do grafo, utilizamos uma estratégia
gulosa, onde o próximo vértice do caminho a ser escolhido é aquele cujo arco tenha
o maior valor, entre todos os arcos a partir do vértice anterior. Então, é escolhida
a tarefa que aparece, em alguma jornada, em seqüência à tarefa anteriormente
escolhida, e cujo valor seja o maior entre as tarefas existentes.
Se a jornada sendo construída continua viável após a inclusão dessa tarefa, ela
é incluída, e continua?se o processo a partir dessa tarefa. Senão, a tarefa não
é incluída, e o valor do arco correspondente é zerado, para que outra tarefa
seja escolhida na iteração seguinte. Eventualmente nenhuma tarefa poderá ser
incluída na jornada, e o vértice final do grafo é escolhido, finalizando o caminho e
37
conseqüentemente a jornada.
Segundo SANTOS[4], mesmo quando é finalizada a jornada, ela pode ainda ser
inviável, devido a requisitos que não podem ser verificados durante a construção
da jornada. Quando isso acontece, a jornada inteira é descartada, e invoca?se
novamente o pacote de programação linear inteira para continuar a solução do
modelo até obter a solução ótima inteira. Isso também é feito caso a jornada gerada
pela heurística não tenha custo reduzido negativo.
Segundo SANTOS[4], resultados experimentais mostram que muitas colunas
são adicionadas ao problema mestre, porque algumas das geradas pela heurística
não são tão boas jornadas. Como a cada coluna adicionada, o problema mestre é
resolvido novamente, o número de vezes que o problema mestre é resolvido é maior
quando usamos a heurística. Porém, o subproblema é resolvido mais rapidamente
quando utilizamos a heurística do que quando usamos somente o método exato.
Além disso, a solução do problema mestre é computada rapidamente a partir
da solução anterior, porque a base ótima anterior pode ser utilizada, e poucos
pivoteamentos são necessários. Então, embora o problema mestre e o subproblema
sejam resolvidos mais vezes, o processo como um todo é mais rápido.
Na próxima seção, falaremos da abordagem heurística para a solução do PEM.
38
Capítulo 6
Resultados
Os algoritmo proposto nesse trabalho foi implementado em Java, utilizando a
IDE NetBeans 6.5.1, e a solução do problema linear inteiro foi obtida através de
chamada de funções do Xpress(2010). Os resultados foram apurados pela execução
do algoritmo num notebook com processador Intel Celeron, memória RAM de 2Gb,
com sistema operacional Windows 07. Nas implementações utilizamos chamadas a
algumas bibliotecas diponíveis por ROSEN [41]. Na próxima seção, exibiremos as
instâncias utilizados no trabalho de SANTOS [4], que serão utilizadas para testar
o algoritmo proposto nesse trabalho, pois conseguiu-se obter dados reais de empre-
sas no Rio de Janeiro, então utilizaremos, o caso de uso na cidade de Belo Horizonte.
6.1 Instância Utilizadas
Vamos utilizar as instâncias do trabalho de SANTOS [4], o conjunto de dados que
ele utiliza contém 733 tarefas, divididas em 11 linhas de ônibus. Em cada tarefa
possui a seguinte estrutura: SANTOS [4] fez algumas considerações no problema,
TarefaNúmero do Veículo
Horário Inicial Horário FinalPonto de Partida Ponto de Chegada
Tempo de Repouso entre viagensLinha de início Linha de término
Tabela 6.1: Estrutura que define uma tarefa do problema
como por exemplo,
• O número da linha de inicio e término é o mesmo para algumas tarefas;
39
• Não são permitidas trocas de linha, pois os dados fornecidos não possuem o
grupo de veículos, onde poderia se verificar troca de motoristas entre veículos
de um mesmo grupo ou grupo distintos.
Nas tabelas abaixo, estão disponíveis os dados resumidos das instâncias da Compa-
nhia de Transporte Urbano de Belo Horizonte e os valores dos parâmetros utilizados
na geração de jornadas de trabalho, utilizados na solução do subproblema princing,
respectivamente.
Instância Itinerário Número de Tarefas Número de VeículosL101-40 101 40 3
L201-49 201 49 2
L321-54 321 54 3L1170-54 1170 54 5
L2104-94 2104 94 17
L2152-43 2152 43 6L4150-63 4150 63 9
L5201-75 5201 75 12L8207-101 8207 101 18
L8208-78 8208 78 12
L9206-82 9206 82 14
Tabela 6.2: Dados da Instância BHTrans(SANTOS[4])
Custo excedente ao tempo máximo de jornada 0.2Custo por tempo ocioso 0.15
Custo de transição entre duas tarefas consecutivas 19Custo de penalização por dupla pegada excedente 45
Tabela 6.3: Parâmetros utilizados no algoritmo proposto
Com relação a tabela ??, quando ocorre transição entre duas tarefas consecutivas
pode acontecer um intervalo igual ou superior a 2 horas, o que configura uma jornada
do tipo dupla pegada, então, quando ocorrer dupla pegada, SANTOS [4], soma o
valor 5 ao custo de transição entre duas tarefas consecutivas. Caso não ocorra dupla
pegada, não soma nada a esse custo.
40
Capítulo 7
Conclusão e Recomendações Futuras
O trabalho descreve um algoritmo de geracao de colunas para a solucao de proble-
mas de alocacao de tripulacao com uma etapa adicional de solucao do subproblema
por metodos heuristicos. Apesar do uso de heuristicas, o metodo como um todo
permanece exato, pois as heuristicas sao embutidas no processo de geracao de
colunas apenas para acelerar a resolucao do subproblema, que e sempre resolvido
de forma exata quando as heuristicas falham em resolve-lo satisfatoriamente. Tanto
o problema mestre quanto o subproblema sao problemas classicos, particionamento
de conjuntos, e caminho minimo com restricoes de recursos, para os quais varios
metodos, exatos e heuristicos, foram propostos na literatura. Nenhum deles
tem solucao polinomial, porem ambos sao resolvidos de forma eficiente dentro
do algoritmo de geracao de colunas considerado. O problema mestre e resolvido
facilmente por pacotes de programacao linear, porque dentro do contexto de geracao
de colunas nao contem muitas variaveis de decisao. E mesmo quando o numero de
variaveis aumenta, as solucoes podem ser facilmente obtidas a partir da base da
solucao obtida anteriormente, pois o problema cresce aos poucos. O subproblema,
principalmente no inicio do algoritmo, tem solucao exata um pouco demorada, e
nesse ponto as heuristicas obtem solucoes rapidas e tao interessantes quando a
solucao otima exata. Desta forma, todos sao resolvidos rapidamente.
Apesar de ter sido aplicado em apenas dois tipos de instancias, a tecnica e geral e
pode ser aplicada praticamente em qualquer problema de alocacao de tripulacoes.
As heuristicas e metaheuristicas utilizadas nao foram refinadas e calibradas especi-
almente para as instancias consideradas, e nem contam com detalhes tao especificos
de cada uma. Parametros semelhates foram utilizados, o que mostra que elas sao
facilmente aplicaveis em outros contextos.
Embora fosse possível incluir algumas técnicas para acelerar a convergência da
solução, como: retirar colunas redundantes ou sem potencial de contribuição para
uma melhoria na solução; acrescentar cortes no subproblema para acelerar sua
solução; calibrar os parâmetros para cada instância e introduzir busca local nas
41
heurísticas; entre outras, o enfoque do trabalho não é resolver as instâncias aqui
tratadas, mas estabelecer um algoritmo híbrido com heurísticas e métodos exatos,
que seja mais rápido sem perder a garantia de otimalidade, e geral para ser aplicado
em outros contextos.
Outro contexto significa nao apenas outros problemas de alocacao de tripulacoes,
mas outros problemas semelhantes, como por exemplo, roteamento e veiculos, que
tambem pode ser modelado como um problema de particionamento de conjuntos
com subproblema de caminho minimo com restricoes de recursos. A aplicacao nesse
contexto, e a decisao automatica de qual das heuristicas deve ser utilizada em cada
iteracao durante a execucao do metodo, constituem atividades em andamento e que
provavelmente rendam novos resultados interessantes.
Alem dessas extensoes do trabalho, pretende-se obter outras instancias do proprio
problema de alocacao de tripulacoes, para serem resolvidas com o metodo proposto,
e os resultados comparados com outros metodos da literatura
42
Referências Bibliográficas
[1] W.QIAO. An Algorithm for Crew Scheduling Problem with Bin Packing Features.
M.Sc. dissertation, Department of Civil and Environmental Engineering,
Rio de Janeiro, RJ, Brasil, 2010.
[2] GONÇALVES, T. Metaheurísticas para o Problema de Programação de Tripu-
lações. Dissertação de M.Sc., COPPE - Engenharia de Sistemas e Com-
putação/UFRJ, Rio de Janeiro, RJ, Brasil, 2010.
[3] SIMÕES, E. Algoritmo para Programação Integrada de Veículos e Tripulações
no Sistema de Transporte Público por Ônibus. Dissertação de M.Sc., Pro-
grama de Pós-Graduação em Ciência da Computação, Universidade Fe-
deral de Minas Gerais, Belo Horizonte, MG, Brasil, 2009.
[4] SANTOS, A. Método de geração de Colunas e Metaheurísticas para Alocação
de Tripulações. Dissertação de M.Sc., Programa de Pós-Graduação em
Ciência da Computação, Universidade Federal de Minas Gerais, Belo Ho-
rizonte, MG, Brasil, 2008.
[5] ANTT. “ANTT. Disponível em: http://www.antt.gov.br/. Último acesso em
01/07/2010.” 2010.
[6] BOUZADA, C. Análise de despesas administrativas no custo do transporte a
coletivo por ônibus no município de Belo Horizonte. Dissertação de M.Sc.,
Escola de Governo Fundação João Pinheiro, Belo Horizonte, MG, Brasil,
2000.
[7] SOARES, E. F. Um Ambiente Computacional Para a Otimização de Escalas de
Tripulantes em Companhias Aéreas. Tese de D.Sc., COPPE/UFRJ, Rio
de Janeiro, RJ, Brasil, 2007.
[8] CALVI, R. Um Algoritmo para o Problema de Escalonamento de Tripulação em
Empresas de Ônibus. Dissertação de M.Sc., Programa de Pós-Graduação
em Ciência da Computação, Universidade Estadual de Maringá, Maringá,
PR, Brasil, 2005.
43
[9] BEASLY, J. E., CAO, B. “A tree search algorithm for the Crew Scheduling
Problem”, European Journal of Operations Research, v. 94, n. 3, pp. 517–
526, out. 1995.
[10] ABBINK, E., WOUT, J., HUISMAN, D. “Solving Large Scale Crew Scheduling
Problems by Iterative Partitioning”, 7th Workshop on Algorithmic Appro-
aches for Transportation Modeling, Optimization, and Systems, v. 1168,
n. 1, pp. 96–106, fev. 2007.
[11] D, B. F., SPIEKSMA, F., WOEGINGER, G. “A branch and Prince Algorithm
for a Hierarchical Crew Scheduling Problem”, Naval Research Logistics,
v. 49, n. 2, pp. 743–759, maio 2002.
[12] DALLAIRE, A., FLEURENT, C., ROUSSEAU, J. Dynamic Constraint Ge-
neration in CrewOpt, a Column Generation Aprroach for Transit Crew
Scheduling. 75 rue de Port-Royal Est, Montreal H3L3T1, 2000.
[13] BORNDÖRFER, R., SCHLECHTE, T., WEIDER, S., et al. A column Gene-
ration Approach to Airline Crew Scheduling. In: Report D-14195, Berlin,
Germany, 2005.
[14] YUNES, T., MOURA, A., SOUZA, C. Solving Very Large Crew Scheduling
Problems to Optimality. In: Report NBSIR 78-1434, Instituto de Compu-
tação , UNICAMP, Campinas, 2000.
[15] MELLO, F., SENNE, E., LORENA, L. “Uma nova heurística para o Problema
de Escalonamento de Motoristas”, Produto&Produção, v. 10, n. 3, pp. 87–
95, 2009.
[16] MAURI, G., LORENA, L. Método interativo para resolução do Problema de
Escalonamento de Tripulações. In: Report NBSIR 78-1434, Laboratório
Associado de Computação e Matemática Aplicada, Instituto Nacional de
Pesquisas Espaciais, São José dos Campos, SP, 2002.
[17] MINGOZZI, A., BOSCHETTI, M., RICCIARDELLI, S., et al. “A set Partiti-
oning Approach to the Crew Scheduling Problem”, Journal International
of Operations Research, v. 47, n. 6, pp. 873–888, dez. 1999.
[18] MÉLLO, F. G. A., SENNE, E. L. F., LORENA, L. A. N. “Uma abordagem para
solução do Problema de Escalonamento de Motoristas”, Revista Produção,
v. 8, n. 3, pp. 1–18, 2008.
44
[19] D.HUISMAN, R.JANS, M.PEETERS, et al. “Column Generate”. In: Combi-
ning Generation and Lagrangian Relaxation, v. 5, GERAD, Springer, pp.
247–270, 2005.
[20] CAVIQUE, L., REGO, C., TEMIDO, I. “New Heuristic Algorithms for the Crew
Scheduling Problem”, Journal International of the Applicated Mathmatics,
v. 42, n. 1, pp. 37–47, fev. 1998.
[21] DIAS, T., SOUSA, J., CUNHA, J. A Genetic Algorithm for the Bus Driver
Scheduling Problem. In: Report NBSIR 78-1434, Faculdade de Engenha-
ria, Universidade do Porto, Porto, 2001.
[22] CASIMIRO, J. Modelos e Algoritmos para o Problema de Alocação de Tripu-
lação em Redes de Transporte. Dissertação de M.Sc., Programa de Pós-
Graduação em Ciência da Computação, Universidade Federal de Minas
Gerais, Belo Horizonte, MG, Brasil, 2005.
[23] E.DANNA, C.LAPAPE. “Column Generate”. In: Branch and Prince Heuristics:
A case Study on the Vehicle Routing Problem With Time Windows, v. 5,
GERAD, Springer, pp. 99–129, 2005.
[24] PRATA, B. A. “Programação Integrada de Veículos e Motoristas: Uma visão
geral”, Revista Eletrônica Sistemas & Gestão, v. 4, n. 3, pp. 182–204, 2009.
[25] MÖLLER, J. Seminar on Algorithms and Models for Railway Optimization
Crew Scheduling. In: Report NBSIR 78-1434, Depatamento de Computa-
ção Científica, Universidade de Konstanz, Konstanz, 2002.
[26] FRELING, R., HUISMAN, D., WAGELMANS, A. “Models and Algorithms for
Integration of Vehicle and Crew Scheduling”, Journal of Scheduling, v. 6,
n. 2, pp. 63–85, jan. 2003.
[27] FISCHETTI, M., LODI, A., MARTELLO, S., et al. “A Polyhedral Approach
to Simplified Crew Scheduling and Vehicle Scheduling Problems”, Mana-
gement Science, v. 47, n. 6, pp. 833–850, 2001.
[28] VALOUXIS, C., HOUSOS, E. “Combined bus and driver scheduling”, Compu-
ters and Operation Research, v. 29, n. 1, pp. 243–259, 2000.
[29] R.PORTUGAL, H.R.LOURENÇO, J.P.PAIXÃO. Driver Scheduling Problem
Modelling. In: Report JEL C60-C61, UPF-Universitat Pompeu Fabra,
Barcelona, 2006.
45
[30] PIMENTEL, A. Uma abordagem Heurística para a Solução de Problemas de
Recobrimento de Conjuntos de Grande Porte com Aplicação à Alocação de
Tripulações para Companhias Aéreas. Tese de D.Sc., COPPE - Engenharia
de Sistemas e Computação/UFRJ, Rio de Janeiro, RJ, Brasil, 2005.
[31] SILVA, G., SOUZA, M., REIS, J. Um Método Exato para Otimizar a Escala de
Motoristas e Cobradores do Sistema de Transporte Público. In: Report
NBSIR 78-1434, Universidade Federal de Ouro Preto, Ouro Preto, MG,
2004.
[32] A.WREN, J.M.ROUSSEAU. Bus Driver Scheduling - An overview. VIth Inter-
national Workshop on Computer Aided Scheduling of Public Transport,
Lisbon, Portugal 93.31, 1993.
[33] MAPA, S. Redução de Custos de Programação Diária de Tripulação de Ôni-
bus Urbano via Metaheurística. Monografia de graduação, Departamento
de Engenharia de Produção, Universidade Federal de Ouro Preto, Ouro
Preto, MG, Brasil, 2004.
[34] SILVA, G. P., SOUZA, M. J. F., ATZINGEN, J. V. “Métodos Exatos para
Resolver o Problema de Programação da Tripulação”, Transportes, v. 14,
n. 1, pp. 25–32, jun. 2006.
[35] N.M.FILHO, M.H.C.FAMPA. Otimização Linear. 2 ed. Brasília, Brasil, Editora
UnB, 2006.
[36] BUENO, E. Geração de Colunas em Problemas de Otimização Combinató-
ria. Dissertação de M.Sc., COPPE - Engenharia de Sistemas e Computa-
ção/UFRJ, Rio de Janeiro, RJ, Brasil, 2005.
[37] SCHIJVER, A. Theory of Linear and Integer Programming. 2 ed. New York,
Wiley Sons INC, 1986.
[38] WOLSEY, L. A. Integer Programming. 2 ed. New York, Wiley Sons, INC,
1998.
[39] L.S.LASDON. Optimization Theory for Large Systems. 2 ed. New York, MAC-
MILLIAN, 1970.
[40] S.IRNICH, G.DESAULNIERS. “Column Generate”. In: Shortest Path Problems
With Resource Constraints, v. 5, GERAD, Springer, pp. 33–65, 2005.
[41] ROSEN, K. H. A Java Library Graph Algorithms and Optimization. 2 ed. New
York, Taylor and Francis Group, 2007.
46