Keywords: Crew Scheduling, Optimization, Bipartite Matching, Tabu Search, Set ... Secondly, the schedules produced were at best feasible, but there were no ... building a new train line, proposed merger between train and bus companies, etc), ... subsequently involved in the development of the optimization engine for the.
An Optimization Based Approach to the Train Operator Scheduling Problem at Singapore MRT Kim-Lin Chew, Johnny Pang Indepth Consulting
Qizhang Liu, Jihong Ou, and Chung-Piaw Teo Department of Decision Sciences, Faculty of Business Administration, National University of Singapore Abstract Singapore Mass Rapid Transit (SMRT) operates two train lines with 83 kilometers of track and 48 stations. A total of 77 trains are in operation during peak hours and 41 during off-peak hours. In this article we report on an optimization based approach to develop a computerized train-operator scheduling system that has been implemented at SMRT. The approach involves a bipartite matching algorithm for the generation of night duties and a Tabu search algorithm for the generation of day duties. The system automates the train-operator scheduling process at SMRT and produces favorable schedules in comparison with the manual process. It is also able to handle the multiple objectives inherent in the crew scheduling system. While trying to minimize the system wide crew-related costs, the system is also able to address concern with respect to the number of split duties. Keywords: Crew Scheduling, Optimization, Bipartite Matching, Tabu Search, Set Partitioning Model
1
1.
Introduction
In 1972, the Singapore Government and the United Nations Development program, with the International Bank for Reconstruction and Development, embarked on a major transport study in Singapore. The study considered traffic demand forecasts, impact of ongoing and committed road improvements, impact of proposed administrative pricing, traffic engineering and other environmental restraints unique in Singapore contexts. After examining five alternative public transport systems, it reached the conclusion that a conventional rail mass transit system was a superior alternative to complement the existing public bus service. This forms the major impetus for several more phases of feasibility studies to identify potential locations and design of the new mass rapid transit system. The Singapore MRT Limited (SMRT) was finally incorporated on August 1987 to operate the MRT system, under a license granted by the Land Transport Authority of Singapore. SMRT currently operates two train lines with 83 kilometers of track and 48 stations. The two train lines are illustrated in Figure 1: the East-West Line goes from Pasir Ris (the easternmost station) to Boon Lay (the westernmost station), and the Central Line goes from Marina Bay in the south up north to Woodlands then down to Jurong East in the west.
Figure 1. SMRT Train System A total of 77 trains are in operation during peak hours and 41 during off-peak hours. Due to different traffic demand patterns, there are three types of train schedules, one for weekdays, one for
2
Saturdays and one for Sundays and public holidays. The train schedules consist of train runs as shown in Figure 2. Some of the train runs are almost a day long, like run 1, while others are rather short, like runs 2 and 3. The three types of schedules change from time to time as the traffic demand changes. The train operator scheduling problem is to generate a duty schedule for train operators to man all the train runs in a given train schedule. The duty schedule is constrained by many labor rules as in a typical crew scheduling problem. The objective is to minimize the total crew-related cost (given by a complicated calculation that will be explained in detail later) of manning the given train schedule. Time Run1
0500 0600 0700 0800 0900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400
Morning Piece
Day Pieces Evening Piece
Run2 2 Run3
Figure 2. Typical Train Runs Previously an experienced manager was in charge of scheduling train operator duties. He accomplished his job manually by tapping onto his past experiences to make minor changes to existing crew schedules. Although the performance of this manual process was deemed satisfactory, there were several inherent weaknesses and SMRT management was understandably concerned. Firstly, it is risky to rely on one person’s experience for the smooth running of the MRT system. It takes many years of experience before the human scheduler can comfortably accommodate all crew scheduling “constraints” in his proposed schedules. This is not easily transferable to the next person assigned to do the job. Secondly, the schedules produced were at best feasible, but there were no other means to compare the schedules generated with the “best possible” in terms of cost savings. Thirdly, the scheduling process was time consuming. It took the manager plus an assistant more than one week to come up with a feasible operator schedule every time the train schedules were changed (even slightly). With the imminent changes in the transport scene in Singapore (e.g., recent government initiatives include building a new train line, proposed merger between train and bus companies, etc), SMRT management decided that a computerized system to generate train operator schedules was a necessity and called upon the first two authors to study the problem and to design a customized
3
software package for their special two-line MRT system. The team from the National University of Singapore were subsequently involved in the development of the optimization engine for the scheduling problem. Considering the relatively small size of the problem (the two lines are manned by two separate groups of operators, and thus, effectively the problem is reduced to two single-line problems), an optimization-based approach to obtain the theoretical minimum cost solution is thus preferred. As in the typical approach to this kind of crew scheduling problem, we first subdivide the train runs of a given train schedule into smaller pieces of work, and then try to optimally combine these pieces of work into legal train operator duties that cover all the train runs. The second (combining) step is formulated as a mathematical optimization problem. There are two such formulations, one for the overnight duties and one for the day duties. The night duty formulation is solved by a bipartite matching algorithm. It pairs late evening pieces of work with early morning pieces of work. The day duty generation problem is much more difficult. It is formulated as a setpartitioning problem, and near optimal solutions are then found by a Tabu search algorithm. The optimization engine, coupled with a user-friendly window GUI software package, is now currently in use at SMRT. The package greatly simplifies the train operator scheduling process for the company, reducing the time to generate a feasible operator schedule from a week (under the manual system) to several hours, and the schedules generated are almost always favorable over those generated manually. The package is also very flexible in that it allows human intervention at any point of the automated scheduling process. In the following we describe our approach to the train operator-scheduling problem at SMRT. In Section 2, we give a brief review of the literature on the classical crew scheduling problem. In Section 3 we describe in details the nature of our problem, the cost structure deemed important according to SMRT management, and the constraints stipulated by the local labor rules. Section 4 presents the mathematical formulations and the solution algorithms. We then describe in detail the software package in Section 5 and the experiences and lessons learned during the implementation stage.
4
2.
Brief Literature Review
Attempts to develop computer programs to compile bus and crew schedules began in the late 60s. Many examples of early systems are reported in (Rousseau 1985). Most of the early systems are based on some heuristic modeling and solution approaches, which are surveyed in Wren (1981). In the meantime, operations researchers have been working on optimization based approaches to solve the crew scheduling problem. Such approaches typically follow a two-staged procedure. In the first stage, the bus (train, flight) lines are cut into small pieces of work; and the second stage involves how to optimally combine these pieces to generate feasible duties covering all the lines with the minimal cost. Bodin et. al. (1983) provides an excellent survey of the research in this field, and examples of computer systems following optimization-based approaches are reported in Desrochers and Rousseau (1990). In the 90s, computers became more widespread and more powerful, making it possible for researchers to solve large-scale problems in crew scheduling for the first time. Many new computer systems designed for automating crew scheduling processes are subsequently being reported in the literature. The problem instances come from all types of transportation industries and service operations. See Beasley and Cao (1998) for a recent literature survey on this topic. However, the basic two-stage procedure has been the norm in problem modeling and solution approaches. Typically, the first stage consists of cutting the schedule into smaller work pieces. The smaller work pieces obtained at this stage are usually defined naturally by the problem instances. In the case of the train operator scheduling problem at SMRT, the smaller work pieces correspond to a stretch of the train run where changing of train operator is not feasible or allowed. The entire train schedules are cut only at relief points where changing of train operators are allowed. This happens only when the trains arrived at certain selected train stops. The second stage of combining work pieces to form duties is handled by formulating it as an optimization problem, usually a matching problem, a set partitioning problem, a set covering problem, or others. The optimization problem formulation is then solved by various algorithmic techniques, including implicit enumeration procedures of branch-and-bound types, Lagrangian relaxation approaches, column generation approaches, and others. Beasley and Cao (1998) gave examples of these solution approaches. We also refer the readers to the comprehensive web resources collected in http://www.informatik.hu-berlin.de/~weinert/CrewSched.html for many other references in the crew scheduling literature, which we have to regrettably omit due to space constraint.
5
In our work, we have a bipartite matching formulation for the night duties that is solved by the well-known Hungarian algorithm, and a set-partitioning problem for the day duties that is solved by a Tabu search algorithm. Tabu search has been known as an “extremely promising” heuristic algorithm for solving large-scale combinatorial optimization problems in a number of practical settings (CONDOR 1988). It was first suggested by Glover (1977) and since then many exciting implementations of Tabu search have been reported for various application problems, like production planning and scheduling, time-tabling, resource allocation, vehicle routing and scheduling, etc. See the references in Glover and Laguna (1997). The basic idea of the method is to explore the search space of all feasible solutions by a sequence of moves. A move from one solution to another is the best available. However, to escape from locally optimal but not globally optimal solutions and to prevent cycling, some moves, at one particular iteration, are classified as forbidden or tabu (or taboo). Tabu moves are based on the shortterm and long-term history of the sequence of moves. Sometimes, when it is deemed favorable, a tabu move can be overridden. Such aspiration criteria might include the case that, by forgetting that a move is tabu, leads to a solution which is the best obtained so far. Here we report our successful implementation of Tabu search algorithm for the SMRT crew-scheduling problem. Note that applying Tabu Search technique on crew scheduling problem is not a new idea (see Cavique et al. (1997) for instance). However, our implementation is of independent interest as it exploits the crucial facts that (i) the set-partitioning model is more suitable for this problem than the set-covering model, and (ii) there are two criteria that the management is interested in (total cost and number of split duties). These are features that complicate the approach using classical mathematical programming techniques. However, using a local search technique such as Tabu search, the set partitioning model is better (compared with the set covering model) as the solution space is smaller, and the neighbourhood structure is easier to define. Furthermore, the different objective functions can be used fruitfully as different search directions to get the algorithm out of local optima, thus addressing a major difficulty in most local search procedures.
3.
Problem Specifications
Figure 2 depicts the typical 3 types of train runs in a given train schedule. The first stage of work-piece cutting cuts the train runs into work pieces. One of the labor rules requires that day duties cannot start before 0645 hours and end after 2315 hours. The train runs before 0645 hours
6
and after 2315 hours have to be manned by overnight duties. We therefore first cut out the beginning piece on a train run that starts early in the morning from its start to the first possible shift-changing point after 0645 hours, as shown on runs 1 and 2 in Figure 2. Similarly, we cut out the ending piece on a train run that ends late in the evening from the last shift-changing point before 2315 hours to the end, as shown on runs 1 and 3 in Figure 2. These beginning and ending pieces will be paired to form night duties manned by train operators who stay overnight in the company. The remaining train runs are cut into consecutive pieces of work that are not more than 270 minutes each. 270 minutes is the maximum length of time an operator is allowed to man a train continuously without a break. These work pieces are used to form day duties. In addition to these normal work pieces, there are a few train runs where an operator is needed at each end of the train as it turns around at terminal stations. This is to enable fast turning around of the train at the terminals during peak hours, and is called double-ending duties at SMRT. The double-ending work pieces are linked with each other to form a long enough piece of work that are treated the same as the normal work pieces. There are various restrictions, however, on the formation of a duty: Restrictions on Duties:
Restrictions are placed on the duties that can be formed, which are
indicated in Table 1 below. The two types of day duties, normal and split, are differentiated by the length of the meal break and the spread of the work pieces.
Day Duty Normal
Split
Night Duty
Working hours: Maximum
9 hours
8.5 hours
9 hours
Minimum (unofficial)
6 hours
6 hours
6 hours
Maximum
10 hours
12 hours
10 hours
6.75 hours
-
6.75 hours
Spread:
Minimum (unofficial) Part duty:
7
Maximum
4.5 hours
4.5 hours
4.5 hours
Minimum
Nil
Nil
Nil
Minimum
45 mins
>1 hours
45 mins
Maximum
60 mins
5 hours
60 mins
Break between workpieces:
Table 1. Time Constraints on Duties Traveling Time Allowances: If a train operator is on a normal duty and resumes duty at another location after a break, the travelling time between the previous location and the location where he resumes duty will be counted as part of his working hours. However if he is on a split duty and resumes duty at an equivalent location, the time taken to travel to the equivalent location will not be counted as part of his working hours. Other Time Allowances: Table 2 shows the time allowed in minutes for various activities relating to reporting for work and finishing work. Task
Activity
At Depot Changi
Other
At Station
Reporting
Booking on
5
5
5
For
Walking to train
8
6
3
Work
Preparing train
16
16
Nil
6
6
Nil
35
33
8
Transferring berth Total Finishing
To stabling side
6
6
Nil
Work
Stabling train
5
5
Nil
Walking to office
8
6
5
Booking off
5
5
24
22
Total
Table 2. Time Allowed for Reporting for Work and Finishing Work
8
5
The Objective: SMRT is interested primarily in minimizing the total number of duties, but would also like to minimize the number of split duties as a secondary objective. We propose a duty costing formula that is used as an objective function in our optimization formulations to accurately reflect the concerns of SMRT management. The formula adds up the following cost components. −
Duty Cost: Associated with each duty is a constant cost.
−
Split Duty Cost: Each split duty will be charged an extra split duty cost so as to minimize number of split duties.
−
Balance Cost: Each duty is charged a Balance Cost proportional to the square of the number of working pieces in the duty.
−
Working time cost: Desired working time per duty is 7.5 hours, and thus, a duty with total working time less than 7.5 hours incurs a cost proportional to the time short.
−
Idle time cost: The idle time during the breaks of a duty is charged a cost proportional to the total break time.
−
Idle traveling cost:
When an operator travels on a train as a passenger while on duty, a
cost is levied with a fixed rate. −
Shift allowances: There are allowances for duties between 1500 hours and 2300 hours and the night shifts that cover the late evening and early morning pieces.
Among the above cost components, the duty cost overwhelms the others so that the first criterion of the model is to minimize the number of duties formed. The balance cost is defined in such a way that the Tabu search algorithm finds duties with fewer pieces.
4.
Problem Formulations and Solution Techniques
As stated above, the night duties and the day duties are contained in two separate schedules. Below we present our problem formulations to generate optimal schedules and the solution techniques applied to the formulations.
9
4.1
Night Duty Scheduling A night duty always consists of a morning piece and an evening piece. Thus, the night duty
scheduling problem is formulated as a weighted bipartite matching problem, with all the morning pieces in one group and the evening pieces in the other. The solution to the problem is obtained using the well-known Hungarian algorithm. The choice is made based on the algorithm’s simplicity in structure and ease in programming. 4.2
Day Duty Scheduling A day duty can be composed of many separate work pieces. Initially, SMRT Management
conveyed to the authors the intention of using only 2-piece duties for ease of control and management. Thus, we proposed a weighted non-bipartite matching formulation and implemented the shortest augmenting path method developed by Derigs (1988) for its solution. After seeing the solution to such a formulation, SMRT management wanted the system to include 3-piece duties to see the impact on improvement to the solution. Then, the matching problem formulations would not apply, and we had to consider a set partitioning problem or a set covering problem formulation. Both formulations are much more difficult to solve than the non-bipartite matching problem. It is generally true that a set covering problem formulation is relatively easier to solve. However, usually a solution from a set covering problem formulation needs to be manually adjusted to eliminate some overcovering. When it was tried out for the train operator scheduling problem at SMRT, it was found that the overcovering is so much that the number of duties increases substantially after manual modification. Allowing double covering in the duties was also ruled out. Although this will result in fewer duties (as the model is relaxed from set partitioning to set covering) being generated, it will be hard to persuade the train operators to accept these unnecessary duties, and padding unnecessary work in between work pieces separated by long breaks in the duties might be perceived as an indirect way to circumvent the labor rules. Therefore we adopted a set partitioning problem formulation as given below:
10
(SPP) Minimize
Σ cdyd d∈D
Subject to:
Σ yd = 1,
for i ∈ P;
i∈ d
yd ∈ {0, 1},
for d ∈ D.
where P is the set of work pieces and D is the set of all feasible duties. cd is duty d’s cost, and yd = 1 if duty d is in the solution and 0 otherwise. A work piece i∈d if it is covered by duty d. We tested several techniques to solve SPP, including branch-and-bound approaches and Lagrangian relaxation approaches. The convergence of these techniques was found to be far too slow for the size of the input of the actual problem. They were not able to solve the problem to optimality, and the best solution generated using these approaches were often not as good as those generated manually. We also realize that the actual problem is multi-criterion in nature. The desires of SMRT management included minimizing the number of duties and also the number of split duties. We finally took up a Tabu search based approach for its ease of implementation, and also for the fact that the multi-criterion nature of the problem can be used to good effect by changing the direction of search in the execution. With this approach we were able to solve successfully SPP for up to 500 work pieces and the number of feasible duties possibly running into millions. In essence, Tabu search is an algorithm of local search augmented with adaptive memory. Starting with an initial solution, the algorithm proceeds iteratively by replacing current solution s with a best neighbor s′ ∈ N(s) among all possible moves. This procedure stops when certain stopping criteria are satisfied. The neighborhood N(s) of the current solution s is defined by move operators, which play the key role in Tabu Search algorithms. The move operators determine the operations that can be done to move from one solution to another. In our Tabu search algorithm, to solve the set partitioning problem as formulated above, there are three move operators: Cross operator, Exchange operator, and Relocate operator. The cross operator swaps work pieces of two duties, the exchange operator exchanges two work pieces between two duties, and the relocate operator relocates one work piece from one duty to another duty. See the illustration of Figure 3.
11
Cross
Exchange
Relocate
Figure 3. Move Operators
Tabu search algorithms differ from other descent search methods in the introduction of a tabu list. In our implementation, the tabu list is a two dimensional array θx = (τij) in which τij stores tabu active status of edge ij. Edge ij is in solution if work piece i and work piece j are adjacent in a duty of the solution, and out of solution if otherwise. Specifically, τij is the time (i.e. iteration number) when tabu-active status of edge ij ends, i.e. τij = startij + tenure, where startij is the iteration number immediately before edge ij entered or left a solution and tenure is the tabu tenure, which is a fraction of the size of θx. In practice, Tabu search is effective when tenure is a random number in the range [|P|2/10, |P|2/9] generated at iteration startij. Moves that change status (in or out of solution) of tabu active edges are prohibited during the tenure. The pseudo code of our Tabu search algorithm is given below:
12
Generate an initial feasible solution s; Let count = 0; Let sbest store the best solution. While (count < threshold) Do Let s* be a temporary variable storing the best neighbor of s. For each pair of duties d1 and d2 in s and each move operator, Do Apply the move operator to d1 and d2, obtain a new solution s1. If s1 is feasible and is not tabu active, Do If s1 is better than s*, then set s* = s1. End End If s* is better than s, then count = 0, else count = count + 1. Set s = s*. If s is better than sbest, set sbest = s. End. Table 3. Pseudo code of the Tabu search algorithm Remarks: 1. The size of the neighborhood of a solution is O(|P|2). Typically in Tabu search, instead of searching the whole neighborhood, most implementations follow one or the other kind of candidate list strategy to evaluate only those moves with bigger potentials. For our problem, however, due to various labor rule constraints and the complexity of the cost structure, checking feasibility and evaluating a candidate list itself is quite expensive. Therefore, after extensive experiments, we decided to maintain a dynamic duty pool that stores a small portion of duties in current solution, and at each iteration only apply move operators to duties in the pool. When no improvement can be made, new duties from current solution will be randomly selected to replace some duties in the pool. 2. The quality of the solutions obtained depend on several measures. To facilitate a meaningful comparison, we formulate a total cost function of the solution by aggregating the various measurements together (i.e., using the various cost components as listed in Section 3). In the actual implementation of the Tabu search algorithm we experimented with different choices of the proportionality parameters to aggregate the various measurements while computing the total cost of the solutions. Since the ultimate objective is not to minimize any costs but rather the number of duties and also the number of split duties, we change the proportionality parameters to these costs intelligently when the tabu search algorithm get stuck at some region of the solution space.
13
5. Implementation In this section we present the computer implementation of our approach to the train operator scheduling problem at SMRT and report on the implementation and testing experiences. The computer implementation results in a software package (MrtSchedule) which is structured as follows: •
Scheduling Manager is a bridge connecting GUI with optimization engine. It links GUI with data manager, scheduling engine and the result;
•
Data Manager interprets data files to basic system objects: Train Runs, Relief Points and Working Pieces, which are input to scheduling engine;
•
Scheduling Engine implement the Tabu Search algorithm to obtain optimal result;
•
Solution includes a list of duties, which are represented as in Figure 4.
Starting duty
Dummy Piece
Meal Break
Working Working Working Piece 1 Piece 2 Piece 3
Working Piece 4
Ending Duty
Working Piece 5
Dummy Piece
Figure 4. Duty Representation
A GUI was added to allow users to view the optimization process and to decide whether the result is good enough to terminate the program. The software was tested at SMRT with actual train schedules, and the results were very positive. Benefits were observed in the following aspects: •
Time Required to Prepare Duty Schedules from Scratch This has been reduced from 22 weeks to three weeks. In fact, the time required to generate a duty schedule is usually less than 6 hours for weekend schedules and less than a day for weekday schedules. The rest of the time is spent on fine-tuning the schedules to cater to train operators’ preferences.
•
Quality of the Schedules. The number of duties in computer generated schedules on average is 10% to 20% less than that in manually prepared schedules for Saturday and Sunday train schedules and 5% less for weekday train schedules. The actual figures are listed in Tables 4 and 5. In
14
addition, the number of split duties in most cases has been significantly reduced in most cases, which means that the quality of the solution has improved significantly.
Schedule Type
Manual System
Automated System
Difference
Weekday
83 (with 17 split)
80 (with 15 split)
3 (4%)
Saturday
83 (with 8 split)
72 (with no split)
11 (13%)
Sunday
82 (with no split)
61 (with no split)
21 (26%)
Table 4. Comparison of the Results Obtained for the North-South Line
Schedule Type
Manual System
Automated System
Difference
Weekday
88 (with 17 split)
84 (with 19 split)
4 (5%)
Saturday
74 (with 13 split)
64 (with 3 split)
10 (14%)
Sunday
71 (with no split)
56 (with no split)
15 (21%)
Table 5. Comparison of the Results Obtained for the East-West Line
•
Reporting Capability. The computer software can display and print train schedules and duty schedules graphically. This was not possible in the past when the staff had to manually cut and paste the train runs to form the operator schedules.
•
Training Staff to Perform Crew Scheduling. The computer package makes it easy to train new staff to take over the crew scheduling function. A new staff just needs to learn how to use the software to do some fine-tuning. The computer system as implemented is thus clearly superior to the manual process. But
before the more efficient duty schedules can be implemented, several issues pertaining to the operation need to be addressed. One of them is that the present crew rostering system adopted by the SMRT results in equal number of men on duty every day of the week. However, under the new
15
schedule, fewer staff is needed on weekends than on weekdays as can be clearly seen from Tables 4 and 5. Therefore before it could fully implement the more efficient duty schedules, SMRT would need to address the impact of the new schedule on its rostering system. Another concern is whether the train operators will accept the schedule produced by the system, and whether there are any other genuine concerns of the operators that have not been taken care of in the system. SMRT has thus opted to reduce gradually the weekend manning levels, by manually adjusting the output from the scheduling system. This is also done in consultation with the train operators to uncover further hidden constraints in the train operations. This approach has helped to win over the support of the train operators, who now felt that they “owned” the system and is not “controlled” by the system.
6. Conclusion In this paper, we report on an optimization-based approach to develop a computerized train-operator scheduling system that has been successfully implemented at SMRT. Combinations of optimization techniques ranging from a traditional matching algorithm to a new Tabu search heuristic were employed in the approach. The approach we have adopted for the problem is novel in the sense that the multi-criterion nature of the problem is being used to good effect in the local search approach. This also allows us to circumvent the difficulty of solving the set partitioning formulation using traditional mathematical programming approach, which incidentally cannot address the issues of multiple criteria effectively. Although the theoretical efficiency of our proposed approach cannot be established analytically, the drastic improvement over the current manual system suffices to demonstrate once again the applicability of the powerful OR approach in tackling real business issues. In fact, one of the most satisfying experiences from this study is to influence and help SMRT management to see the power and importance of this approach in tackling their operational problems.
16
References Beasley, J. E. and B. Cao (1998) Dynamic Programming Based Algorithm for Crew Scheduling, Computers and Operations Research, 25, 567-582. Bodin, L., B. Golden, A. Assad, and M. Ball (1983) Routing and Scheduling of Vehicles and Crews; the State of the Art, Computers and Operations Research, 10, 63-211. Cavique, L., Rego, C., Themido, I. (1997) Subgraph ejection chains and tabu search for the crew scheduling problem, submitted. Committee on the Next Decade of Operations Research (CONDOR 1998) Operations Research: The Next Decade, Operations Research, 36. Derigs, U. (1988) Solving Non-bipartite Matching Problems vis. Shortest Path Techniques, Annals of Operations Research, 13, 225-261. Desrochers, M. and J.-M. Rousseau (1990) Computer-Aided Transit Scheduling, Springer-Verlag, Berlin. Glover, F (1977) Heuristics for Integer Programming using Surrogate Constraints, Decision Sciences, 8, 156166. Glover, F. and M. Laguna (1997) Tabu Search, Kluwer Academic Publishers. Rousseau, J. -M. (1985) Computer Scheduling of Public Transport 2, North-Holland, Amsterdam. Wren, A. (1981)
Computer Scheduling of Public Transport: Urban Passenger Vehicle and Crew Scheduling,
North-Holland, Amsterdam.
17