UM MODELO EXATO PARA O PROBLEMA DO RODÍZIO DE TRIPULAÇÕES COM FLEXIBILIDADE DE TURNOS

Documentos relacionados
XLVI Pesquisa Operacional na Gestão da Segurança Pública

Tipos de problemas de programação inteira (PI) Programação Inteira. Abordagem para solução de problemas de PI. Programação inteira

CAPÍTULO O Método Simplex Pesquisa Operacional

ALGORITMOS GENÉTICOS APLICADOS AO PROBLEMA DE RODÍZIO DE TRIPULAÇÕES

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

Otimização da escala mensal de motoristas de ônibus urbano utilizando a heurística Variable Neighborhood Search

Programação Linear - Parte 4

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

Modelos de Fluxo em Redes para o Problema de Escala de Motoristas de Ônibus Urbano

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

alocação de custo têm que ser feita de maneira estimada e muitas vezes arbitrária (como o aluguel, a supervisão, as chefias, etc.

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

APLICAÇÃO DE UM ALGORITMO GENÉTICO AO PROBLEMA DE RODÍZIO DE TRIPULAÇÕES DO SISTEMA DE TRANSPORTE PÚBLICO URBANO

Introdução em Engenharia. Problemas de Engenharia. Engenharia: Sérgio Haffner SÍNTESE. Conceitos Conceitos fundamentais

Simulated Annealing Aplicado ao Problema de Programação de Horário em Escolas

Bloco Recursos Humanos

Avaliação e Desempenho Aula 1 - Simulação

6 CONCEPÇÃO BÁSICA DO SISTEMA DE APOIO À DECISÃO

Executivo Cíclico. Executivo Cíclico Introdução. Sistemas de Tempo Real: Executivo Cíclico Introdução. Executivo Cíclico Exemplo

Aplicação de um algoritmo genético ao problema de rodízio de tripulações do sistema de transporte público urbano

GESTÃO DA MANUTENÇÃO

Metodologias de Programação

MODELAGEM MATEMÁTICA DE UM SISTEMA DE DISTRIBUIÇÃO DE ENERGIA ELÉTRICA EM MÉDIA TENSÃO 1. Gabriel Attuati 2, Paulo Sausen 3.

Árvore de Decisão. 3. Árvore de Decisão

Abordagem heurística para resolução do problema de programação mensal de tripulações de ônibus urbano

UMA PROPOSTA DE SOLUÇÃO PARA O PROBLEMA DA CONSTRUÇÃO DE ESCALAS DE MOTORISTAS E COBRADORES DE ÔNIBUS POR MEIO DO ALGORITMO DO MATCHING DE PESO MÁXIMO

PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA

PRO Pesquisa Operacional II

A f e r i ç ã o da Qu a l i d a d e de Se r v i ç o

Pernambuco. Tabela 1: Indicadores selecionados: mediana, 1º e 3º quartis nos municípios do estado de Pernambuco (1991, 2000 e 2010)

CIRCULAR TÉCNICA N o 171 NOVEMBRO 1989 TABELAS PARA CLASSIFICAÇÃO DO COEFICIENTE DE VARIAÇÃO

Modelos de Ciclo de Vida de Software

Acre. Tabela 1: Indicadores selecionados: mediana, 1 o e 3 o quartis nos municípios do estado do Acre (1991, 2000 e 2010)

LÂMINA DE INFORMAÇÕES ESSENCIAIS SOBRE O BNP PARIBAS DIVIDENDOS FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO AÇÕES CNPJ/MF:

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

PLANEJAMENTO E PROGRAMAÇÃO DA PRODUÇÃO. Mayara Condé Rocha Murça TRA-53 Logística e Transportes

ANEXO I A REGULAMENTO DE HORÁRIOS DE TRABALHO

Business intelligence para empresas de segurança. Como uma instituição pode gerar recursos e errar menos com ajuda da informação

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DA RESPESCAGEM DO 2 o TESTE

Método Simplex Revisado

Árvores de Decisão Matemática Discreta

5. O Mapa de Karnaugh

Análise do balanceamento de uma linha de produção em uma empresa de autopeças

UM MODELO HÍBRIDO DE FLUXO EM REDES PARA RESOLVER O PROBLEMA DO RODÍZIO DE TRIPULAÇÕES

Ponto Secullum 4 Extras. Para configurar as extras no Ponto Secullum 4 abra a tela Cadastro de Horários e clique no botão Extras:

Diplomados com o Ensino Superior

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

UM SOFTWARE INTERATIVO PARA O ALGORITMO SIMPLEX EM PROGRAMAÇÃO LINEAR

Há um único número 0800 para resolução de problemas relativos a todos os negócios fornecidos pela instituição financeira?

MODELAGEM MATEMÁTICA PARA O PROBLEMA DE ALOCAÇÃO DE TRIPULANTES A EMBARCAÇÕES

ESPECIFICAÇÕES TÉCNICAS SISTEMA DE DETECÇÃO VEICULAR OVERHEAD

ANÁLISE DE FALHAS DE COMPUTADORES

que não torne uma variável básica negativa. Se esse valor for infinito, o PL é ilimitado. Caso contrário, escolha uma variável

Inspeção de Qualidade

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

RESULTADO DO LEVANTAMENTO DE DADOS DE MONITORAMENTO DA EMISSÃO ATMOSFÉRICA EM PROCESSOS DE QUEIMA DE DERIVADOS DE MADEIRA

Medidas de dispersão e assimetria

MÉTODO SIMPLEX QUADRO SIMPLEX

Maranhão. Tabela 1: Indicadores selecionados: mediana, 1º e 3º quartis nos municípios do estado do Maranhão (1991, 2000 e 2010)

AULA 11 Experimentos Multinomiais e Tabelas de Contingência

AMOSTRAGEM: DIMENSIONAMENTO DE AMOSTRAS. SELEÇÃO DOS ELEMENTOS DE UMA AMOSTRA. ESTIMATIVA DA CARACTERÍSTICA TOTAL DA POPULAÇÃO INVESTIGADA

Manutenção total aplicada em ferramentarias

POLÍTICA DE GESTÃO DE RISCOS

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Anexo 06 Recomendação nº 6: reafirmação do compromisso da ICANN de respeitar os direitos humanos internacionalmente reconhecidos

Onde está o peso extra? Série Problemas e Soluções. Objetivos 1. Estudar uma estratégia que valoriza ao máximo as informações disponíveis.

TÍTULO: MODELAGEM E RESOLUÇÃO DE UM PROBLEMA PRÁTICO DE ENGENHARIA CIVIL ATRAVÉS DA OTIMIZAÇÃO

Medida Provisória editada pelo Governo para a nova carreira da Previdência, da Saúde e do Trabalho (MP 301) Perguntas e resposta.

RESOLUÇÃO SE Nº 7, DE 19 DE JANEIRO DE A Secretária da Educação considerando:

Conteúdo. 1 Introdução. Histograma do 1o Sorteio da Nota Fiscal Paraná 152/15. 1º Sorteio Eletrônico da Nota Fiscal Paraná

GARÇONS 50% DOS BARES NÃO REPASSAM GORJETA, DIZ SINDICATO

3 Informações para Coordenação da Execução de Testes

Gestão e Teoria da Decisão

DIREITO DO TRABALHO LC ESQUEMATIZADA Prof. Antonio Daud Jr (

Estratégias operacionais ponto a ponto no Metrô de São Paulo.

MODELAGEM EM DUAS FASES PARA A PROGRAMAÇÃO DE ESCALAS DE TRABALHO EM UMA PRESTADORA DE SERVIÇOS: ESTUDO DE CASO CONSÓRCIO RIO CIDADÃO

Eventos, Tarefas,Tempos e Prazos

ESTUDO DO CONSUMO DE MATERIAIS E PRODUTIVIDADE DE MÃO DE OBRA EM REVESTIMENTOS ARGAMASSADOS 1

Mata Atlântica. Relatório de Atividades

Curso Superior de Tecnologia em Gestão Pública. Ciclo de vida e organização do projeto

13/09/2011. Atividades. Aula 5: REDE PERT/CPM PRINCÍPIOS DO PERT-CPM

2. MÉTRICA DE QUANTIFICAÇÃO DE UNIDADES DE SERVIÇO TÉCNICO UST

Como calcular uma rescisão trabalhista

Para iniciantes os primeiros 90 dias:

COMO DETERMINAR O IMPACTO DAS VARIAÇÕES PERCENTUAIS

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Agenda. O que é Testar? Por que testar? Quando testar? Processo de teste Níveis de teste Tipos de teste Classificação dos testes.

Qual é o estoque mínimo que irá garantir o nível de serviço ao cliente desejado pela empresa?

Sete em cada dez sonhos de consumo dos brasileiros ainda não foram realizados.

Exercícios de Fixação Aulas 05 e 06

ESTATÍSTICA PARTE 1 OBJETIVO DA DISCIPLINA

Journal of Transport Literature Vol. 7, n. 3, pp , Jul Research Directory

Projetos CUSTOS. Prof. Anderson Valadares

Distribuições Conjuntas (Tabelas de Contingência)

SOLUÇÕES N item a) O maior dos quatro retângulos tem lados de medida 30 4 = 26 cm e 20 7 = 13 cm. Logo, sua área é 26 x 13= 338 cm 2.

de rede são comumente utilizadas nos dias de hoje. Um dos grandes desafios para a tecnologia de redes sem fio no momento é o handoff vertical, onde

Como Fazer uma Monografia

TUTORIAL MATLAB Victor Breder 2016

Transcrição:

UM MODELO EXATO PARA O PROBLEMA DO RODÍZIO DE TRIPULAÇÕES COM FLEXIBILIDADE DE TURNOS Matheus Guedes Vilas Boas Gustavo Peixoto Silva

UM MODELO EXATO PARA O PROBLEMA DO RODÍZIO DE TRIPULAÇÕES COM FLEXIBILIDADE DE TURNOS Matheus Guedes Vilas Boas Departamento de Computação Universidade Federal de Ouro Preto (UFOP) Gustavo Peixoto Silva Departamento de Computação Universidade Federal de Ouro Preto (UFOP) RESUMO Neste trabalho é apresentado um modelo de programação linear inteira para resolver o Problema do Rodízio de Tripulações de Ônibus Urbano (PRT). Este problema trata da alocação de jornadas diárias de trabalho a tripulações dentro de um horizonte de planejamento, respeitando uma série de restrições legais e operacionais. O modelo tem como objetivo minimizar o total de funcionários, o total de horas extras e ociosas, e a redução da diferença da carga horária de trabalho dos empregados. Foram utilizados os dados de uma empresa de transporte de médio porte da cidade de Belo Horizonte, considerando um horizonte de sete semanas. Vários cenários operacionais foram estabelecidos para verificar o impacto dos turnos nos resultados encontrados. Os resultados obtidos foram considerados satisfatórios em relação ao tempo computacional e quando comparados à escala realizada pela empresa e a outros trabalhos disponíveis na literatura. ABSTRACT In this paper, an integer linear programming model is presented to solve the Urban Bus Crews Rostering Problem. This problem deals with the assignment of daily crew shifts within a planning horizon, considering a set of legal and operational constraints. The model aims to minimize the total number of crews, the total extra and idle work time, and the reduction of the difference of work hours among crews. It was used a set of data from a midsize transport company operating in Belo Horizonte city, considering a period of seven weeks. Various operational scenarios were established to verify the impact of operational changes in the results. The results were considered satisfactory with respect to computational time, and when compared to the solution adopted by the company and others results presented in the literature. 1. INTRODUÇÃO O Problema do Rodízio de Tripulações PRT (crew rostering problem) consiste na alocação de uma série de jornadas diárias, referentes aos dias úteis, sábados e domingos, a um conjunto de funcionários para um dado horizonte de planejamento. Neste processo de alocação das jornadas pode haver a compensação de horas extras de uma jornada com horas ociosas de uma jornada executada posteriormente. Além disso, as restrições operacionais e legais impostas ao problema devem ser respeitadas. Segundo Caprara et al. (2003), o Problema da Escala de Funcionários (staff scheduling problem) é o problema que consiste em definir a escala de trabalho a ser executado, em um determinado horizonte de planejamento, por funcionários de empresas como hospitais, bombeiros, call centers, empresas de transporte, entre outras. Um grande desafio nesse problema é encontrar uma solução viável, ou seja, uma solução que respeite tanto as restrições vigentes na legislação trabalhista quantoas restrições operacionais da empresa. No presente trabalho, o PRT foi resolvido através de um modelo de Programação Linear Inteira (PLI). Este modelo contempla a minimização de funcionários, a minimização da quantidade total de horas extras e ociosas realizada e a redução da diferença entre a carga horária total de trabalho realizada pelos empregados. Desta forma, almeja-se atender o interesse das empresas e dos funcionários. Os interesses dos empregados devem ser sempre considerados, estando diretamente ligados à diminuição de acidentes, doenças e absenteísmo nas empresas (MOZ et al., 2009). Vários cenários operacionais foram considerados a fim de 1

se determinar qual é o impacto da variação dos turnos nos resultados encontrados para cada um dos objetivos citados. Cabe ressaltar a política adotada pela empresa, na qual todas as tripulações trabalham sempre em um mesmo turno ao longo da semana, podendo trocar de turno apenas nos finais de semana. Este trabalho está assim estruturado como segue. Na Seção 2 é apresentada uma revisão literária. O Problema do Rodízio de Tripulações é descrito na Seção 3, onde são detalhadas as características das jornadas e turnos, juntamente com as restrições legais e operacionais do problema. O modelo de PLI, utilizado para a sua resolução, é apresentado na Seção 4 e os resultados computacionais e sua análise são relatados na Seção 5. A Seção 6 encerra o trabalho apontando as principais conclusões obtidas, bem como o rumo de pesquisa futura. 2. REVISÃO LITERÁRIA Carraresi e Gallo (1984) mostram que o PRT é um problema NP-Completo e o formulam como um problema de atribuição multi-nível com gargalo. Para cada jornada é atribuído um peso, que representa o custo da execução da jornada pelo motorista. Esse custo pode estar relacionado à duração da jornada, ao seu atraso ou o tempo total decorrido da jornada, considerando a divisão da mesma. O objetivo é minimizar o peso máximo total das jornadas atribuídas ao motorista de tal forma que a distribuição da carga de trabalho seja uniforme. Os autores resolvem problemas gerados aleatoriamente e problemas da vida real. Os resultados encontrados comprovam a eficiência do algoritmo. No trabalho de Yunes et al. (2000), os autores modelam e resolvem o PRT através de um modelo de Programação Linear Inteira (PLI), Programação em Lógica com Restrições e uma abordagem híbrida de Geração de Colunas sobre a formulação de Particionamento de Conjunto. Os modelos têm como objetivo minimizar o número de tripulações necessário para a realização de todas as jornadas no período de planejamento. O problema é dividido em dois subproblemas: Programação das Tripulações e Programação de Escalas de Serviço das Tripulações. O primeiro lida com a atribuição das jornadas diárias às tripulações, satisfazendo um subconjunto das restrições do problema original, durante um dia de trabalho. O segundo usa a saída do subproblema anterior e constrói uma escala de serviço abrangendo um período mais longo. No trabalho de Caprara et al. (2003), são propostos algoritmos para a resolução de problemas de programação e escalonamento de pessoal, especificamente em um centro de atendimento de emergência, no qual devem ser atendidas as chamadas telefônicas durante 24 horas por dia. Os autores dividiram o problema em duas etapas: a primeira etapa define a sequência de períodos de trabalho e de descanso de cada empregado, e a segunda etapa define o trabalho diário realizado em cada período de trabalho de cada funcionário. A primeira etapa foi formulada como um problema de cobertura, onde foram considerados modelos alternativos de PLI e algoritmos enumerativos. A solução é encontrada pela técnica de branch-and-bound combinada com a Geração de Colunas. A segunda etapa foi considerada como um problema de viabilidade, resolvido heuristicamente através de uma sequência de problemas de transporte, uma para cada dia do horizonte de planejamento. Uma restrição adicional no trabalho de Caprara et al. (2003), assegura que um empregado não pode trabalhar em dias consecutivos realizando jornadas entre 22:00 e 06:00. Os resultados obtidos foram satisfatórios, conseguindo determinar a melhor solução de casos envolvendo até centenas de empregados e um período de até 6 meses. 2

Moz et al. (2009) usam heurísticas evolucionárias bi-objetivos para lidar com o PRT. Os dois objetivos do problema referem-se ao atendimento dos interesses da empresa e dos seus funcionários. Os interesses dos funcionários devem ser sempre considerados, estando diretamente ligados à diminuição de acidentes, doenças e absenteísmo na empresa. O modelolida com um período de planejamento de 28 dias e foram usadas 21 instâncias para testar o desempenho dos algoritmos implementados. Essas instâncias são provenientes de uma empresa de transporte público de Portugal. As duas heurísticas obtiveram bons resultados, gerando um grande conjunto de soluções viáveis, em um tempo aceitável. Uma diferença importante das heurísticas implementadas no trabalho de Moz et al. (2009), em relação a outros trabalhos, é a flexibilidade das mesmas em relação a novas regras adotadas por uma determinada empresa ou em relação a outros problemas de escalas de serviço. Nesse sentido, restrições podem ser inseridas, removidas ou alteradas. Bianco et al. (1992) formulam o PRT por meio de um modelo de PLI e descrevem uma heurística que utiliza o limitante inferior, proveniente da relaxação da integralidade do modelo, para reduzir as dimensões do problema. A cada iteração o algoritmo resolve um problema de designação multi-nível com gargalo, para o qual é proposto um novo procedimento que produz soluções que convergem assintóticamente para a solução ótima. O trabalho de Ernst et al.(2004a) apresenta uma revisão bibliográfica com quase 200 referências sobre problemas de programação e rodízio de funcionários (staff scheduling and rostering), assim como diferentes métodos de resolução dos mesmos. A revisão aborda uma variedade de áreas de aplicação e técnicas de resolução comuns aos problemas. O trabalho também traz um esquema de classificação para descrever problemas de rodízio de funcionários.uma visão mais completa do tema pode ser encontrada em Ernst et al. (2004b), uma revisão bibliográfica comentada que agrupa, de forma compreensiva, um conjunto de cerca de 700 referências da área. A revisão está focada principalmente nos algoritmos apresentados na literatura para gerar rodízios e programações de pessoal. Mas ela também cobre áreas correlatas como planejamento da força de trabalho e estimativa do número de funcionários necessários para executar um determinado conjunto de tarefas. Os trabalhos são classificados de acordo com o tipo de problema abordado, a área de aplicação e o método de resolução empregado. Ao final, um breve resumo é apresentado para cada artigo citado. Toffoloet al.(2005) formularam o problema de rodízio de tripulações empregando duas metaheurísticas: Simulated Annealing e Iterated Local Search (ILS), sendo adotado como procedimento de busca local o método randômico de descida. Uma estrutura de vizinhança é definida pela troca das jornadas entre duas tripulações. Desta forma, para um referido dia k tenta-se trocar as jornadas entre duas tripulações i e j. Uma função de avaliação é construída levando em consideração restrições essenciais, tais como obrigações legais referentes às folgas das tripulações, e restrições não essenciais: situações que apesar de indesejáveis podem ocorrer em determinadas circunstâncias. As restrições não essenciais são introduzidas para evitar que determinadas tripulações façam muitas horas extras no período, em detrimento de outras. Esta é uma situação indesejável, pois os tripulantes preferem fazer horas extras para terem suas remunerações aumentadas. Os autores mostram que para a resolução do PRT, o método heurístico ILS foi mais eficiente do que o Simulated Annealing, encontrando soluções com menor custo em um menor tempo de processamento. As duas heurísticas são capazes de encontrar soluções viáveis em um tempo de processamento muito reduzido. 3

Mesquita et al.(2011) apresentam um método que obtêm soluções viáveis para um modelo de programação multiobjetivo binária do problema de programação integrada entre veículos, tripulações e o rodízio das tripulações. Este método é um algoritmo sequencial embutido em um ambiente de programação por metas. Inicialmente é resolvido o problema de programação dos veículos para todos os dias no horizonte de planejamento. Posteriormente, usando essas soluções como ponto de partida e cobrindo o horizonte de planejamento, o PRT é abordado em um contexto de programação não cíclica, por um modelo binário multiobjetivo que considera tanto os interesses da empresa quanto os interesses dos motoristas. Este problema também é resolvido por uma aproximação de programação por metas que levam a soluções mensais quase ótimas. A fim de avaliar a qualidade das diferentes soluções para o rodízio das tripulações, foram realizadas medidas de perspectivas diferentes do custo. Em Nurmi et al.(2012) é apresentada uma forma de planejar os dias de folga das tripulações em uma base anual e as jornadas em uma base mensal de uma empresa finlandesa de transporte urbano. Os dias de folga e as jornadas são planejadas e alocadas usando um algoritmo que inclui características de heurísticas populacionais, assim como as heurísticas não populacionais Simulated Annealing, Busca Tabu e Cadeias de Ejeção. As restrições do problema são classificadas nos tipos: cobertura, regulamentação, operacionais, preferências operacionais e pessoais. O algoritmo de resolução é baseado em um método de busca local em uma população, na técnica de cadeias de ejeção e em procedimentos Lin-Kernighan (LIN e KERNIGHAN, 1973). A principal heurística é a busca gulosa de subida da encosta (hillclimbing) e os autores citam também que a solução funciona melhor com dados de entrada randômicos. Mayrink e Silva (2013) resolvem o PRT em duas etapas: a primeira etapa lida com uma sequência de problemas de designação das jornadas diárias. Nessa etapa, o objetivo é a minimização da quantidade de horas extras e ociosas realizada pelos funcionários. A segunda etapa atribui as folgas às tripulações. Os dados de entrada deste segundo modelo são provenientes da solução dos sucessivos problemas de designação resolvidos na primeira etapa. O objetivo da segunda etapa é a minimização do número de tripulações do tipo folguista, respeitando as restrições das folgas. Os folguistas são tripulações que trabalham para cobrir jornadas de uma tripulação qualquer que esteja gozando seu direito a um dia de folga.os modelos provenientes das duas etapas foram testados com dados de duas empresas do transporte público que atuam em Belo Horizonte. Os resultados obtidos no trabalho foram melhores do que a solução adotada pelas empresas. Para a primeira empresa, o modelo proposto reduziu em 54,5% o número de motoristas, 44,54% o total de horas extras e 75,4% o total de horas ociosas. Já para a segunda empresa, houve uma redução de 8,46% no número de motoristas, 13% no número de horas extras e as horas ociosas foram eliminadas. No trabalho de Prates e Silva (2014), os autores usaram a heurística Variable Neighborhood Search (VNS) para a resolução do PRT de uma empresa de transporte público de médio porte. Os autores trabalharam com dois objetivos: a redução do número de tripulações e da quantidade de horas extras e ociosas na escala. Neste trabalho foi utilizado o padrão de folga fixa do tipo 5/1, que garante que todos os empregados tenham pelo menos uma folga no domingo dentro de um período de sete semanas. Os resultados obtidos com o uso da heurística reduziram em até 56% a quantidade de horas extras da empresa e reduziu pela metade o número de motoristas. 4

3. PROBLEMA DO RODÍZIO DE TRIPULAÇÕES DE ÔNIBUS URBANO O Problema do Rodízio de Tripulações consiste na alocação de uma série de jornadas a um conjunto de funcionários dentro de um horizonte de planejamento, respeitando as restrições vigentes na legislação e as regras operacionais da empresa. Este trabalho aborda a resolução do PRT associado a uma empresa de transporte público que opera na cidade de Belo Horizonte, cujas características particulares são descritas a seguir. De acordo com a empresa, as jornadas são classificadas em 3 tipos: pegada simples, dupla pegada e noturno. As jornadas do tipo dupla pegada apresentam uma interrupção ao longo do dia maior do que duas horas. As jornadas do tipo noturno são aquelas que iniciam entre 22:00 e 5:00. As jornadas do tipo pegada simples englobam as demais jornadas. São fornecidas, como dados de entrada, as jornadas a serem executadas nos dias úteis, aquelas que serão executadas nos sábados e as jornadas a serem executadas nos domingos, sendo que as jornadas dos dias úteis se repetem. A carga diária normal de trabalho é de 6 horas e 40 minutos. Jornadas com duração inferior a essa apresentam horas ociosas, e consequentemente as jornadas com duração superior apresentam horas extras. Além disso, o dia é dividido em turnos, sendo que cada jornada pertence a um turno, dependendo do seu horário de início. Os turnos têm duração de 6 horas, sendo que o primeiro turno inicia-se às 4:00 e termina às 9:59. O segundo turno começa às 10:00 e encerra-se às 15:59, e assim sucessivamente para o terceiro e o quarto turnos. É extremamente difícil considerar todas as restrições de interesse do usuário em um modelo exato, sendo necessárias algumas simplificações. Neste trabalho foram ignoradas algumas características do problema como a ocorrência de férias, feriados, ausências de funcionários por motivos pessoais, entre outras. Assim, o presente trabalho propõe a resolução do PRT considerando os seguintes objetivos: I) Minimizar o número de tripulações. Quanto menor o número de funcionários para realizar as jornadas, menor será o custo fixo da empresa com o salário dos mesmos. II) Minimização da quantidade total de horas extras e ociosas. Para qualquer empresa, um funcionário que receba seu salário e trabalhe menos (ociosidade) do que a carga horária normal está gerando prejuízo para a mesma. Por outro lado, funcionários que realizam horas extras, recebem um adicional por isso. Nesse sentido, é também objetivo do problema que todas as tripulações façam o mínimo de horas extras e não fiquem ociosas. Uma tática adotada pelas empresas é a compensação de horas extras e ociosas ao longo do horizonte de planejamento. Esta compensação é prevista em lei e adotada na prática. III) Minimizar a diferença entre as horas extras e ociosas realizadas pelos funcionários. É interessante que o desvio padrão da carga de trabalho realizada pelos funcionários seja o menor possível, evitando assim desigualdades de trabalho entre os funcionários. O modelo apresentado tem como objetivo principal a alocação das jornadas às tripulações, de modo que todas as restrições legais e operacionais sejam respeitadas. As restrições atendidas na resolução do problema foram: I) O horizonte de planejamento inicia-se em uma segunda. II) Cada tripulação (motorista e cobrador) deve ter um tempo mínimo de descanso de 11 horas entre dois dias consecutivos de trabalho. III) Nenhuma tripulação pode trabalhar mais do que seis dias consecutivos sem folga. IV) Durante o horizonte de planejamento, de 7 semanas, todo motorista e cobrador deve ter pelo menos uma folga no domingo. V) As tripulações devem executar jornadas pertencentes ao mesmo turno durante os dias úteis. 5

