A Robust Genetic Algorithm for Resource Allocation in ... - Springer Link

40 downloads 0 Views 253KB Size Report
In our genetic algorithms we have employed two different types of ... observe a project example, in which activity 0 represents the source dummy activity. (a). (b).
Annals of Operations Research 102, 83–109, 2001  2001 Kluwer Academic Publishers. Manufactured in The Netherlands.

A Robust Genetic Algorithm for Resource Allocation in Project Scheduling J. ALCARAZ and C. MAROTO {jalcaraz, cmaroto}@eio.upv.es Department of Statistics and Operations Research, Universidad Politécnica de Valencia, Camino de Vera s/n., 46022 Valencia, Spain

Abstract. Genetic algorithms have been applied to many different optimization problems and they are one of the most promising metaheuristics. However, there are few published studies concerning the design of efficient genetic algorithms for resource allocation in project scheduling. In this work we present a robust genetic algorithm for the single-mode resource constrained project scheduling problem. We propose a new representation for the solutions, based on the standard activity list representation and develop new crossover techniques with good performance in a wide sample of projects. Through an extensive computational experiment, using standard sets of project instances, we evaluate our genetic algorithm and demonstrate that our approach outperforms the best algorithms appearing in the literature. Keywords: genetic algorithms, resource-constrained project scheduling, project management, heuristic and metaheuristic techniques, computational experiment AMS subject classification: 90-04, 90B99

1.

Introduction

Resource constrained project scheduling is a well-known problem widely studied in the literature. There are several recent papers that summarize research for the problem. We can mention the general work of Brucker et al. [11] as well as the work of Kolisch and Hartmann [44] which focuses on heuristic algorithms to solve the problem. Several authors have applied exact methods to solve this problem. The first works were the proposed by Carruthers and Battersby [13] in 1966, in which they applied a dynamic programming approach. Pritsker [69] and Patterson et al. [64,65] proposed a zero-one programming model. Other exact methods, based on implicit enumeration with branch and bound or lower bounds have also been successfully applied. We can mention, among others, the ones proposed by Balas [5], Davis and Heidorn [20], Hastings [34], Stinson et al. [80], Talbot and Patterson [81], Radermacher et al. [70], Christofides et al. [16], Patterson et al. [66], Bell and Park [7], Demeulemeester and Herroelen [23–25], Sprecher [76,77], Nazareth et al. [55], Simpson and Patterson [75], Brucker et al. [12], Sprecher and Drexl [77], De Reyck and Herroelen [22] and Mingozzi et al. [52]. As an NP-hard problem, the optimal solution can only be achieved by exact methods in small projects, usually with less than 60 activities, which are not highly resourceconstrained. Heuristic procedures are the alternative for larger projects, the best ones

84

ALCARAZ AND MAROTO

giving good solutions with few computational requirements and in a reasonable computation time. The first heuristic methods were those based on priority rules. These methods use a schedule generation scheme, either serial or parallel (for a detailed description of the serial and parallel method see Kolisch [42]), and one or more priority rules to construct one or more schedules. When only one schedule is generated, it is called a single pass method, while if the number of constructed schedules is higher they are called multi-pass methods. Amongst the former, we can point out the following: Davies [19], Patterson [61,62], Davies and Patterson [21], Thesen [82], Cooper [17,18], Whitehouse and Brown [88], Elsayed [28], Lawrence [47], Álvarez-Valdés and Tamarit [3], Boctor [8], Valls et al. [87], Ulusoy and Özdamar [86], Özdamar and Ulusoy [59], Kolisch [41] and Tormos [84]. Multi-pass methods can be classified into multi-priority rule, forward–backward and sampling. Multi-priority rule methods employ different priority rules to construct several schedules. Amongst these we can mention the works of Ulusoy and Özdamar [85], Boctor [8] and Thomas and Salhi [83]. Forward-backward methods, once they have constructed the initial schedule, try to move the scheduled activities to new positions to obtain a better schedule. Li and Willis [50], Özdamar and Ulusoy [60], and Lova [51] have successfully employed these methods to solve the problem. Sampling methods construct different schedules, biasing the order given by the priority rule through a random number. Several sampling methods for solving the Resource Constrained Project Scheduling Problem (RCPSP) have been proposed: Cooper [17], Álvarez-Valdés and Tamarit [2], Drexl [26], Kolisch [42], Kolisch and Drexl [43] and Schirmer and Riesenberg [72,73]. Other heuristic procedures which can not be classified together with the previous methods, such as truncated branch and bound methods or disjunctive arc based methods, have been documented by Shaffer et al. [74], Bell and Han [6], Pollack-Johnson [68] and Álvarez-Valdés and Tamarit [3]. The metaheuristics are the latest generation of heuristic algorithms and they have been applied to solve the RCPSP. In particular simulated annealing was introduced by Kirkpatrick et al. [39] in 1983 and can be viewed as an iterative improvement algorithm. An initial schedule is obtained and it is repeatedly improved making local alterations on it until better solutions can not be obtained with those modifications. Boctor [9], Lee and Kim [48], Cho and Kim [15] and Bouleimen and Lecocq [10] have implemented efficient simulated annealing algorithms to solve this problem. Tabu search is another metaheuristic method. As simulated annealing, it starts with a feasible solution, which is improved in the successive iterations. This procedure is designed to escape from a local optimum in pursuit of a global optimum. A tabu list is used to prevent from cycling (for more details refer to Glover [30,31]). Tabu search has been applied to the RCPSP in several works: Pinson et al. [67], Lee and Kim [48], Baar et al. [4] and Nonobe and Ibaraki [56]. Finally, genetic algorithms (GAs), introduced by Holland [36] in 1975, are based on the mechanisms of evolution and natural genetics (see Goldberg [32] for further refer-

ROBUST GENETIC ALGORITHM

85

ences). Genetic algorithms, which have been widely used in several optimization problems (see [14]), have not been commonly used up to now to solve this problem. We can mention the works of Leon and Balakrishnan [49], Kohlmorgen et al. [40], Lee and Kim [48], Özdamar [58], Hartmann [33], Mori and Tseng [53] and Alcaraz and Maroto [1]. Leon and Balakrishnan propose two local search heuristics and a genetic algorithm, which make use of problem-space based neighborhoods. They compare the performance of the three heuristics through a computational study, determining that the genetic algorithm outperforms the results obtained by the other two. Kohlmorgen et al. develop several versions of a parallel genetic algorithm in a multiprocessors system (a system with a total of 16,384 processors). Moreover, they study the impact of the selection strategy, number of generations and number of sub-populations in the performance of the genetic algorithm. Lee and Kim develop three metaheuristics, a genetic algorithm, a tabu-search and a simulated annealing algorithm, and compare their performance. The best results are obtained by the simulated annealing algorithm. Özdamar proposes a hybrid genetic algorithm (for the multi-mode variant of the problem) and compares its performance with some local search procedures for a variety of tests problems. Hartmann proposes a genetic algorithm and compares different representations for the solutions. Mori and Tseng develop a genetic algorithm and compare it with a stochastic scheduling method, thus improving its performance. Alcaraz and Maroto propose a genetic algorithm, study the optimal population size and compare its performance with some local search heuristics. In general, the literature about resource allocation in project scheduling through GAs has been focused on comparing them with other heuristic methods more than analyzing the GAs performance depending on algorithm operators and parameters. First, we propose new genetic algorithms for the RCPSP. Second, we have designed a new representation for the solutions, based on the permutation encoding, and have developed new crossover techniques applied to this new representation. We have studied the impact of the different genetic operators (selection, crossover and mutation) and parameters (crossover probability and mutation probability) in the performance of the genetic algorithms through an extensive computational experiment. In this experiment we have used the standard instances sets with 30, 60 and 120 activities of the Project Scheduling Problem Library, PSPLIB, generated by the problem generator Progen developed by Kolisch et al. [46]. This computational analysis has also permitted us to compare the performance of our genetic algorithm with a wide sample of heuristic methods including tabu-search, simulated annealing and genetic algorithms, showing that our approach outperforms the results given by the best heuristics appeared. The remainder of the paper is organized as follows: the next section describes the general formulation of the problem. In section 3 we describe in detail the genetic algorithms developed, including the new representation and the new crossover techniques proposed, and section 4 gives the details of the in depth computational experiment performed. The results of the experiment and the comparison of our algorithm with the best heuristics appeared are shown in section 5. Finally, in section 6 we point out the conclusions of the present work.

