Summary: | === In a typical crew scheduling problem, for each crew member is assigned a set of trips (a duty) to be performed. The objective is to select the duties such as the total operational cost is minimized, and no trip is left uncovered. Although there are some constraints about how the trips may be combined in a feasible duty, the total number of feasible duties is generally large. For small instances it is possible to enumerate all feasible duties, and find the optimal solution solving a set partitioning or set covering problem. However, this approach may be time and memory consuming for large instances. On the other hand, some heuristics may be lost in the huge feasible space. As the optimal solution contains only few duties, column generation seems to be the best approach. The problem is then decomposed in master and subproblem, whose objectives are respectively select the best set of duties and generate new duties. The main focus of this work is about solving the subproblem, because, although both problems are NP-hard, the master problem can be quickly solved by linear programming packages if the number of duties is not so big, which usually happens in a column generation approach. In this work Greedy, Grasp and Genetic metaheuristics are used to speed up the column generation approach, assuring optimality by combining them with integer linear programming. Computational results for both real instances and instances from the literature are reported, showing that this hybrid method can solve crew scheduling problems to optimality quicker than using only exact methods. === Em problemas de alocação de tripulação, a cada membro da tripulação é designada uma jornada de trabalho, composta por uma seqüência de viagens a serem cobertas. O objetivo é selecionar as jornadas de forma a cobrir todas as viagens com custo operacional total mínimo. Embora haja várias restrições na combinação das viagens para a formação de uma jornada de trabalho, a quantidade total de jornadas viáveis possíveis é geralmente muito grande. Para instâncias pequenas é possível enumerar todas as jornadas viáveis, e encontrar a solução ótima resolvendo-se um problema de particionamento ou de cobrimento de conjuntos. Mas esta abordagem exata consome bastante tempo e memória para instâncias baseadas em dados reais. Por outro lado, soluções heurísticas podem se perder no grande espaço de soluções. Já que a solução ótima geralmente contém apenas um número bastante reduzido de jornadas, o método de geração de colunas parece ser a opção ideal. O problema é então decomposto em um problema mestre e um subproblema, responsáveis respectivamente por selecionar o melhor conjunto de jornadas, e gerar novas jornadas. O foco principal deste trabalho é a solução do subproblema, pois embora ambos sejam NP-hard, o problema mestre pode ser rapidamente resolvido pelos atuais pacotes de programação linear inteira, desde que o número de jornadas consideradas não seja grande, o que normalmente acontece quando se usa geração de colunas. Neste trabalho são usadas uma heurística gulosa e as meta-heurísticas Grasp e Genético para acelerar a geração de colunas, assegurando-se a otimalidade da solução combinando essas heurísticas com programação linear inteira. São reportados resultados computacionais para dados da literatura e de instâncias reais, mostrando que esse método híbrido pode resolver de forma exata problemas de alocação de tripulação mais rapidamente que utilizando-se apenas métodos exatos.
|