VI) As tripulações fazem somente jornadas do tipo pegada simples, dupla pegada ou do tipo noturno. VII) As tripulações que fazem jornadas do tipo dupla pegada devem folgar aos domingos. O modelo de PLI usado para a resolução do Problema do Rodízio de Tripulações, com as características descritas acima, é apresentado em detalhes na próxima seção. 4. UM MODELO DE PROGRAMAÇÃO LINEAR INTEIRA PARA O PRT O Problema do Rodízio de Tripulações de Ônibus Urbano foi resolvido utilizando um modelo de PLI. Este modelo busca o atendimento dos seguintes objetivos (descritos nas seções anteriores): minimização do número de funcionários; minimização da diferença entre as horas extras e ociosas realizadas pelos funcionários e; minimização da quantidade total de horas extras e ociosas. Nessa seção são apresentados todos os conjuntos de índices, parâmetros e variáveis de decisão utilizadas no modelo. O modelo desenvolvido é baseado no relatório técnico de Yunes et al. (2000). Seja D, o conjunto de dias do período de planejamento tal que D = d. Considere p a quantidade de jornadas nos dias úteis, q a quantidade de jornadas no sábado e r a quantidade de jornadas no domingo. O horário de início de cada jornada i é expresso por, e o horário de término por, ambos expressos em minutos. O custo de cada jornada é dado por =( 400). Para > 0, a jornada i apresenta hora(s) extra(s). Quando < 0, a jornada i apresenta ociosidade. Trivialmente, a jornada i apresenta a carga diária normal de trabalho (400 minutos), se = 0. Considere C o conjunto de tripulações tal que C = n e seja w o peso associado à maximização das tripulações não utilizadas, o que corresponde à minimização de tripulações em operação. A variável de decisão recebe o valor 1 se a tripulação i não trabalhar em nenhum dia do período e 0 caso contrário. A variável recebe o valor 1 se a tripulação i realizar a jornada k no dia j e 0 caso contrário. Caso 0 = 1, a tripulação i não trabalhará no dia j. Os conjuntos Dp e Not estão associados às jornadas do tipo dupla pegada e noturno respectivamente. O conjunto Dom armazena todos os domingos do período. A variável auxiliar custo é utilizada para minimizar o custo máximo gasto com as horas extras e ociosas na escala. A função objetivo (1) é dividida em duas parcelas: A primeira parcela maximiza o número de funcionários que não trabalharão durante todo o horizonte de planejamento. Sendo assim, o modelo minimizará o número de tripulações necessário para realizar todas as jornadas. A segunda parcela minimiza o total de horas extras ou ociosas realizadas pelas mesmas. =1 (1) As restrições (2) garantem que a variável receberá o valor 1 se, e somente se, a tripulação i não trabalhar em nenhum dia sequer durante o período. 0, 2 As restrições (3) asseguram que a variável custo será maior ou igual à quantidade de horas extras ou ociosas do funcionário que mais trabalhou ou que esteja mais ocioso. Implicitamente, ao equilibrar a carga horária de todos os funcionários, o modelo minimizará a quantidade total de horas extras e ociosas realizadas durante o período de planejamento. O 6