86

2.

ALCARAZ AND MAROTO

Problem formulation

The problem considered in this paper is the non-preemptive single mode resourceconstrained project scheduling problem, in which the objective is to minimize the makespan or total project duration. This problem can be formulated as follows: a project consists of a set J of N activities, J = {1, . . . , N} and a set R of K renewable resources, R = {1, . . . , K}. For each resource k ∈ R, we know its total amount or availability per-period which is constant and given by Ak . The duration or processing time of activity j ∈ J is dj . Pre-emption of activities is not allowed, that is to say when an activity starts it must be executed period by period until it is completed (the dj periods of execution time must be consecutive). In each period of its execution time t = 1, . . . , dj , activity j requires rj k units of resource k to be successfully executed. Of course rj k  Ak . Amongst some of the activities there are precedence relations, which can be due to technological requirements. Activity j can not start until all its immediate predecessors, given by the set Pj , have completely finished. The values of Ak , dj and rj k (availability of resources, duration of activities and requirements of resources by activities) are integer and non-negative. The objective is to determine the starting time of each activity, so that the project makespan or total project duration is minimized, and both the precedence and the resource constraints are satisfied. A chedule can be presented as S = {S1 , . . . , SN }, where Sj denotes the start time of activity j . This problem is noted as m, 1|cpm|Cmax in the notation proposed by Herroelen et al. [35], and PS|prec|Cmax in the one proposed by Brucker et al. [11]. 3.

The genetic algorithm

Figure 1 shows in pseudocode the general mechanism for the genetic algorithm. First, the initial population is generated, taking into account the representation of the solutions employed. Then, every individual is computed, i.e., the related schedule is built and its makespan is computed. After that, the following steps are repeated until the terminating condition (execution time, number of schedules or number of generations) is reached.

Figure 1. General genetic algorithm.

ROBUST GENETIC ALGORITHM

87

In the selection process, each individual receives a number of copies, depending on its fitness, such that the best individuals receive a higher number of copies. Then, the individuals are mated at random and each pair undergoes crossing to produce offspring. Finally, some individuals of the population mutate and the population is evaluated again. The number of schedules computed in each generation is not fixed and depends on the population size, the crossover probability and the mutation probability. 3.1. Solutions encoding In the literature we can find different types of representation for the solutions to this problem: Activity list representation. The solution is encoded as a precedence feasible list of the activities. Each activity can appear in the list in any position after all its predecessors. To construct the related schedule we could apply the serial method proposed by Kelley [38]. We would schedule the activities, one by one, in the order given by the list, so when an activity is going to be scheduled, all its predecessors have already been scheduled (forward scheduling). Each activity is assigned the earliest feasible start time. It is interesting to point out that the parallel method could not be applied to this representation to transform the individual into its corresponding schedule. Several authors have used this representation in their metaheuristic procedures: Baar et al. [4], Bouleimen and Lecocq [10], Hartmann [33], Pinson et al. [67], Boctor [9] and Alcaraz and Maroto [1]. Priority rule representation. Each solution is represented by a vector with as many positions as activities in the project. Each position is occupied by a rule of a given set of priority rules. If priority rule P occupies position i, we would use rule P to decide which is the ith activity chosen to be scheduled, using the serial or the parallel method. This representation has been used by Hartmann [33]. Özdamar [58] used it to solve the multi-mode RCPSP. Random key representation. Each solution is encoded as a vector that assigns a real number, between 0 and 1, to each activity in the project. This number assigned to an activity plays the role of the priority of that activity. Both the serial and the parallel method could be applied to obtain the related schedule. Cho and Kim [15], Hartmann [33], Kohlmorgen et al. [40], Lee and Kim [48], Leon and Balakrishnan [49] and Naphade et al. [54] have succesfully employed this representation. Shift vector representation. Each solution is represented by a vector which assigns a non-negative integer to each activity in the project. The start time of each activity is obtained by adding this number to the earliest start time of the activity. The main difference from the previous representations is that in this one, resource constraints are not considered. Sampson and Weiss [71] introduced this representation in their algorithm, which can be seen as a variant of the simulated annealing procedure.

88

ALCARAZ AND MAROTO

In our study, we have not considered the priority rule, random key and shift vector representations, given that as Hartmann [33] determined, the activity list representation (also named permutation based encoding) performs the best to solve the RCPSP, even if other paradigms, such as tabu search or simulated annealing, are employed (see Kolisch and Hartmann [44]). In our genetic algorithms we have employed two different types of encoding: the first is the standard activity list representation. The second is a new representation, based on the previous one, to which a gene, the scheduling mode, indicating the way in which the activities are scheduled, has been added. 3.1.1. Activity list representation Each individual in the population is represented by an array with as many positions as activities in the project. In figure 2(a), we can observe the activity list representation for a project with N activities. Activity j will be the ith activity chosen to be scheduled. It will be scheduled in its earliest feasible start time. When activity j is chosen to be scheduled, all its predecessors, which will appear in some position 1, . . . , i − 1, will have already been scheduled. In this way, the related schedule will always be a feasible schedule. Notice that when applying this procedure, one and only one schedule (phenotype) can be deduced from a given sequence (genotype), but different sequences could transform into the same schedule. When applying the serial method to transform the representation into a schedule, the search space is formed by the set of active schedules, which always contains an optimal solution (cf. Kolisch [42], Sprecher et al. [79]). In figure 3, we can observe a project example, in which activity 0 represents the source dummy activity.

(a)

(b) Figure 2. (a) Activity list representation. (b) Activity list representation with scheduling mode.

Figure 3. Project example.

ROBUST GENETIC ALGORITHM

89

Figure 4. Individuals for project example and related schedules.

Different solutions for this project and the related schedules for these solutions are represented in figure 4. It is important to point out that solutions (sequences) A and C transform into the same schedule, but an individual transforms into one and only one schedule. 3.1.2. Activity list representation with scheduling mode The representation we propose is based on the standard activity list representation previously described. Now a solution is represented by a pair: an activity list and an additional gene, called forward–backward gene (f/b gene), which indicates the way in which the phenotype is built. We can observe this representation in figure 2(b). Given a (precedence feasible) list of activities, and applying the serial method (or serial generation scheme), there are two different ways of constructing the related schedule: forward scheduling and backward scheduling. In forward scheduling, when an activity is chosen to be scheduled, all its predecessors must have already been scheduled (the first activity chosen to be scheduled is the first of the list), and the activity is scheduled in its earliest feasible start time. In backward scheduling, when an activity is chosen to be scheduled, all its successors must have already been scheduled (the first activity chosen to be scheduled is the last one in the list), and it is scheduled in its latest feasible start time. For a detailed description of forward and backward scheduling readers are referred to Elmaghraby [27]. The interest of this representation is to exploit the possibility of scheduling a solution in a forward/backward way, which produces left/right shifted schedules with possibly different makespan. By applying backward scheduling we can build schedules which can not be obtained by forward scheduling and vice-versa. Therefore, the same activity list, with different scheduling modes, may transform into different schedules, with possibly different makespan. An example is given in figure 5. As in the previous rep-

90

ALCARAZ AND MAROTO

Figure 5. Different schedules for identical activity lists with different scheduling modes.

resentation, different solutions can transform into the same schedule, but an individual transforms into one, and only one schedule. 3.2. Initial population There are several ways of computing the initial population for the genetic algorithm: random, multi-priority rule and sampling approaches. In the random approach the list of activities is constructed so that each activity appears in the list in a random position after all its predecessors. In the multi-priority rule approach, each solution is built applying a different priority rule. In the sampling approach, only one priority rule is used and different solutions are obtained by biasing the selection of the priority rule through a random device (cf. Kolisch [42]). To compute the initial population we have employed a sampling procedure with Latest Finish Time (LFT) as the selection rule. Each solution is obtained in the following way: beginning with an empty activity sequence, the next activity for the sequence is taken from those activities which have not yet been selected and all its predecessors have already been selected biasing the probability given by the LFT rule. We have used the LFT rule because it is one of the best priority rules appearing in the literature. In this way POP_SIZE (number of individuals in the population) schedules are computed to build the initial population. When the activity list representation with scheduling mode is employed, the list of activities is generated as described in the previous paragraph, but how is the forward– backward gene assigned to each solution? For each individual we first construct the related schedule applying forward scheduling. Then, the backward scheduling is applied, regardless of the schedule generated by the forward scheduling pass. If the forward scheduling pass obtains a better makespan, then the forward–backward gene is set to “f” (forward). Otherwise it is set to “b” (backward). Now, two different schedules are

ROBUST GENETIC ALGORITHM

91

computed for each individual. Therefore 2 × POP_SIZE schedules are computed to generate the initial population when this representation is used. 3.3. Selection Selection is an artificial version of the natural phenomenon called the survival of the fittest. In nature, competition among individuals for scant resources and for mates result in the fittest individuals dominating over weaker ones. Based on their relative quality or rank, individuals receive a number of copies. A fitter individual receives a higher number of offspring and thus it has a higher probability of surviving in the subsequent generation. There are several ways of implementing the selection mechanism. We have implemented three different selection mechanisms: remainder stochastic sampling without replacement, 2-tournament and ranking. The remainder stochastic sampling without replacement tries to reduce the stochastic errors associated with roulette wheel selection. In this method, the number of expected copies of each individual Ni , is given by the probability of selecting that individual p_selecti , multiplied by the population size. Each individual is allocated samples according to the integer part of Ni , and the fractional parts are treated as probabilities of obtaining another copy. In the following formulae, f (i) represents the fitness value of individual i, and is calculated as the maximum makespan of the population plus one minus the makespan of individual i: f (i) p_select i = POP_SIZE j =1

f (j )

,

Ni = p_select i × POP_SIZE.

In the 2-tournament selection, two individuals are randomly chosen from the population and compete for survival. The best of them (the one with the best fitness value) will appear in the subsequent population. This procedure is repeated POP_SIZE times, until POP_SIZE individuals are selected to appear in the next population. In the ranking method, individuals are ordered depending on their fitness. The probability of obtaining a copy depends on their rank, so that the individuals which occupy the first positions (the best individuals) have a higher probability of being selected (obtaining a copy). For a detailed description of the selection methods, readers are referred to Goldberg [32]. 3.4. Crossover Crossover combines the features of two parent chromosomes to form two offspring which inherit their characteristics. The individuals of the population are mated randomly and each pair undergoes the crossover operation with a probability of Pc , producing two children by crossover. The parent population is replaced by the offspring population. The crossover is one of the most important genetic operators and must be correctly designed. A poorly designed crossover becomes a sort of mutation. Crossover must combine solutions to produce new ones. Crossover must preserve and combine “good

92

ALCARAZ AND MAROTO

building blocks” to build better individuals (for a detailed description of the building block hypothesis see Goldberg [32]). Combining means not only to use recombination, but that the recombination is indeed beneficial (cf. Falkenauer [29]). There are several very simple ways of testing whether a crossover technique performs correctly. One of them was proposed by Jones [37] and it is based on a simple idea: instead of mating two parents selected among the best in the population, generate one of the parents at random. If the crossover is really useful, this way of mating should lead to a significantly worse performance than the usual way, because mating with a random parent amounts to performing a mutation instead of a crossover. We have designed three new crossover techniques which incorporate problem specific knowledge. One of them, the precedence set crossover is applied to the standard activity list representation and the other two, forward–backward crossover and twopoint forward–backward crossover, make use of the new representation described above. Moreover we have implemented the two-point crossover proposed by Hartmann [33] in his genetic algorithm. Given two individuals selected for crossover, a mother M and a father F ,     M F , F = J1F , . . . , JNF , JN+1 M = J1M , . . . , JNM , JN+1 two offspring, a daughter D and a son S are produced:     D S , S = J1S , . . . , JNS , JN+1 . D = J1D , . . . , JND , JN+1 It is important to point out that the JN+1 gene represents the forward–backward gene, which indicates the scheduling mode used to construct the related schedule. If this bit is “f” it means that the scheduling mode is “forward scheduling”. Otherwise, if it is “b”, it indicates “backward scheduling”. Therefore, this bit will not appear when the standard activity list representation is used, i.e., the chromosome will be formed by only N genes. In the following sections we describe the new crossover techniques proposed. 3.4.1. Precedence set crossover The idea of this crossover technique is to create a set of activities so that the daughter will inherit the relative positions of the activities which belong to the set from the mother, and the rest of the activities (the activities which do not appear in the set) from the father. The son will inherit the relative positions of the activities in the set from the father, and the rest of the activities from the mother. How is this set of activities created? Given a random activity j , the set is created by adding the activity j , its predecessors (not necessarily immediate), and its successors (not necessarily immediate) to the initially empty set. Figure 6 displays an example of the precedence set crossover for two solutions (mother and father) of the project represented in figure 3. The first step consists of selecting a project activity in a random way. In this example activity 7 is the selected j is constructed. This set must contain the selected activity. Then, the precedence set R activity, its predecessors and its successors, which are not necessarily immediate. In j = {1, 2, 5, 7, 8}. We have shaded these activities in the parents. The our example R

ROBUST GENETIC ALGORITHM

93

Figure 6. Precedence set crossover example.

j with their relative order in the daughter must inherit the positions of activities in R mother’s sequence, and the rest of the activities, with their relative order in the father’s sequence. The procedure employed to generate the daughter is the following: we go through the father’s sequence, activity by activity. When we find an activity, before drawing it in the daughter, we must be sure that it preserves the relative order of the shaded activities in the mother’s sequence (if it is a shaded activity) or the relative order of the unshaded activities in the father (if it is an unshaded activity). The first activity in the father’s sequence is activity 2, which is a shaded activity, and therefore it must preserve the relative order of the shaded activities in the mother’s sequence. As in the mother, activity 2 appears after activity 1, in the daughter this order must be preserved, so first we draw activity 1 and then activity 2. The next activity in the father is activity 1, which has already been drawn in the daughter. Then, activity 4 appears, which is not a shaded activity, so it can directly be drawn in the daughter. Activity 5 is the next. It is a shaded activity and activities 1 and 2 must appear before it. As these activities have already been drawn in the daughter, activity 5 can directly be drawn in the daughter sequence. We follow this procedure until the daughter’s sequence is completed. We can observe that in the daughter, activities 1, 2, 5, 7 and 8 preserve their relative order in the mother’s sequence and the unshaded activities, activities 3, 4 and 6 preserve their relative positions in the father’s sequence. In this way, in the offspring generated, the daughter, the precedence relations are fulfilled. To construct the son, the procedure is the same, but now it will inherit the positions of the shaded activities with their relative order in the father’s sequence, and the rest of the activities, with their relative positions in the mother’s sequence, so that the son is also a precedence feasible solution. 3.4.2. Forward–backward crossover This new crossover technique makes use of the new representation described above: activity list representation with scheduling mode. Thus, the solutions mated will have N + 1 positions, the last one being the forward–backward gene, which indicates the scheduling mode: forward or backward. These genes (the father’s f/b gene and the mother’s f/b gene) determine the way in which the crossover is performed. The daughter inherits the f/b gene from the mother and the son from the father.

94

ALCARAZ AND MAROTO

Figure 7. Forward–backward crossover procedure.

First we draw a random crossover-point k, with k between 1 and the number of activities in the project, N. If the mother’s scheduling mode is forward, the first k positions in the daughter are directly taken from the mother, in the same order. Otherwise (if the mother’s scheduling mode is backward) the last positions (from k + 1 to N) in the daughter are directly taken from the mother. The rest of the activities in the daughter are taken with their relative order in the father’s sequence. Notice that the father’s f/b gene is not taken into account for the generation of the daughter. In this way, the solution generated, the daughter, is a precedence feasible solution. The generation of the son is similar to the daughter’s but the son inherits the first/last (depending on the father’s f/b gene) positions directly from the father, and the rest of the activities from the mother. The pseudocode for this crossover technique is shown in figure 7. In figure 8, an example of the forward–backward crossover for two solutions for the previous project example is given. Notice that the generation of the daughter depends only on the father’s and mother’s activity sequence and the mother’s f/b gene, but not on the father’s f/b gene. In the same way, the generation of the son depends only on the father’s and mother’s activity sequence and the father’s f/b gene, but it is independent from the mother’s f/b gene. 3.4.3. Two-point forward–backward crossover This crossover technique is an extension of the previous one and also makes use of the new representation. As in the previous crossover, the daughter inherits the f/b gene from the mother and the son from the father. The difference is that now two random