conjunto representa as jornadas que devem ser executadas no dia j., (3) As restrições (4) asseguram que qualquer tripulação terá no mínimo 11 horas de descanso entre dias consecutivos de trabalho. O conjunto [ ] corresponde ao conjunto de jornadas que não podem ser executadas no dia j por uma tripulação que executou a jornada k no dia 1. 1 + [ ] 1, 2,,, 1 (4) As restrições (5) garantem que nenhuma tripulação trabalhe mais de seis dias consecutivos sem folga. 6 =0 + 0 1, 1,, 6 (5) As restrições (6) garantem, no mínimo, uma folga no domingo para todas as tripulações dentro do horizonte de planejamento. 0 1 (6) As restrições (7) estão associadas à folga aos domingos para todas as tripulações que realizam jornadas do tipo dupla pegada. 0, (7) As restrições (8) e (9) garantem que os funcionários realizem somente jornadas do tipo pegada simples, dupla pegada ou noturno. = +1, 1,, 3 (8) = +1, 1,, 3 (9) Por fim, as restrições (10) e (11) asseguram respectivamente que, cada tripulação pode realizar no máximo uma jornada em cada dia e que todas as jornadas de cada dia serão realizadas ao longo do horizonte de planejamento. 0 + =1 = 1, (10) = 1, (11) A função objetivo apresentada em (1), bem como as restrições (3), (5), (8) e (9) são inéditas na literatura e foram incluídas para representar devidamente o problema abordado, com suas restrições e objetivos. As demais restrições são baseadas no relatório técnico de Yunes et al. (2000). 5. EXPERIMENTOS COMPUTACIONAIS Todos os experimentos computacionais foram realizados em um computador com processador 7

Intel(R) Core(TM) i7-4700, 3.40Hz, 8GB de Memória RAM, no sistema operacional Windows 8. O solver usado foi o CPLEX Optimization Studio, versão 12.5.1. A resolução do modelo de PLI, descrito na seção anterior, só foi possível através da divisão do problema em subproblemas, sendo que cada problema está associado a um turno de trabalho. Com isso, foi possível estudar diferentes cenários operacionais, além daquele adotado pela empresa. A caracterização de cada um destes cenários, bem como uma análise dos resultados encontrados são discutidos nesta seção. A seguir, são apresentados os dados de entrada necessários para a resolução do problema. 5.1. Dados de Entrada Na Tabela 1 são apresentados os dados de entrada constituídos pela quantidade de jornadas nos dias úteis, sábados e domingos. A quantidade de jornadas do tipo dupla pegada e do tipo noturno também é mostrada. As últimas duas colunas exibem o total de horas extras (HE) e de horas ociosas (HO) em cada conjunto de jornadas diárias. Tabela 1: Características das jornadas Dia Jornadas Dupla-pegada Noturno HE HO Dia útil 104 4 13 62:46 78:36 Sábado 70 0 11 45:37 26:54 Domingo 53 0 9 27:41 16:01 Total 227 4 33 -- -- Para cada dia útil, devem ser realizadas 104 jornadas, sendo 4 delas do tipo dupla pegada, 13 do tipo noturno e o restante do tipo pegada simples. Há um total de 62 horas e 46 minutos de horas extras e 78 horas e 36 minutos de horas ociosas para cada dia útil. A interpretação dos outros dados da tabela se dá de forma similar para os sábados e domingos. 5.2. Cenários operacionais A fim de se verificar o impacto que a divisão do dia em diferentes turnos tem na resolução do Problema do Rodízio de Tripulações, foram estabelecidos 3 cenários para analisar os resultados encontrados em cada um deles. O Cenário I adota os 4 turnos originais da empresa. Por outro lado, o Cenário II e o Cenário III, dividem o dia em dois turnos. Para evitar redundância, as interpretações das Tabelas 2, 3 e 4 se dão da seguinte maneira: As colunas DU, SAB e DOM representam respectivamente, a quantidade de jornadas nos dias úteis, nos sábados e nos domingos. As características das soluções obtidas pela resolução do modelo de PLI são mostradas nas colunas Solução ótima, HE (horas extras, no formato hh:mm) e HO (horas ociosas, no formato hh:mm). A coluna DP apresenta o desvio padrão (em minutos) da carga horária total realizada pelos funcionários. O tempo computacional gasto, no formato mm:ss, é apresentado na penúltima coluna. A última coluna da tabela exibe a estimativa do Gap entre a solução ótima e a solução final encontrada pelo CPLEX. As características de cada cenário são descritas abaixo. Foi estabelecido como critério de parada um limite no tempo de execução de 6 horas (360 minutos) para cada turno (execução do modelo no CPLEX). Este critério foi escolhido para que, no pior caso, cada cenário operacional execute seus turnos em no máximo 1 dia (24 horas). Para algumas execuções houve estouro de memória antes do tempo limite de processamento. 5.2.1. Cenário I: 4 turnos No Cenário I, o problema original foi dividido em 4 subproblemas, de acordo com os turnos 8