ROBUST GENETIC ALGORITHM

95

Figure 8. Forward–backward crossover example.

crossover-points, k1 and k2 (with k1 < k2) are drawn. If the mother’s scheduling mode is forward, the first k1 positions in the daughter are directly taken from the mother, in the same order. The positions between k1 + 1 and k2, are taken with their relative order in the father’s sequence, and the positions between k2 + 1 and N are again taken from the mother, in their relative order. Otherwise, if the mother’s scheduling mode is backward, the positions between k2 + 1 and N are directly taken from the mother, the positions between k1 + 1 and k2 from the father, and the rest of the positions, between 1 and k1 from the mother. In this way, the daughter is a precedence feasible solution. Notice that the father’s f/b gene is not taken into account for the generation of the daughter. The generation of the son is similar to the daughter’s but exchanging mother for father. In figure 9, the pseudocode for this operator is given. It is interesting to point out that the one-point crossover and the two-point crossover developed by Hartmann [33] represent special cases of the forward–backward and the two-point forward–backward crossover when the parents’ scheduling mode indicate forward scheduling. 3.5. Mutation Once the crossover operator has been applied and the offspring population has replaced the parent population, the mutation operator is applied to the offspring population. Mutation alters one or more genes (positions) of a selected chromosome (solution) to reintroduce lost genetic material and introduce some extra variability into the population. We have implemented two different mutation operators. The first is an adaptation of the procedure proposed by Boctor [9] in his simulated annealing algorithm to generate a neighbor. For each activity in the sequence, a new position is “randomly” chosen. In

96

ALCARAZ AND MAROTO

Figure 9. Two-point forward-backward crossover procedure.

order to generate only precedence feasible solutions, this new position must be higher than any of its predecessors and lower than any of its successors. The activity is inserted in the new position with a probability of Pmut . The second mutation operator implemented has been the one proposed by Hartmann [33] in his genetic algorithm. Given a solution, each position is exchanged with the following one (if the result is a feasible solution) with a probability of Pmut . When the activity list representation with scheduling mode is used, the forward– backward gene (the last position in the sequence), changes with a probability of Pmut .

4.

Computational experiment

We have carried out a multi-factor ANOVA to study the impact of the genetic operators and parameters in the performance of the genetic algorithm. We have studied the impact of three different genetic operators (selection, crossover and mutation) and two different parameters (crossover probability and mutation probability), and for each of them, we have implemented the different mechanisms listed in the following paragraphs.

ROBUST GENETIC ALGORITHM

97

Selection. We have studied three different mechanisms: Remainder Stochastic Sampling without Replacement (RSSWtR), 2-tournament (2-tour) and ranking. Crossover. Four different crossover mechanisms have been implemented: Precedence Set Crossover (PSC), Forward–Backward Crossover (FBC), Two-Point Forward–Backward Crossover (TP_FBC), and the two-point crossover developed by Hartmann [33] (HC). Crossover probability. This factor has been studied at two different levels: Pc = 0.5 and Pc = 0.8. These crossover probabilities are the probabilities which have reported the best results in the literature. Mutation. Two previously described mutation mechanisms have been used in this experiment: the one used by Hartmann in his genetic algorithm and an adaptation of the mechanism employed by Boctor in his simulated annealing algorithm to generate a neighbor. We will make reference to these mechanisms as HM (Hartmann’s mutation) and BM (Boctor’s mutation). Mutation probability. We have employed two different mutation probabilities: Pmut = 0.05 and Pmut = 0.01, which are the most commonly used and have reported good results in previous works. We have crossed all these factors, thus obtaining a total of 96 different combinations, i.e., 96 different algorithms. The genetic algorithms have been coded in C and compiled with Microsoft Visual C++ v.1.0. With each of the algorithms we have solved the sets of standard instances generated by the problem generator ProGen developed by Kolisch et al. [46], which are available in the Project Scheduling Problem LIBrary PSPLIB, on the WWW at http://www.bwl.uni-kiel.de/Prod/psplib/. We have used the problem sets containing 30, 60 and 120 non-dummy activities (J30, J60 and J120). Each of these sets contain 480 instances, except for the J120 set, which includes 600 instances. Details about these instances can be found in Kolisch and Sprecher [45]. The instances of J30 are the only ones for which all optimum values are known. For the other instances sets (J60 and J120) an upper bound (best solution found so far) has been calculated. The experiments have been conducted on a Pentium IBM-compatible with 166 MHz clock-pulse and 80 Mb RAM under Windows 95. Each algorithm has been run to solve each one of the instances imposing a maximum number of 1,000 and 5,000 schedules computed as terminating condition. Therefore, to carry out this experiment a total of 898,560,000 schedules have been evaluated. The computation times employed to solve the problems are similar for all the combinations and depend on the instances set (J30, J60 and J120) and the number of schedules computed. These times have been on average 0.9, 1.8 and 4.5 seconds (for each instance) for J30, J60 and J90, respectively when 1,000 schedules are computed, and 4, 10 and 20 seconds when the number of schedules is 5,000. Depending on the number of schedules computed, we have used a

98

ALCARAZ AND MAROTO

different population size, such as we determined in previous experiments [1]. When the termination condition is a number of 1,000 schedules computed, a population size of 50 individuals is used, and when the number of schedules computed increases to 5,000 the population size used also increases to 100. To study the performance of the algorithms and compare them with other algorithms we have measured the average increase over the optimal solution for J30. As the optimal solution has not been calculated for projects in J60 and J120, we have measured the average increase over an upper bound for each project. This upper bound was set to the one used by Kolisch and Hartmann [44] in their survey, i.e., the lowest makespan found by any of the heuristics they tested in their study. These data were obtained from authors upon request. 5.

Computational results

The results obtained in the ANOVA show that although all the operators and parameters studied (selection, crossover, mutation, crossover probability and mutation probability) influence the performance of the algorithm, the ones which have a much higher influence are crossover and mutation. Table 1 displays the total average deviations obtained by each one of the crossover operators (precedence set crossover, Hartmann’s crossover, forward–backward crossover and two-point forward–backward crossover) over all possible settings. We can observe that FBC and TP_FBC systematically report the best results, independent of the number of schedules computed or the instances set solved. These new crossover techniques, which suitably incorporate and use the information relative to the scheduling mode, are capable of constructing, preserving and inheriting “good” building blocks, which contribute to good fitness values. When the f/b gene of a good solution is forward (i.e., the schedule has been obtained with forward recursion), good building blocks will probably appear more often in the first positions of the activity list, which are the positions directly inherited by the offspring. When the f/b gene is backward, good building blocks will probably appear at the end of the sequence. These two operators have very similar performances for all the project sizes, and there does not seem to be one superior to the other. On the other hand, the one with the worst performance Table 1 Average deviations from the optimal solution for J30 and from the best solution for J60 and J120. Crossover operator

TP_FBC FBC HC PSC

J30

J60

J120

1,000

5,000

1,000

5,000

1,000

5,000

0.46 0.49 0.64 0.78

0.24 0.25 0.37 0.44

1.12 1.11 1.32 1.52

0.59 0.60 0.75 0.94

2.84 2.83 3.32 3.80

1.36 1.37 1.81 2.34

TP_FBC: Two-Point Forward–Backward Crossover; FBC: Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover.

ROBUST GENETIC ALGORITHM

99

Table 2 Average deviations from the optimal solution for J30 and from the best solution for J60 and J120. Mutation operator

J30

BM HM

J60

J120

1,000

5,000

1,000

5,000

1,000

5,000

0.52 0.67

0.25 0.39

1.2 1.34

0.65 0.79

3.08 3.32

1.66 1.78

BM: Boctor’s Mutation; HM: Hartmann’s Mutation. Table 3 Alternative combinations. J30 – 1,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 22th ... 39th ... 96th

2-TOUR RANKING RANKING RANKING 2-TOUR RSSWtR

TP_FBC TP_FBC FBC FBC TP_FBC TP_FBC

0.5 0.8 0.5 0.8 0.8 0.5

BM BM BM BM BM BM

0.05 0.05 0.05 0.05 0.05 0.01

0.335 0.336 0.348 0.354 0.366 0.374∗

5.66 6.15 6.90 5.17 6.25 6.19

85.42 86.25 84.79 84.38 85.21 84.58

RANKING

HC

0.8

BM

0.05

0.466

7.14

81.67

2-TOUR

PSC

0.8

BM

0.05

0.509∗

6.90

81.46

2-TOUR

PSC

0.5

HM

0.01

1.071

10.17

72.5

RSSWtR: Remainder Stochastic Sampling without Replacement; TP_FBC: Two-Point Forward–Backward Crossover; FBC: Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover BM: Boctor’s Mutation; HM: Hartmann’s Mutation.

has been the PSC, which always reports the highest increases. This crossover operator, based on the predecessors/successors of an activity seems to be unsuitable for this problem. It is interesting to point out that priority rules based on the same idea did not report good results. Regarding the mutation operator, the difference in performance between the two operators is shown in table 2. In this table we can clearly see that the adaptation of the procedure proposed by Boctor has a much better performance than the one proposed by Hartmann, regardless of the instances set or the number of schedules computed. In the following section, we will also discuss the appropriateness of these and the other operators and parameters depending on the instances set and the number of schedules evaluated. 5.1. Comparison of the different alternatives Tables 3 and 4 report the average and the maximum deviation from the optimal makespan and the percentage of instances for which an optimal solution was found for the set J30, for different algorithm combinations. Tables 5–8 display the average and the maximum

100

ALCARAZ AND MAROTO

Table 4 Alternative combinations. J30 – 5,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 16th

2-TOUR RANKING 2-TOUR RANKING 2-TOUR RANKING

FBC FBC FBC TP_FBC TP_FBC FBC

0.8 0.5 0.5 0.5 0.5 0.8

BM BM BM BM BM BM

0.05 0.05 0.05 0.05 0.05 0.05

0.123 0.126 0.136 0.137 0.143 0.145∗

3.45 3.90 3.90 3.45 3.90 4.76

92.71 92.71 92.50 91.88 92.29 92.29

2-TOUR

PSC

0.5

BM

0.05

0.211

6.58

88.13

18th ... 96th

RSSWtR

HC

0.8

BM

0.05

0.222∗

6.19

89.79

RANKING

PSC

0.5

HM

0.01

0.691

8.00

77.08

RSSWtR: Remainder Stochastic Sampling without Replacement; FBC: Forward–Backward Crossover; TP_FBC: Two-Point Forward–Backward Crossover; PSC: Precedence Set Crossover; HC: Hartmann’s Crossover; BM: Boctor’s Mutation; HM: Hartmann’s Mutation. Table 5 Alternative combinations. J60 – 1,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 31th

RSSWtR RSSWtR 2-TOUR RSSWtR RANKING RANKING

FBC FBC TP_FBC FBC TP_FBC FBC

0.5 0.8 0.8 0.8 0.8 0.5

BM BM BM HM BM BM

0.01 0.01 0.01 0.01 0.01 0.01

0.913 0.947 0.966 0.987 1.002 1.003∗

10.39 9.02 8.11 9.09 9.09 9.33

71.67 72.29 72.92 71.04 72.29 72.71

RSSWtR

HC

0.8

BM

0.01

1.139∗

10.39

70.63

61th ... 96th

RANKING

PSC

0.8

BM

0.05

1.290∗

11.69

69.79

RANKING

PSC

0.5

HM

0.01

1.817

11.24

67.08

RSSWtR: Remainder Stochastic Sampling without Replacement; FBC: Forward–Backward Crossover; TP_FBC: Two-Point Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover; BM: Boctor’s Mutation; HM: Hartmann’s Mutation.

deviation from the upper bound and the percentage of instances for which the upper bound was reached or outperformed, for different combinations of the algorithm. In each table the six alternatives which have reported the best results, and the one which has given the worst results are shown. Additionally, the best configuration for each crossover technique is also displayed. The first column of the table shows the order number, in the 96 combinations, reached by each algorithm. A star indicates that there are significant differences in performance between that algorithm and the following one displayed. To determine such differences, we have carried out a signed-rank Wilcoxon

ROBUST GENETIC ALGORITHM

101

Table 6 Alternative combinations. J60 – 5,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 17th ... 48th ... 96th

RSSWtR 2-TOUR RSSWtR RANKING 2-TOUR RANKING

TP_FBC FBC FBC TP_FBC TP_FBC FBC

0.5 0.8 0.5 0.8 0.8 0.5

BM BM BM BM BM BM

0.01 0.01 0.01 0.01 0.01 0.01

0.405 0.426 0.430 0.444 0.452 0.464∗

5.56 7.79 7.79 7.79 6.67 7.79

79.79 79.58 79.17 78.96 78.54 78.33

RSSWtR

HC

0.5

BM

0.01

0.546∗

10.39

77.08

2-TOUR

PSC

0.5

BM

0.05

0.676∗

7.79

76.46

2-TOUR

PSC

0.5

HM

0.01

1.286

11.28

69.58

RSSWtR: Remainder Stochastic Sampling without Replacement; TP_FBC: Two-Point Forward–Backward Crossover; FBC: Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover; BM: Boctor’s Mutation; HM: Hartmann’s Mutation. Table 7 Alternative combinations. J120 – 1,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 41th ... 60th ... 96th

2-TOUR 2-TOUR 2-TOUR RANKING RSSWtR RANKING

TP_FBC FBC TP_FBC TP_FBC FBC FBC

0.8 0.8 0.5 0.5 0.8 0.8

BM BM BM BM BM BM

0.01 0.01 0.01 0.01 0.01 0.01

2.509 2.541 2.571 2.601 2.607 2.613∗

9.26 10.49 8.52 7.80 9.80 8.62

25.50 27.00 25.50 25.67 24.33 26.00

2-TOUR

HC

0.8

BM

0.01

3.012∗

10.78

22.33

RANKING

PSC

0.8

BM

0.05

3.273∗

11.11

24.00

RANKING

PSC

0.5

HM

0.01

4.388

16.17

20.50

RSSWtR: Remainder Stochastic Sampling without Replacement; TP_FBC: Two-Point Forward–Backward Crossover; FBC: Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover; BM: Boctor’s Mutation; HM: Hartmann’s Mutation.

test between each combination and the following one with a 5% level of confidence using SPSS [57]. In these tables we can observe again that the best results are always reported by the crossover operators FBC or TP_FBC and the Boctor’s mutation. For projects with 30 activities, the best configuration reports a 0.33% average increase over optimal solution and more than 85% of instances solved to optimality when 1,000 schedules are computed. When the number of schedules generated increases to 5,000 the average increase over optimum decreases to 0.12% and the number of instances optimally solved increases to nearly 93%, which outperforms the best results

102

ALCARAZ AND MAROTO

Table 8 Alternative combinations. J120 – 5,000 schedules. Nr.

Selection

Crossover

Pc

Mutation

Pmut

Av. Dev. (%)

Max. Dev. (%)

Optimal (%)

1st 2nd 3rd 4th 5th 6th ... 23th ... 51th ... 96th

2-TOUR 2-TOUR 2-TOUR 2-TOUR RANKING RANKING

FBC TP_FBC FBC TP_FBC FBC FBC

0.8 0.8 0.5 0.5 0.8 0.5

BM BM BM BM BM BM

0.01 0.01 0.01 0.01 0.01 0.01

0.697 0.739 0.791 0.860 0.888 0.932∗

5.56 5.04 5.76 6.17 4.94 5.09

52.33 52.00 50.67 48.83 48.17 43.33

2-TOUR

HC

0.8

BM

0.01

1.303∗

8.02

38.17

2-TOUR

PSC

0.8

BM

0.01

1.750∗

6.76

32.00

2-TOUR

PSC

0.5

HM

0.01

3.235

10.49

23.50

RSSWtR: Remainder Stochastic Sampling without Replacement; FBC: Forward–Backward Crossover; TP_FBC: Two-Point Forward–Backward Crossover; HC: Hartmann’s Crossover; PSC: Precedence Set Crossover; BM: Boctor’s Mutation; HM: Hartmann’s Mutation.