adotados pela empresa, descritos na Seção 3. Cada subproblema contém todas as jornadas pertencentes ao seu respectivo turno. A Tabela 2 apresenta os resultados encontrados com o uso do modelo de PLI. Na última linha da tabela, tem-se o somatório dos resultados obtidos nos 4 turnos. Tabela 2: Resultados obtidos no Cenário I Turno DU SAB DOM Solução ótima HE HO DP Tempo Gap (Tripulações) Turno 1 49 28 20 50 0:00 1.162:00 2,62 194:29 0,14% Turno 2 38 26 20 40 729:52 0:00 1,57 140:30 0,18% Turno 3 12 11 10 14 225:52 0:00 0,00 50:12 0,00% Turno 4 5 5 3 6 0:00 135:13 0,41 0:03 0,00% Total 104 70 53 110 955:44 1.297:13 -- 385:14 -- Analisando os resultados encontrados para o Cenário I, é possível perceber que, para cada turno, toda a compensação possível entre horas extras e ociosas foi realizada, zerando as HE nos turnos 1 e 4. Da mesma forma, foram zeradas as HO nos turnos 2 e 3. Com o objetivo de melhorar os resultados encontrados, compensando ainda mais a quantidade total de horas extras e ociosas, os 4 turnos foram reduzidos para apenas 2 turnos operacionais. 5.2.2. Cenário II: 2 turnos O Cenário II ilustra a modificação mencionada acima: o 1º turno apresenta todas as jornadas com início entre 4:00 e 15:59 (Turno 1 + Turno 2 do Cenário I). Como o intervalo entre 4:00 e 15:59 apresenta um número elevado de jornadas, foi necessário dividir o 1º turno em dois subgrupos, denominados Turno 1 e Turno 1. Por sua vez, o 2º turno engloba o restante das jornadas, que contam com início entre 16:00 e 3:59 (Turno 3 + Turno 4 do Cenário I). A Tabela 3 ilustra as características de cada turno e os resultados encontrados. Tabela 3: Resultados obtidos no Cenário II Turno DU SAB DOM Solução ótima HE HO DP Tempo Gap (Tripulações) Turno 1 48 29 20 49 0:00 462:14 6,84 360:00 1,25% Turno 1 39 25 20 41 30:13 0:00 5,32 360:00 9,76% Turno 2 17 16 13 20 90:39 0:00 5,38 360:00 1,81% Total 104 70 53 110 120:52 462:14 -- 1080:00 -- Em relação ao Cenário I, o Cenário II apresentou o mesmo número de tripulações, porém obteve uma quantidade total de horas extras e ociosas consideravelmente menor do que no caso anterior. Credita-se esse resultado à união dos turnos 1 e 2 do Cenário I, o que possibilitou uma compensação das horas ociosas obtidas no Turno 1 com as horas extras do Turno 2. Houve uma compensação dessas horas também na união dos turnos 3 e 4. 5.2.3 Cenário III: 2 turnos O problema original conta com um total de 227 jornadas, divididas em 4 turnos, envolvendo as jornadas dos dias úteis, dos sábados e dos domingos. Buscando-se a divisão dos turnos, de forma a equilibrar também a quantidade de jornadas por turno, foi criado o Cenário III com 2 turnos: no 1º turno estão todas as jornadas com início entre 0:00 e 11:59, que envolve um total de 114 jornadas, que é a soma das jornadas dos dias úteis, sábados e domingos. Por sua vez, o 2º turno engloba o restante das jornadas, com início entre 12:00 e 23:59, totalizando 113 jornadas para os mesmos dias. A Tabela 4 ilustra as características de cada turno e os 9