appearing in the literature for the J30 set. With respect to the genetic operators and parameters, the use of FBC or TP_FBC as crossover operator, the Boctor’s mutation strategy with a mutation probability of 0.05 and 2-tournament or ranking as selection strategy is highly encouraged. The crossover probability does not have not a great influence and either 0.5 or 0.8 could be employed. The other two crossover operators, HC and PSC, employing their best configuration, report statistically worse results than the crossovers based on the idea of forward–backward scheduling. HC and PSC, have similar performances, i.e., there are no significant differences between their performances. The results obtained for the standard set with 60 non-dummy activities (J60) are similar to the results reported for J30. Again FBC and TP_FBC as crossover strategy and Boctor’s mutation report the best results. Now a mutation probability of 1% is advisable. As the solutions have a higher number of genes, a lower mutation probability must be used so that not too many building blocks are disrupted. The three selection strategies and the two crossover probabilities report similar results. The average increase is of 0.9% and 0.4% when computing a maximum of 1,000 and 5,000 schedules respectively, reaching or outperforming the best solution in a nearly 80% of the instances. In this set of instances, HC gives a higher increase than FBC and TP_FBC, but statistically lower than the increase reported by PSC, that again reports the worst results. For the largest projects, the instances with 120 activities, FBC or TP_FBC as the crossover operator, Boctor´s mutation and a mutation probability of 1% are encouraged. The difference from the projects with 60 activities is that now, 2-tournament seems to be superior to the ranking and RSSWtR selection strategies. The crossover probability has no great influence in the results and could be set at either, 0.5 or 0.8. As for projects medium size projects, the differences between the two crossover techniques based on forward–backward scheduling and HC and PSC are significant. These differences appear even between the latter, giving PSC again the highest increases over the

ROBUST GENETIC ALGORITHM

103

best solution. It is interesting to point out that in all the sets, regardless of the number of schedules evaluated, PSC as the crossover technique, a crossover probability of 50% and the Hartmann’s mutation with a probability of 1% systematically reports the worst results. 5.2. Comparison with other heuristics In order to compare the performance of our algorithm with the best heuristics appearing in the literature, we have made use of the recent survey of Kolisch and Hartmann [44] in which they compared the best heuristics to solve the RCPSP. As in their work, and as we have mentioned above, we have measured the average deviation from the optimal makespan for projects with 30 activities. For larger projects, containing 60 or 120 activities, we have measured the average deviation over the best solution found by any of the heuristics they tested, which has been obtained from the authors upon request. For these projects, we have additionally measured the average deviation from the critical path based lower bound, in order to allow researchers to make a comparison with our results. Tables 9–13 display the results obtained by our genetic algorithm and the ones obtained by some of the heuristics they tested. In these tables we present the authors of Table 9 Average deviations from the optimal solution for J30. Algorithm

Representation

Authors

Schedules 1,000 5,000

Genetic algorithm Simulated annealing Genetic algorithm Tabu search Adaptive sampling Adaptive sampling Genetic algorithm

Activity list with scheduling mode Activity list Activity list Sched. scheme – – Random key

Alcaraz and Maroto (1999) Bouleimen and Lecocq (1998) Hartmann (1998) Baar et al. (1997) Kolisch and Drexl (1996) Schirmer (1998) Leon and Balakrishnan (1995)

0.33 0.38 0.54 0.86 0.74 0.71 2.08

0.12 0.23 0.25 0.44 0.52 0.59 1.59

Table 10 Average deviations from the best solution for J60. Algorithm

Representation

Authors

Schedules 1,000 5,000

Genetic algorithm Genetic algorithm Simulated annealing Adaptive sampling Adaptive sampling Tabu search Genetic algorithm

Activity list with scheduling mode Activity list Activity list – – Sched. scheme Random key

Alcaraz and Maroto (1999) Hartmann (1998) Bouleimen and Lecocq (1998) Schirmer (1998) Kolisch and Drexl (1996) Baar et al. (1997) Leon and Balakrishnan (1995)

0.91 0.99 1.17 1.26 1.60 1.79 2.48

0.41 0.45 0.49 0.97 1.26 1.54 1.82

104

ALCARAZ AND MAROTO

Table 11 Average deviations from the best solution for J120. Algorithm

Representation

Authors

Schedules 1,000 5,000

Genetic algorithm Genetic algorithm Simulated annealing Adaptive sampling Adaptive sampling Genetic algorithm

Activity list with scheduling mode Alcaraz and Maroto (1999) Activity list Hartmann (1998) Activity list Bouleimen and Lecocq (1998) – Schirmer (1998) – Kolisch and Drexl (1996) Random key Leon and Balakrishnan (1995)

2.51 2.59 5.73 3.28 3.95 5.33

0.69 0.89 1.86 2.55 3.33 3.76

Table 12 Average deviations from the critical path based lower bound for J60. Algorithm

Representation

Authors

Schedules 1,000 5,000

Genetic algorithm Genetic algorithm Simulated annealing Adaptive sampling Adaptive sampling Tabu search Genetic algorithm

Activity list with scheduling mode Alcaraz and Maroto (1999) Activity list Hartmann (1998) Activity list Bouleimen and Lecocq (1998) – Schirmer (1998) – Kolisch and Drexl (1996) Sched. scheme Baar et al. (1997) Random key Leon and Balakrishnan (1995)

12.57 12.68 12.75 13.02 13.51 13.80 14.33

11.86 11.89 11.90 12.62 13.06 13.48 13.49

Table 13 Average deviations from the critical path based lower bound for J120. Algorithm

Representation

Authors

Schedules 1,000 5,000

Genetic algorithm Genetic algorithm Simulated annealing Adaptive sampling Adaptive sampling Genetic algorithm

Activity list with scheduling mode Alcaraz and Maroto (1999) Activity list Hartmann (1998) Activity list Bouleimen and Lecocq (1998) – Schirmer (1998) – Kolisch and Drexl (1996) Random key Leon and Balakrishnan (1995)

39.36 39.37 42.81 40.08 41.37 42.91

36.57 36.74 37.68 39.08 40.45 40.69

each heuristic with the publication year, the type of heuristic, the type of representation used and the average deviation (from the optimal solution for J30, and from the upper bound and the critical path based lower bound for J60 and J120) when computing 1,000 or 5,000 schedules. In these tables we can observe the higher performance of our approach over the best heuristics appearing in previous works. We can see that our genetic algorithm reports the best results for all the project sizes regardless of the number of schedules computed. It is interesting to point out that two of the best three heuristics are genetic algorithms, and

ROBUST GENETIC ALGORITHM

105

the best three make use of the activity list representation, which seems to be the most suitable representation for this problem. Moreover, we have used this new representation to exploit the advantages of forward–backward scheduling, which has reported the best results given by a heuristic so far. We would like to point out that, before the appearance of our genetic algorithm there was no algorithm which always reported the best results, i.e., for all the project sizes. For the smaller projects, the simulated annealing algorithm developed by Bouleimen and Lecocq was the one with the best performance, but for larger projects, with 60 or 120 activities, the genetic algorithm proposed by Hartmann became superior. Now, our genetic algorithm reports the best results for smaller or larger projects, and we can therefore say it is a robust genetic algorithm. 6.

Conclusions

We have designed a new type of representation for the resource-constrained project scheduling problem, based on the activity list representation, which incorporates problem specific knowledge about the way the activities must be scheduled, in a forward or backward way. We have developed two new crossover techniques applied to this representation and another based on the standard activity list representation. These three crossover techniques are problem specific operators. We have implemented a genetic algorithm with these crossover techniques and the two-point crossover developed by Hartmann, which was the one with the best performance so far. As mutation operators, we have implemented the one developed by Hartmann, and an adaptation of the procedure proposed by Boctor in his simulated annealing algorithm to generate a neighbor. Moreover, we have implemented three different selection strategies, remainder stochastic sampling without replacement, 2-tourmament and ranking, which have reported very good results in previous works. We have used two different crossover probabilities and two different mutation probabilities in order to determine the most appropriate configuration. To study the performance of the new techniques and compare the results given by our approach with the best heuristics we have carried out a multi-factor ANOVA solving the standard sets of project instances PSPLIB. We have determined that the new crossover techniques developed, based on forward–backward scheduling, improve the performance of the other two. The mutation operator adapted from the Boctor’s procedure also presents a better performance than the one proposed by Hartmann. The comparison of our genetic algorithm with the best heuristics appeared shows that our algorithm is the most promising heuristic to solve the RCPSP. Acknowledgments We would like to thank Rainer Kolisch for providing us some of the data used to carry out this work. We are grateful to anonymous referees for their constructive comments. This research has been supported by Generalitat Valenciana GV97-TI-05-35.