resultados obtidos. Tabela 4: Resultados obtidos no Cenário III Turno DU SAB DOM Solução ótima HE HO DP Tempo Gap (Tripulações) Turno 1 56 35 23 57 0:00 1.102:58 19,13 360:00 1,84% Turno 2 48 35 30 52 785:59 0:00 6,94 360:00 0,66% Total 104 70 53 109 785:59 1.102:58 -- 720:00 -- Neste cenário foi possível reduzir ainda mais o número de funcionários, passando para 109 o total deles. Credita-se o resultado encontrado à distribuição praticamente igual das jornadas nos turnos (114 jornadas para o Turno 1 e 113 jornadas para o Turno 2). Por outro lado, houve um aumento considerável no total de horas extras (HE) e de horas ociosas (HO) na escala. Este resultado ressalta a característica de objetivos conflitantes inerente ao problema. 5.3. Comparação de resultados Na Tabela 5, os resultados obtidos para cada um dos 3 cenários são apresentados juntamente com os resultados da escala realizada pela empresa e dos trabalhos de Mayrink e Silva (2013) e de Prates e Silva (2014), que resolvem o mesmo problema e utilizam os mesmos dados. O trabalho desenvolvido por Mayrink e Silva (2013) foi reproduzido considerando as adaptações necessárias para refletir o mesmo problema e consequentemente as mesmas restrições impostas ao modelo deste trabalho. O outro trabalho foi desenvolvido por Prates e Silva (2014) e adota os mesmos turnos do problema original, bem como contempla todas as suas restrições. Neste trabalho, entretanto, as folgas seguem um regime fixo do tipo 5/1, onde as tripulações trabalham cinco dias e folgam no sexto dia. É importante lembrar que dentre os cenários reproduzidos, apenas no Cenário I cabe uma devida comparação com os resultados obtidos nos outros trabalhos e com a escala adotada pela empresa. Nos demais cenários, os turnos foram modificados com o objetivo de fazer uma análise do impacto dessas mudanças nos resultados encontrados. A Tabela 5 apresenta esses resultados, constituídos da quantidade de tripulações, quantidade total de horas extras (HE) e de horas ociosas (HO). Tabela 5: Comparação de resultados Tripulações HE HO Cenário I 110 955:44 1.297:13 Cenário II 110 120:52 462:14 Cenário III 109 785:59 1.102:58 Empresa 244 1.106:39 1.695:52 Mayrink e Silva (2013) 110 804:56 1.146:25 Prates e Silva(2014) 122 490:40 832:09 Considerando a quantidade de tripulações, ambos os cenários operacionais obtiveram um excelente resultado quando comparado à escala realizada pela empresa e aos dois trabalhos presentes na literatura. Obteve-se uma redução superior a 50% do número de funcionários em relação à escala utilizada pela empresa. Quanto aos trabalhos da literatura, os Cenários I e II conseguiram o mesmo número de tripulações obtidas por Mayrink e Silva (2013), ao passo que no Cenário III, foi possível reduzir o total de tripulações. Todos os cenários superaram o resultado encontrado no trabalho de Prates e Silva (2014). Em relação às horas extras e ociosas, o modelo obteve uma diminuição na quantidade de 10

ambas as horas quando comparado à escala realizada pela empresa. Em contrapartida, os trabalhos referências da literatura obtiveram melhores resultados quando comparados ao Cenário I deste trabalho. No trabalho de Prates e Silva (2014), a redução na quantidade total de horas extras e ociosas foi consideravelmente maior que no presente trabalho e em Mayrink e Silva (2013). Certamente essa diferença está ligada a quantidade de tripulações. Quanto maior essa quantidade, maior a flexibilidade na distribuição das jornadas, diminuindo-se assim o somatório total de horas extras e ociosas realizadas. Comparando o resultado do Cenário II com o trabalho de Mayrink e Silva (2013), fica evidente que uma flexibilização maior nos turnos de trabalho, ou seja, nos horários de início das jornadas, permite uma redução significativa no total de horas extras contidas na escala, que neste caso foi da ordem de 84,97%. A mesma comparação pode ser feita entre os Cenários I e II, onde a diferença está apenas na amplitude dos turnos de início de trabalho. 6. CONSIDERAÇÕES FINAIS Para a resolução do Problema do Rodízio de Tripulações, foi proposto um modelo de PLI ainda inédito na literatura e voltado para problemas da realidade brasileira. O problema original foi dividido em 4 subproblemas, cada qual contendo as jornadas de um respectivo turno, com o propósito de diminuir a complexidade do problema e tornar possível a sua resolução pelo modelo exato proposto. Em relação aos resultados obtidos, o modelo de PLI proposto se mostrou eficiente para a resolução do PRT, ao reduzir consideravelmente o número de tripulações, a quantidade total de horas extras e horas ociosas e a diferença entre a carga de trabalho das tripulações, quando comparado à escala realizada pela empresa. Em relação aos resultados de alguns trabalhos presentes na literatura, o modelo se mostrou competitivo, conseguindo o menor número de funcionários. Por outro lado, o modelo tem um pior desempenho na minimização da quantidade total de horas extras e ociosas realizada. Credita-se esse pior resultado exatamente à resolução do problema por turnos, o que deixa a restrição V - descrita na Seção 3 - mais forte, não permitindo aos funcionários troquem de turnos aos finais de semana. Vale ressaltar que não é possível minimizar ainda mais a quantidade total de horas extras ou horas ociosas de cada turno, visto que para todos eles, o resultado obtido contemplara apenas horas extras ou ociosas. Portanto, independentemente do Gap apresentado pelo CPLEX, o qual é consideravelmente baixo, acredita-se que as soluções encontradas sejam as ótimas, restando ao pacote computacional apenas provar esta condição. Outro resultado encontrado no modelo está relacionado ao desvio padrão entre a quantidade total de horas extras e ociosas realizada pelos funcionários. Citado como um dos objetivos do PRT, os trabalhos presentes na literatura e na escala realizada pela empresa não consideram estas características na solução. No presente trabalho, o desvio padrão encontrado foi desprezível. Considerando os turnos originais do problema, o maior desvio padrão encontrado foi menor do que 3 minutos, sendo um total de 50 tripulações, em um período de 7 semanas. A fim de se verificar o impacto dos turnos nos resultados obtidos, vários cenários operacionais foram criados, com diferentes turnos. No Cenário I, os turnos são rigorosamente iguais ao problema original. O Cenário II apresenta dois turnos: um deles agrupa os turnos 1 e 2 do problema original e o outro agrupa os turnos 3 e 4. Por sua vez, o Cenário III também se divide em dois turnos, separando as jornadas que começam antes das 12:00 das jornadas que começam após este horário. Em relação à minimização do número de funcionários, com o 11