106

ALCARAZ AND MAROTO

References [1] J. Alcaraz and C. Maroto, A genetic algorithm for the resource-constrained project scheduling problem, in: Proceedings of the Sixth International Workshop on Project Management and Scheduling, eds. G. Barbaroso˘glu, S. Karabatı, L. Özdamar and G. Ulusoy (Bo˘gaziçi University Printing Office, 1998) pp. 7–10. [2] R. Álvarez-Valdés and J.M. Tamarit, Heuristic algorithms for resource-constrained project scheduling: A review and an empirical analysis, in: Advances in Project Scheduling, eds. R. Slowinski and J. W¸eglarz (Elsevier, 1989) pp. 114–134. [3] R. Álvarez-Valdés and J.M. Tamarit, Algoritmos heurísticos deterministas y aleatorios en secuenciación de proyectos con recursos limitados, Qüestiiò 13 (1989) 173–191. [4] T. Baar, P. Brucker and S. Knust, Tabu-search algorithms and lower bounds for the resourceconstrained project scheduling problem, in: Meta-Heuristics: Advances and Trends in Local Search Paradigms for Optimization, eds. S. Voss, S. Martello, I. Osman and C. Roucairol (Kluwer Academic, 1998) pp. 1–18. [5] E. Balas, Project scheduling with resource constraints, in: Applications of Mathematical Programming Techniques, ed. E.M.L. Beale (English University Press, 1971) pp. 187–200. [6] C.E. Bell and J. Han. A new heuristic solution method in resource-constrained project scheduling, Naval Research Logistics 38 (1991) 315–331. [7] C.E. Bell and K. Park, Solving resource-constrained project scheduling problems by A*-search, Naval Research Logistics 37 (1990) 61–84. [8] F.F. Boctor, Some efficient multi-heuristic procedures for resource-constrained project scheduling, European Journal of Operational Research 49 (1990) 3–13. [9] F.F. Boctor, Resource-constrained project scheduling by simulated annealing, International Journal in Production Research 34 (1996) 2335–2351. [10] K. Bouleimen and H. Lecocq, A new efficient simulated annealing algorithm for the resourceconstrained project scheduling problem, in: Proceedings of the Sixth International Workshop on Project Management and Scheduling, eds. G. Barbaroso˘glu, S. Karabatı, L. Özdamar and G. Ulusoy (Bo˘gaziçi University Printing Office, Istanbul, 1998) pp. 19–22. [11] P. Brucker, A. Drexl, R. Möhring, K. Neumann and E. Pesch, Resource-constrained project scheduling: Notation, classification, models, and methods, European Journal of Operational Research 112 (1998) 3–41. [12] P. Brucker, S. Knust, A. Schoo and O. Thiele, A branch and bound algorithm for the resourceconstrained project scheduling problem, European Journal of Operational Research 107 (1998) 272– 288. [13] J.A. Carruthers and A. Battersby, Advances in critical path methods, Operational Research Quarterly 17 (1966) 359–380. [14] L.D. Chambers, Practical Handbook of Genetic Algorithms: Applications, Vol. I (CRC Press, 1995). [15] J.-H. Cho and Y.-D. Kim, A simulated annealing algorithm for resource constrained project scheduling problems, Journal of the Operational Research Society 48 (1997) 735–744. [16] N. Christofides, R. Álvarez-Valdés and J.M. Tamarit, Project scheduling with resource constraints: A branch and bound approach, European Journal of Operational Research 29 (1987) 262–273. [17] D.F. Cooper, Heuristics for scheduling resource-constrained projects: An experimental investigation, Management Science 22 (1976) 1186–1194. [18] D.F. Cooper, A note on serial and parallel heuristics for resource-constrained project scheduling, Foundations of Control Engineering 2 (1977) 131–133. [19] E.M. Davies, An experimental investigation of resource allocation in multiactivity projects, Operational Research Quarterly 24 (1973) 587–591. [20] E.W. Davis and G.E. Heidorn, An algorithm for optimal project scheduling under multiple resource constraints, Management Science 17 (1971) 803–816.

ROBUST GENETIC ALGORITHM

107

[21] E.W. Davis and J.H. Patterson, A comparison of heuristic and optimum solutions in resourceconstrained project scheduling, Management Science 21 (1975) 944–955. [22] B. De Reyck and W. Herroelen, A branch-and-bound procedure for the resource-constrained project scheduling problem with generalized precedence relations, European Journal of Operational Research 111 (1998) 152–174 [23] E. Demeulemeester and W. Herroelen, A branch-and-bound procedure for the multiple resourceconstrained project scheduling problem, Management Science 38 (1992) 1803–1818. [24] E. Demeulemeester and W. Herroelen, New benchmark results for the resource-constrained project scheduling problem, Management Science 43 (1997) 1485–1492. [25] E. Demeulemeester and W. Herroelen, A branch-and-bound procedure for the generalized resourceconstrained project scheduling problem, Operations Research 45 (1997) 201–212. [26] A. Drexl, Scheduling of project networks by job assignment, Management Science 37 (1991) 1590– 1602. [27] S.E. Elmaghraby, Activity Networks: Project Planning and Control by Network Models (Wiley, 1977). [28] E.A. Elsayed, Algorithms for project scheduling with resource constraints, International Journal of Production Research 20 (1982) 95–103. [29] E. Falkenauer, Genetic Algorithms and Grouping Problems (Wiley, 1998). [30] F. Glover, Tabu search – Part I, ORSA Journal on Computing 1 (1989) 190–206. [31] F. Glover, Tabu search – Part II, ORSA Journal on Computing 2 (1989) 4–32. [32] D.E. Goldberg, Genetic Algorithms in Search, Optimization, and Machine Learning (Addison-Wesley, 1989). [33] S. Hartmann, A competitive genetic algorithm for resource-constrained project scheduling, Naval Research Logistics 45 (1998) 733–750. [34] N.A.J. Hastings, On resource allocation in project networks, Operational Research Quarterly 23 (1972) 217–221. [35] W. Herroelen, E. Demeulemeester, B. De Reyck, A classification scheme for project scheduling, in: Project Scheduling: Recent Models, Algorithms and Applications, ed. J. W¸eglarz (Kluwer Academic, 1998) pp. 1–26. [36] H.J. Holland, Adaptation in Natural and Artificial Systems (University of Michigan Press, 1975). [37] T. Jones, Crossover, macromutation, and population-based search, in: Proceedings of the Sixth International Conference on Genetic Algorithms, ed. L.J. Eshelman (Morgan Kaufmann, 1995). [38] J.E. Kelley, The critical-path method: Resources planning and scheduling, in: Industrial Scheduling, eds. J.F. Muth and G.L. Thompson (Prentice-Hall, 1963) pp. 347–365. [39] S. Kirkpatrick, C.D. Gelatt Jr. and M.P. Vecchi, Optimization by simulated annealing, Science 220 (1983) 671–680. [40] U. Kohlmorgen, H. Schmeck and K. Haase, Experiences with fine-grained parallel genetic algorithms, Working paper, Institut für Angewandte Informatik und Formale Beschreibungsverfahren, Universität Karlsruhe, Karlsruhe, Germany (1996). [41] R. Kolisch, Efficient priority rules for the resource-constrained project scheduling problem, Journal of Operations Management 14 (1996) 179–192. [42] R. Kolisch, Serial and parallel resource-constrained project scheduling methods revisited: Theory and computation, European Journal of Operational Research 90 (1996) 320–333. [43] R. Kolisch and A. Drexl, Adaptive search for solving hard project scheduling problems, Naval Research Logistics 43 (1996) 23–40. [44] R. Kolisch and S. Hartmann, Heuristic algorithms for the resource-constrained project scheduling problem: classification and computational analysis, in: Project Scheduling: Recent Models, Algorithms and Applications, ed. J. W¸eglarz (Kluwer Academic, 1998) pp. 147–178. [45] R. Kolisch and A. Sprecher, PSPLIB – a project scheduling problem library, European Journal of Operational Research 96 (1996) 205–216.

108

ALCARAZ AND MAROTO

[46] R. Kolisch, A. Sprecher and A. Drexl, Characterization and generation of a general class of resourceconstrained project scheduling problems, Management Science 41 (1995) 1693–1703. [47] S.R. Lawrence, Resource constrained project scheduling – A computational comparison of heuristic scheduling techniques, Working paper, Graduate School of Industrial Administration, CarnegieMellon University, Pittsburgh, USA (1985). [48] J.-K. Lee, and Y.-D. Kim, Search heuristics for resource constrained project scheduling, Journal of the Operational Research Society 47 (1996) 678–689. [49] V.J. Leon and R. Balakrishnan, Strength and adaptability of problem-space based neighborhoods for resource-constrained scheduling, OR Spektrum 17 (1995)173–182. [50] R.K.-Y. Li and J. Willis, An iterative scheduling technique for resource-constrained project scheduling, European Journal of Operational Research 56 (1992) 370–379. [51] A. Lova, Programación de multiproyectos con recursos limitados: Un enfoque multicriterio, Unpublished Ph.D., Department of Statistics and Operations Research, Universidad Politécnica de Valencia, Valencia, Spain (1997). [52] A. Mingozzi, V. Maniezzo, S. Ricciardelli and L. Bianco, An exact algorithm for the resourceconstrained project scheduling based on a new mathematical formulation, Management Science 44 (1998) 714–729. [53] M. Mori and C.C. Tseng, A genetic algorithm for multi-mode resource constrained project scheduling problem, European Journal of Operational Research 100 (1997) 134–141. [54] K.S. Naphade, S.D. Wu and R.H. Storer, Problem space search algorithms for resource-constrained project scheduling, Annals of Operations Research 70 (1997) 307–326. [55] T. Nazareth, S. Verma, S. Bhattacharya and A. Bagchi, The multiple resource-constrained project scheduling problem: A breadth-first approach, Working Paper, Indian Institute of Management, Calcutta, India (1996). [56] K. Nonobe and T. Ibaraki, Formulation and tabu search algorithm for the resource constrained project scheduling problem (RCPSP), Working paper, Department of Applied Mathematics and Physics, Kyoto University, Kyoto, Japan (1999). [57] M.J. Norusis, SPSS Advanced Statistics 6.1 (SPSS, 1994). [58] L. Özdamar, A genetic algorithm approach to a general category project scheduling problem, IEEE Transactions on Systems, Man, and Cybernetics, Part C: Applications and Reviews 29 (1999) 44–59. [59] L. Özdamar and G. Ulusoy, An iterative local constraint based analysis for solving the resource constrained project scheduling problem, Journal of Operations Management 14 (1996) 193–208. [60] L. Özdamar and G. Ulusoy, A note on an iterative forward/backward scheduling technique with reference to a procedure by Li and Willis, European Journal of Operational Research 89 (1996) 400–407. [61] J.H. Patterson, Alternate methods of project scheduling with limited resources, Naval Research Logistics Quarterly 20 (1973) 767–784. [62] J.H. Patterson, Project scheduling: The effect of problem structure on heuristic performance, Naval Research Logistics Quarterly 23 (1976) 95–124. [63] J.H. Patterson, A comparison of exact approaches for solving the multiple constrained resource project scheduling problem, Management Science 30 (1984) 854–867. [64] J.H. Patterson and W.D. Huber, A horizon-varying, zero–one approach to project scheduling, Management Science 20 (1974) 990–998. [65] J.H. Patterson and G.W. Roth, Scheduling a project under multiple resource constraints: a zero–one programming approach, AIIE Transactions 8 (1976) 449–455. [66] J.H. Patterson, R. Slowinski, F.B. Talbot and J. W¸eglarz, An algorithm for a general class of precedence and resource constrained scheduling problems, in: Advances in Project Scheduling, eds. R. Slowinski and J. W¸eglarz (Elsevier, 1989) pp. 3–28. [67] E. Pinson, C. Prins, and F. Rullier, Using tabu search for solving the resource-constrained project scheduling problem, in: Proceedings of the Fourth International Workshop on Project Management and Scheduling (Katholieke Universiteit Leuven, 1994) pp. 102–106.

ROBUST GENETIC ALGORITHM

109

[68] B. Pollack-Johnson, Hybrid structures and improving forecasting and scheduling in project management, Journal of Operations Management 12 (1995) 101–117. [69] A.A.B. Pritsker, L.J. Watters and P.M. Wolfe, Multiproject scheduling with limited resources: a zero– one programming approach, Management Science 16 (1969) 93–107. [70] F.J. Radermacher, Scheduling of project networks, Annals of Operations Research 4 (1985/86) 227– 252. [71] S.E. Sampson and E.N. Weiss, Local search techniques for the generalized resource constrained project scheduling problem, Naval Research Logistics 40 (1993) 665–675. [72] A. Schirmer and S. Riesenberg, Parameterized heuristics for project scheduling – Biased random sampling methods, Working paper, Instituten für Betriebswirtschaftslehre, Universität Kiel, Kiel, Germany (1997). [73] A. Schirmer and S. Riesenberg, Class-based control schemes for parameterized project scheduling heuristics, Working paper, Instituten für Betriebswirtschaftslehre, Universität Kiel, Kiel, Germany (1998). [74] L.R. Shaffer, J.B. Ritter and W.L. Meyer, The Critical-Path Method (McGraw-Hill, 1965). [75] W.P. Simpson and J.H. Patterson, A multiple-tree search procedure for the resource-constrained project scheduling problem, European Journal of Operational Research 89 (1996) 525–542. [76] A. Sprecher, Resource Constrained Project Scheduling – Exact Methods for the Multi-Mode Case (Springer, 1994). [77] A. Sprecher, Solving the RCPSP efficiently at modest memory requirements, Instituten für Betriebswirtschaftslehre, Universität Kiel, Kiel, Germany (1996). [78] A. Sprecher and A. Drexl, Solving multi-mode resource-constrained project scheduling problems by a simple, general and powerful sequencing algorithm, European Journal of Operational Research 107 (1998) 431–450. [79] A. Sprecher, R. Kolisch and A. Drexl, Semi-active, active, and non-delay schedules for the resourceconstrained project scheduling problem, European Journal of Operational Research 80 (1995) 94–102. [80] J.P. Stinson, E.W. Davis and B.M. Khumawala, Multiple resource-constrained scheduling using branch and bound, AIIE Transactions 10 (1978) 252–259. [81] F.B. Talbot and J.H. Patterson, An efficient integer programming algorithm with network cuts for solving resource-constrained scheduling problems, Management Science 24 (1978) 1163–1174. [82] A. Thesen, Heuristic scheduling of activities under resource and precedence restrictions, Management Science 23 (1976) 412–422. [83] P.R. Thomas and S. Salhi, An investigation into the relationship of heuristic performance with network-resource characteristics, Journal of the Operational Research Society 48 (1997) 34–43. [84] P. Tormos, Programación de proyectos con recursos limitados: Técnicas heurísticas basadas en reglas de prioridad, Unpublished Ph.D., Department of Statistics and Operations Research, Universidad Politécnica de Valencia, Valencia, Spain (1996). [85] G. Ulusoy and L. Özdamar, Heuristic performance and network/resource characteristics in resourceconstrained project scheduling, Journal of the Operational Research Society 40 (1989) 1145–1152. [86] G. Ulusoy and L. Özdamar, A constraint-based perspective in resource constrained project scheduling, International Journal of Production Research 32 (1994) 693–705. [87] V. Valls, M.A. Pérez and M.S. Quintanilla, Heuristic performance in large resource-constrained projects, Working paper, Departament of Statistics and Operations Research, Universitat de València, Valencia, Spain (1992). [88] G.E. Whitehouse and J.R. Brown, GENRES: An extension of Brooks algorithm for project scheduling with resource constraints, Computers and Industrial Engineering 3 (1979) 261–268.