Cenário III foi obtido o melhor resultado: 109 funcionários. O Cenário II apresenta o melhor resultado relacionado à quantidade total de horas extras e ociosas realizadas, contendo apenas 120 horas e 52 minutos de horas extras e 462 horas e 14 minutos de horas ociosas. Na função objetivo do modelo proposto, utilizou-se um peso, associado à variável correspondente aos funcionários, a fim de dar preferência à minimização dos funcionários em relação à minimização da quantidade total de horas extras e ociosas e/ou a redução da diferença da carga horária total de trabalho realizada pelos mesmos. É notório que os objetivos citados acima são conflitantes: um número menor de funcionários implica em uma maior quantidade de horas extras e/ou ociosas realizadas pelos mesmos. Um número maior de funcionários implica em uma redução na quantidade dessas horas. Assim, como trabalho futuro, é sugerida a utilização de abordagens multiobjetivos para a resolução do PRT, visto que tem-se vários objetivos neste problema e que são conflitantes entre si. Sugere-se também o estudo de metaheurísticas para a resolução do PRT, comparando os resultados com os obtidos no atual trabalho. Agradecimentos Os autores agradecem ao CNPq, à Fapemig e à Universidade Federal de Ouro Preto pelo apoio recebido durante a realização deste trabalho. REFERÊNCIAS BIBLIOGRÁFICAS Bianco, L.; M. Bielli; A. Mingozzi; S. Ricciardelli e M. Spadoni (1992) A heuristic for procedure for the crew rostering problem. European Journal of Operations Research, v. 58, n. 2, p. 272-283. Caprara, A.; M. Monaci e P. Toth (2003) Models and algorithms for a staff scheduling problem. Mathematical Programming, v. 98, p. 445-476. Carraresi, P. e G. Gallo (1984) A multi-level bottleneck assignment approach to the bus drivers rostering problem. European Journal of Operation Research, v. 16, p. 163-173. Ernst, A. T.; H. Jiang; M. Krishnamoorthy e D. Sier (2004a) Staff scheduling and rostering: A review of applications, methods and models. European Journal of Operational Research, v. 153, p. 3-27. Ernst, A. T.; H. Jiang; M. Krishnamoorthy; B. Owens e D. Sier (2004b) An annotated bibliography of personnel scheduling and rostering. Annals of Operations Research, v. 127, p. 21-144. Lin, S. e B. W. Kernighan (1973) An effective heuristic for the traveling salesman problem. Operations Research, v. 21, p. 498-516. Mayrink, V. T. M. e G. P. Silva (2013) Otimização do rodízio de tripulações do sistema de transporte público. Journal of Transport Literature, v. 7, n. 3, p. 192-213. Mesquita, M.; M. Moz; A. Paias; J. Paixão; M. Pato e A. Respício (2011) A new model for the integrated vehicle-crew-rostering problem and a computational study on rosters. Journal of Scheduling, v. 14, p. 319-334. Moz, M.; A. Respício e M. V. Pato (2009) Bi-objective evolutionary heuristics for bus driver rostering. Public Transport, v. 14, p. 189-210. Nurmi, K.; J. Kyngas e G. Post (2012) Driver rostering for bus transit companies. Engineering Letters, v. 19, n. 2, p. 125-132. Prates, R. F. C. e G. P. Silva (2014) Otimização da Escala Mensal de Motoristas de Ônibus Urbano Utilizando a Heurística Variable Neighborhood Search. Transportes, v. 22, p. 31-43. Toffolo, T. A.; M. J. F. Souza; G. P. Silva (2005) Resolução do Problema de Rodízio de Tripulações de Ônibus Urbano via Simulated Annealing e Iterated Local Search.Anais do XIX Congresso da ANPET, v. 2. p. 657-668. Yunes, T. H.; V. A. Moura e C. C. Souza (2000) Modeling and Solving a Crew Rostering Problem with Constraint Logic Programming and Integer Programming. Relatório Técnico, Instituto de Computação, UNICAMP. Matheus Guedes Vilas Boas (matheusgueedes91@gmail.com) Gustavo Peixoto Silva (gustavo@iceb.ufop.br) Departamento de Computação, Instituto de Ciências Exatas e Biológicas, Universidade Federal de Ouro Preto Campus Universitário, Morro do Cruzeiro Ouro Preto, MG, Brasil 12