{'fraction_non_alphanumeric': 0.03189944533054015, 'fraction_numerical': 0.012497917013831027, 'mean_word_length': 4.730968622100955, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Comparison of Heuristic Priority Rules in the Solution of the Resource-Constrained Project Scheduling Problem

Resource-constrained project scheduling (RCPS) aims to minimize project duration under limited resource availabilities. The heuristic methods that are often used to solve the RCPS problem make use of different priority rules. The comparative merits of different priority rules have not been discussed in the literature in sufficient detail. This study is a response to this research gap. It compares 17 heuristic priority rules and seeks the best performing heuristic priority rule. This is the first study ever that compares heuristic priority rules by considering combinations of variations in (1) resource allocation procedures, (2) number of activities, (3) number of resource constraints, and (4) resource supply levels. The objective is to understand the relative merits of heuristic rules used in solving the RCPS problem. The findings indicate that the “minimum late finish time” rule generates the shortest predicted project duration when used in parallel resource allocation, whereas the “minimum late start time”, “minimum late finish time”, and the “highest rank of positional weight 2” rules perform best in serial resource allocation. It was also found that parallel resource allocation is slightly superior to serial resource allocation in most instances.


Introduction
Work scheduling involves a set of decision-making processes that are modeled after a production system. Various types of scheduling methods were developed in the last century. Out of these, CPM is one of the most popular scheduling techniques. A work schedule includes several activities that need to be executed in a certain order and involves several resources that are used for the execution of these activities. Renewable resources such as construction equipment remain intact after production, whereas non-renewable resources such as construction materials are consumed and depleted during production.
Resource-constrained project scheduling (RCPS) aims to achieve minimum project duration when the work schedule is composed of a set of activities that are subject to not only precedence constraints but also to resources with limited availability [1,2]. In classical CPM, the main constraint in determining project duration is precedence relationships. However, resource constraints may cause delays in activities, which in turn may affect the project duration predicted by CPM. One of the outcomes of RCPS is activity start and finish times that conform to precedence relationships and satisfy resource constraints. RCPS techniques were used in various fields such as prefabricated construction [3], optimizing The main disadvantage is that the user may not always obtain the optimum solution. Since the early 1990s, genetic algorithms have been extensively used for solving RCPS problems (GA) [3, [12][13][14]. Other meta-heuristic methods such as tabu-search [15], simulated annealing [16], ant colony algorithm [17] and the artificial bee colony with differential evolution [18] were applied. Different problem types such as multi-project cases can be solved using forward-backward genetic algorithm techniques [19]. Kannimuthu et al. [20] used Probabilistic Global Search Lausanne for multi-project multi-mode problem cases. Different techniques such as Entropy-based heuristics that are adapted for solution of RCPS problems, the main objective of entropy-based heuristics, is maximizing the total-entropy of the schedule [21,22].
Heuristic priority rules are the most common algorithms in solving RCPS problems [23] because of their simplicity and their high computation speed [24]. Heuristic priority rules reflect an intuitive background rather than optimality and are preferred in small size manufacturing. Heuristic priority rules are used for sorting activities and alleviating resource conflicts in the RCPS problem. The first heuristic rules were introduced by Kelley [25] in the early 1960s and later discussed by Davis and Patterson [26]. Tormos and Lova [27] introduced the parallel scheduling scheme for multi-project situations, and Klein [2] experimented with bi-directional planning in solving the RCPS problem. Buddhakulsomsiri and Kim [28] attempted to solve the multi-mode RCPS problem by using priority-based heuristic rules, considering labor vacations and activity splitting. Padman et al. [29] tested various heuristic rules to minimize the net present value of a project.
Davis and Patterson [26] conducted one of the earliest studies comparing heuristic priority rules. Their study involved comparing the performance of 8 priority rules on 83 different schedules. They found that the "minimum total slack" rule comes first among other rules. Özdamar and Ulusoy [30] used only parallel resource allocation along classical forward scheduling and iterative scheduling methods. They compared 5 heuristic priority rules by testing them on 205 different problems that were borrowed from studies conducted by Alvarez-Olaguíbel and Goerlich [31]; Christofides et al., [32]; Li and Willis [33]; and Patterson [34]. Their proposed method, called "local constraint-based analysis", was the best performing rule, while the "highest weighted resource utilization" rule was the runner up. Schirmer and Riesenberg [23] conducted a comparative analysis using sampling-based techniques. They used PSPLIB's 480 schedules with 30 activities to test 10 priority rules and found that the "late start time" rule performed best with serial resource allocation, and the "worst case slack (WCS)" rule performed best with parallel resource allocation. In Schirmer's [35] study, it is stated that performances of WCS and LFT rules are almost similar in parallel resource allocation. The WCS rule performs better only on PSPLIB's 30 activity schedules and on larger size schedules, LFT (Late Finish Time) rule shows better performance. In Chen's [36] study, it is discovered that LFT and LFTS (Late Finish Time Stochastic) rules perform better in stochastic case of RCPS problems.
The project size and resource constraint situations also affect the performance of heuristic priority rules [10]. Kanit et al. [37] investigated whether the size of the problem and the number of resource constraints affect the performance of priority rules on 10 real RCPS problems and found no significant differences for problem size. However, they observed a correlation between rule performance and the number of resource constraints. No analysis was found in the literature that considers combinations of variations in (1) resource allocation procedures, (2) number of activities, (3) number of resource constraints, and (4) resource supply levels. This is the first study that compares heuristic priority rules by considering combinations of variations in all these four conditions.

Problem Formulation
The RCPS problem is a NP-hard problem that involves achieving the shortest project duration given the availabilities of different types of resources [38]. The RCPS problem is described in detail by Brucker et al. [1] and Klein [10] for a single mode case. In the single mode case, activities can shift depending on the availability of float, but activity durations and resource availabilities are fixed. The assumptions are that intermittent activities are disallowed, and the project network is not cyclical, nor is it activity-on-arrow. In this study, projects include four different renewable resources. The formulation of the single mode RCPS problem is presented in Equations (1) to (5) [39]. where: In Equation (1), the objective of the analysis is the minimization of T, the project duration; LFT j and EFT j represent the late and early activity finish times respectively of activity j; and t is any time between EFT j and LFT j . The set J includes all the activities in the project, and n is the total number of activities in the network. According to Equation (2), X jt takes the value of 1 if activity j finishes at the end of time t, or the value of 0 otherwise.
The constraints are defined in Equations (3) to (5). Equation (3) is a constraint that makes sure that an activity may be shifted within its float, but no further. The predecessor constraints are defined in Equation (4) such that an activity cannot start before all its predecessor activities are completed. In Equation (5), resource constraints are defined such that all activities must be executed within resource limits. d j is duration of activity j, r jr is resource demand of activity j for resource r, P j is activities preceding activity j, and R τ is supply of resource r.

Heuristic Methods
Heuristic methods are widely used for solving RCPS problems. Resource allocation procedures and a brief introduction to heuristic rules are presented in this section. Serial and parallel resource allocation are prominent procedures that use heuristic rules to sort the activities to be scheduled by their importance. In this study, these procedures are presented with flowcharts. Both methods are described with algebraic expressions in [18].

Serial Resource Allocation Procedure
The serial resource allocation procedure was proposed by Kelley [25]. It is widely used in heuristic/meta-heuristic methods. In the serial resource allocation procedure presented in Figure 1, the number of steps is equal to the number of activities in the network. In each step, one activity from the decision set (D n ) is selected and the earliest start time of this activity is determined without violating constraints. Two different activity sets are updated throughout the procedure, the scheduled set (S n ) and the decision set (D n ). The scheduled set consists of activities that have been scheduled according to precedence relationships, whereas the decision set includes activities that comply with not only precedence but also resource limitations. To be included in the decision set, an activity must satisfy two conditions, namely (1) the activity should not be in the scheduled set; and (2) all predecessors of the activity should have been scheduled. An activity is selected for inclusion in the decision set by using a heuristic priority rule. In the terminology of Klein's [10] study, the decision set is called "available activities", and the scheduled set is defined as a "partial schedule". scheduled. In the second step, the forthcoming decision set contains this scheduled activity's successors. By using priority rules, one of these activities is scheduled without violating resource and precedence constraints. After this activity is scheduled, this activity's start and finish times are determined without violating resource constraints, and the activity is included in the scheduled set ( ). The process is completed after all activities are scheduled using this procedure.   Figure 3 shows the outputs of the serial resource allocation procedure's six steps in rearranging the activity start-finish times. In each step, the scheduled set (Sn) is augmented by one activity by selecting the most appropriate activity from the decision set (Dn), as explained previously. In this case, the activity with the smallest duration is the most eligible activity in the decision set. Each step in Figure 3 represents one calculation cycle as displayed in Figure 1. As seen in Figure 1, at the beginning, by default, the first activity is inserted into the decision set. Because it is the only activity in the decision set, this activity is selected and scheduled. In the second step, the forthcoming decision set contains this scheduled activity's successors. By using priority rules, one of these activities is scheduled without violating resource and precedence constraints. After this activity is scheduled, this activity's start and finish times are determined without violating resource constraints, and the activity is included in the scheduled set (S n ). The process is completed after all activities are scheduled using this procedure. Figure 2 shows a sample 8-activity network. Figure 3 shows the outputs of the serial resource allocation procedure's six steps in rearranging the activity start-finish times. In each step, the scheduled set (S n ) is augmented by one activity by selecting the most appropriate activity from the decision set (D n ), as explained previously. In this case, the activity with the smallest duration is the most eligible activity in the decision set. Each step in Figure 3 represents one calculation cycle as displayed in Figure 1.   • Activity 1, which has no predecessors, is automatically added to the scheduled set (S n ) but does not appear in the resource diagram in Step 1 because it does not consume any resources.

•
In the first step, the successor of Activity 1 that has the smallest duration is selected for inclusion in the scheduled set (S n ). In other words, Activity 3 is the most eligible activity out of Activities 2 and 3 that are connected to Activity 1 in the decision set (D n ) and that have respective durations of 2 and 1 days. So, Activity 3 is added to the scheduled set in the first step.

•
In the second step, the successor of Activities 1 or 3 that has the smallest duration is selected for inclusion in the scheduled set (S n ). In other words, Activity 2 is the most eligible activity out of Activities 2 and 5 that are connected to Activities 1 and 3 in the decision set (D n ), and that have respective durations of 2 and 4 days. So, Activity 2 is added to the schedule set in the second step.

•
In the third step, the successor of Activities 1, 2, or 3 that has the smallest duration is selected for inclusion in the scheduled set (S n ). In other words, Activity 4 is the most eligible activity out of Activities 4 and 5 that are connected to Activities 1, 2, and 3 in the decision set, and that have respective durations of 3 and 4 days. So, Activity 4 is added to the schedule set in the third step. • This procedure is continued until no activity remains in the decision set.  • Activity 1, which has no predecessors, is automatically added to the scheduled set (Sn) but does not appear in the resource diagram in Step 1 because it does not consume any resources.

•
In the first step, the successor of Activity 1 that has the smallest duration is selected for inclusion in the scheduled set (Sn). In other words, Activity 3 is the most eligible activity out of Activities 2 and 3 that are connected to Activity 1 in the decision set (Dn) and that have respective durations of 2 and 1 days. So, Activity 3 is added to the scheduled set in the first step.

•
In the second step, the successor of Activities 1 or 3 that has the smallest duration is selected for inclusion in the scheduled set (Sn). In other words, Activity 2 is the most eligible activity out of Activities 2 and 5 that are connected to Activities 1 and 3 in the decision set (Dn), and that have respective durations of 2 and 4 days. So, Activity 2 is added to the schedule set in the second step.

Parallel Resource Allocation Procedure
The flow chart of the parallel resource allocation procedure is presented in Figure 4. There are two known algorithms that are related to parallel resource allocation, the Kelley Algorithm proposed by Kelley [25], and the Brooks Algorithm proposed by Bedworth and Bailey [40]. Inspired from Kolisch's [24] study, the Brooks Algorithm is used to perform parallel resource allocation in this study. There are several similarities and differences between parallel and serial resource allocation procedures. Similar to the procedure in serial resource allocation, the total number of steps in the parallel resource allocation procedure is equal to the total number of activities in the schedule. The main additional variable that is used in parallel resource allocation is the time of the allocation (t n ), which displays the current time of the resource allocation step. In addition, the scheduled set (S n ) used in serial resource allocation is replaced by the active set (A n ) and the completed set (C n ) in parallel resource allocation. The active set (A n ) includes the processed activities at time (t n ), which means that the start and finish times of these activities are within (t n ). Once the activities' start and finish times fall behind time (t n ), these activities are inserted to the completed set (C n ). The decision set in parallel resource allocation has the same meaning as the decision set in serial resource allocation, the only difference being that the activities must begin at time (t n ) to qualify for a place in the decision set (D n ). Similar to serial resource allocation, the most appropriate activity is selected at each step of the parallel resource allocation procedure by using heuristic priority rules. the activities' start and finish times fall behind time ( ), these activities are inserted to the completed set ( ). The decision set in parallel resource allocation has the same meaning as the decision set in serial resource allocation, the only difference being that the activities must begin at time ( ) to qualify for a place in the decision set ( ). Similar to serial resource allocation, the most appropriate activity is selected at each step of the parallel resource allocation procedure by using heuristic priority rules.  Figure 5 shows the outputs of the parallel resource allocation procedure's first five steps in rearranging the activity start-finish times. As mentioned above, the time of the allocation for the n th step ( ) is an additional parameter that is used in parallel resource allocation. At the beginning, is zero (time now) and is incremented in each step until the conclusion of the resource allocation processes. The selection of the activity with the smallest duration as the most eligible activity in the decision set is used as a priority rule  Figure 5 shows the outputs of the parallel resource allocation procedure's first five steps in rearranging the activity start-finish times. As mentioned above, the time of the allocation for the nth step (t n ) is an additional parameter that is used in parallel resource allocation. At the beginning, t n is zero (time now) and is incremented in each step until the conclusion of the resource allocation processes. The selection of the activity with the smallest duration as the most eligible activity in the decision set is used as a priority rule at every allocation time (t n ). Each step in Figure 5 represents one calculation cycle as displayed in Figure 1. at every allocation time (tn). Each step in Figure 5 represents one calculation cycle as displayed in Figure 1. • Activity 1, which has no predecessors, is automatically added to the active set ( ) but does not appear in the resource diagram in Step 1 because it does not consume any resources. Neither does Activity 8 for the same reason.

•
In the first step, i.e., when t1 = 0, there are four activities (Activities 2 and 3) in the decision set ( ) that can start at time zero. Activity 3 is the most eligible as it has the smallest duration out of these four activities and is plotted in the first step.

•
In the second step, since Activity 3 has been scheduled in the preceding step, there is one remaining activity (the second activity) in the decision set ( ) that can start at time zero (t2 = Day 0) that is directly started on day 0.

•
In the third step, since Activities 2 and 3 have been scheduled in the previous steps, there are two activities (Activities 4 and 5) in the decision set ( ) that can start at • Activity 1, which has no predecessors, is automatically added to the active set (A n ) but does not appear in the resource diagram in Step 1 because it does not consume any resources. Neither does Activity 8 for the same reason.

•
In the first step, i.e., when t 1 = 0, there are four activities (Activities 2 and 3) in the decision set (D 1 ) that can start at time zero. Activity 3 is the most eligible as it has the smallest duration out of these four activities and is plotted in the first step.

•
In the second step, since Activity 3 has been scheduled in the preceding step, there is one remaining activity (the second activity) in the decision set (D 2 ) that can start at time zero (t 2 = Day 0) that is directly started on day 0. • In the third step, since Activities 2 and 3 have been scheduled in the previous steps, there are two activities (Activities 4 and 5) in the decision set (D 3 ) that can start at time zero (t 3 = Day 2). Activity 4, which has the smallest duration out of these two activities is the most eligible and is scheduled in the third step.

•
In the fourth step, since Activities 2, 3, and 4 have been scheduled in the previous steps, in this case, there are two activities (activity 6 and 5) in the decision set (D 4 ) that can start at time t 4 = Day 5. Activity 6 is selected to be scheduled since its duration is lower than the duration of Activity 5. This procedure is continued until no activity remains in the decision set. As seen in Figure 5, the remaining activities, all of which use resources, are scheduled without exceeding the maximum supply.

Heuristic Priority Rules
Browning and Yassine [41] tested 20 heuristic priority rules on 12,320 problems. Özkan and Gülçiçek [42] found the optimum heuristic rules for specific project types using artificial neural networks. Heuristic priority rules can be classified as (1) rules that use network characteristics, (2) rules that use time values, (3) rules that use resource parameters, and (4) rules that use a combination of the previous three rules [31,43].
The 17 rules presented in Table 1 are borrowed from Klein's work [10]. This shortened version of Klein's list [10] of heuristic priority rules excludes the rules that were found by Klein [10] to be irrelevant in resource allocation. The first column represents the abbreviations of the rules, the second column represents the formula of each rule. The terms "max" and "min" represent the importance factor. As an example, in the SAD rule, activities with shorter durations are more important than activities with longer durations.
In the SAD rule, the activity that is selected from the decision set is the activity that has the minimum activity duration (d j ); in the MIS rule it is the maximum number of immediate successors (F j ); and in the MTS rule it is the maximum number of successor activities (F * j ). The HRPW rule uses the "positional weight 1" rule that is calculated by adding the duration of the related activity (d j ) to the sum of the durations of all immediate successors (∑ i∈F j d i ). According to the HRPW priority rule, the activity with the highest positional weight 1 is selected from the decision set. The HRPW* rule uses "positional weight 2" formulated by adding the duration of the relevant activity (d j ) to the sum of the durations of all successor activities ∑ i∈F * j d i , not only the immediate successors. The HRPW* priority rule requires that the activity with the highest positional weight 2 should be selected from the decision set.
The EFT and EFTD rules are the static early finish and the dynamic early finish heuristic rules, respectively. The static early finish rule uses the initial CPM's early finish values before resource allocation calculations started. On the other hand, in the dynamic early finish rule, the CPM values are updated in each step of the resource allocation calculations. These updated early finish values are used for the selection of the eligible activity.
The LST and LFT are the late start and finish times of an activity. These rules stipulate that the activities with the earliest LST and LFT are selected from the decision set.
The STFS and STFD rules require that activities with the smallest static total float (i.e., float that exists in the original schedule before resource allocation), and dynamic total float (i.e., float that is created in every step of the resource allocation process), respectively be picked from the decision set.

SAD Min dj
The activity that has the minimum activity duration (dj) is picked.

MIS Max Fj
The activity that has the maximum number of immediate successors (Fj) is picked.

MTS
Max Fj* The activity that has the maximum number of total successors is picked.
The activity that has the highest rank positional Weight 1 (see explanation in the text above Table 1) is picked.
The activity that has the highest rank positional Weight 2 (see explanation in the text above Table 1) is picked.

EFT Min EFTj
The activity with the earliest finish time is picked.

EFTD Min EFTDj
The activity with the earliest dynamic finish time is picked.

LST Min LSj
The activity with the earliest late start time is picked.

LFT Min LFj
The activity with the earliest late finish time is picked.

STFS Min LSj-ES
The activity with the smallest static total float is picked.

STFD Min LSj-ESj
The activity with the smallest dynamic total float is picked.
The activity with the highest resource demand is picked.
The activity with the highest weighted resource utilization and number of successor activities is picked.
The activity with the highest resource utilization in all paths succeeding activity j is picked.
The activity with the highest resource utilization in all paths succeeding activity j (including the impact of the duration of activity i) is picked.
The activity is picked according to Bedworth's [42] heuristic rule HRU1 (see clarification in the text below).
The activity is picked according to Elsayed and Nasr 's [43] heuristic rule HRU2 (see clarification in the text below).
In the HRD rule, the activity with the greatest resource demand is selected from the decision set. Resource demand is formulated as the product of the duration of an activity j (d j ) with the demand in resource (r) in activity (j) (∑ m r=1 u jr ) where m is defined as the total number of resource types. The HWRU rule was proposed by Ulusoy and Özdamar [44] and makes use of the sum of the weighted resource demand (1 + ω) × ∑ m r=1 ( u jr a r ) and the total number of immediate successor activities w × F j where (w) is the weight, (u jr ) is the demand of resource (r) in activity (j), and (a r ) is the availability of resource (r). The activity that displays the largest ω × F j + (1 + ω) × ∑ m r=1 ( u jr a r ) is selected from the decision set.
The HRU1 rule was introduced by Bedworth [45] and makes use of the relationship Where π jh is a set of activities on path (h) placed after activity (j). The sets 1, . . . , π j represent all paths placed after activity (j) in the network. The HRU2 rule was proposed by Elsayed and Nasr [46] and is a modified version of the HRU1 rule as it makes use of the relationship ∑ i∈Π jh ∑ m r=1 u ir d i a r | h = 1, . . . π j . The TIMROS and TIMRES rules use the HRU1 and HRU2 rules, respectively. While LS n represents the late start time of the last activity, acr j represents the HRU1 value of activity j, and act j represents activity j's HRU2 value. In the many studies that have compared heuristic rules, there is no consensus on how superior a specific rule is to other rules in different types of problems [41,[47][48][49][50]. Franco-Duran and de la Garza [51] investigated the selection of appropriate heuristic rules but only for specific types of projects. Messelis and de Causmaecker [48] developed a super algorithm that selects an appropriate algorithm but only for of individual multi-mode resource-constraint project scheduling cases. Vázquez et al. [49] developed a genetic algorithm-based auto selection tool to determine the most appropriate priority rule but only for a multi-project resource constrained project scheduling problem; they also proposed a tie breaker mechanisms in case pairs of rules get the same priority. Franco-Duran and de la Garza [52] also used tie-breakers to enhance heuristic rule performance and compared the heuristic rules on 142 different networks. The identification of appropriate heuristic rules is an open research question [53].

Test Results and Discussion
In this study, 17 heuristic priority rules are compared using both serial and parallel resource allocation by solving single mode benchmark problems obtained from PSPLIB, a library that was introduced by Kolisch and Sprecher [7]. A random problem generator called ProGen is used for generating the problems [54].
A sample network generated by PSPLIB is presented in Figure 6. There are 32 activities in the network. The first and last activities are dummy activities, these activities do not need resources and their durations are equal to zero. strained project scheduling problem; they also proposed a tie breaker mechanisms in case pairs of rules get the same priority. Franco-Duran and de la Garza [52] also used tie-breakers to enhance heuristic rule performance and compared the heuristic rules on 142 different networks. The identification of appropriate heuristic rules is an open research question [53].

Test Results and Discussion
In this study, 17 heuristic priority rules are compared using both serial and parallel resource allocation by solving single mode benchmark problems obtained from PSPLIB, a library that was introduced by Kolisch and Sprecher [7]. A random problem generator called ProGen is used for generating the problems [54].
A sample network generated by PSPLIB is presented in Figure 6. There are 32 activities in the network. The first and last activities are dummy activities, these activities do not need resources and their durations are equal to zero.
The benchmark problems in PSPLIB consist of four sets of different size problems. These 4 problem sets have 480, 480, 480, and 600 schedules that include 30, 60, 90, and 120 activities, respectively. In this study, all these problems are solved using the 17 different heuristic rules presented in Table 1 using both the serial and parallel resource allocation procedures. To expand the testing to reflect varying conditions, six combinations of resource types and resource supply levels were also considered ( Table 2).

•
To increase the variety of problem sets, situations where only one type of resource is used (Combinations 1 and 2 in Table 2), 4 types of resources are used (Combinations 3 and 4 in Table 2), and 10 types of resources are used (Combinations 5 and 6 in Table  2) are also considered. In PSPLIB's default case, the scheduled activities use four different types of resources. So, looking into the use of fewer or more numerous resource types widens the research field and helps with the interpretation of the results.

•
To reflect the varying conditions in construction projects, two resource supply levels are defined in the last column of Table 2. The supply in the "minimum supply level" The benchmark problems in PSPLIB consist of four sets of different size problems. These 4 problem sets have 480, 480, 480, and 600 schedules that include 30, 60, 90, and 120 activities, respectively. In this study, all these problems are solved using the 17 different heuristic rules presented in Table 1 using both the serial and parallel resource allocation procedures.
To expand the testing to reflect varying conditions, six combinations of resource types and resource supply levels were also considered ( Table 2).  Table 2), and 10 types of resources are used (Combinations 5 and 6 in Table 2) are also considered. In PSPLIB's default case, the scheduled activities use four different types of resources. So, looking into the use of fewer or more numerous resource types widens the research field and helps with the interpretation of the results.

•
To reflect the varying conditions in construction projects, two resource supply levels are defined in the last column of Table 2. The supply in the "minimum supply level" satisfies an activity's demand for a specific resource. The supply in the "relaxed supply level" exceeds demand by a factor of 2.5.
All calculations were programmed in Matlab for all 17 heuristic priority rules that were presented in Table 1 using both serial and parallel resource allocation procedures, and the variations expressed in the 6 combinations presented in Table 2. In other words, 12 tests were conducted to test each of the 17 priority rules on each of the 2040 benchmark problems, a total of 12 × 17 × 2040 = 416,160 tests. Tables 3 and 4 show the average increases in project duration after RCPS procedures are implemented using serial and parallel resource allocation procedures, respectively, for each heuristic rule. The rules that achieve the lowest increase in project duration are underlined and bolded. The following are observed in Tables 3 and 4.  (2) Note: The minimum value in the problem set in each column is underlined.
As expected, when the supply is larger than the demand ("relaxed supply" regardless of number of "resource types"), the project duration does not suffer from as much time extension as when resource supply is strictly limited to demand.

•
Assuming the same supply level in all cases, projects with a larger variety of resources suffer more time extension compared to projects that use only few types of resources (e.g., 10 "resource types" vs. 1 "resource type", regardless of supply level).

•
The increases in project duration vary dramatically for each of the six combinations regardless of whether one uses serial or parallel resource allocation, but there is only a slight difference between the performance of the serial and parallel resource allocation procedures. The increases in project duration are calculated by dividing the delayed duration by the critical path length, very much like Franco-Duran and de la Garza [51] did in their study.

•
To assess the performance of heuristic rules relative to each other's, they are grouped in Figure 7 by their distance to the mean increase of project duration assuming a normal distribution. The worst performing heuristics fall into the fourth slice that represents a performance that surpasses the mean increase in project duration (µ) by more than one standard deviation (+σ), whereas the ones that fall into the first slice are considered the best performing heuristic rules since the first slice represents a performance that falls behind the mean increase in project duration (µ) by more than one standard deviation (-σ).
• In serial resource allocation (Table 3), while the LST priority rule consistently results in a desirable outcome, i.e., shorter project durations when ample resources are available, the HRPW* rule causes the largest time extensions when resources are limited. On the other hand, in parallel resource allocation (Table 4), the LFT rule stands out as the best performing priority rule in almost all cases.  In serial resource allocation (Table 3), the SAD and STFS rules rank fourth in every combination of resource type and relaxed/limited supply and the HRPW, EFT, EFTD, STFD, HRD, HWRU, HRU1, and HRU2 rules rank third at least once. These rules consistently failed to perform better than the other rules in serial resource allocation as they resulted in longer extensions of the project duration. On the other hand, the MTS, HRPW*, LST, LFT, TIMROS, and TIMRES rules consistently ranked first or second.
In parallel resource allocation (Table 4), only the HRD rule is ranked fourth, and the SAD, MIS, HRPW, EFTD, and STFS rules are ranked third at least once. In parallel resource allocation, these rules are considered as low performance rules, whereas the MTS, HRPW*, EFT, LST, LFT, STFD, HWRU, HRU1, HRU2, TIMROS, and TIMRES rules ranked first and second.
When one considers both serial and parallel resource allocation combined, Tables 3 and 4 indicate that the MTS, HRPW*, LST, LFT, TIMROS, and TIMRES rules consistently rank first and second (i.e., they resulted in shorter extensions of the project duration) and can be considered as the best performing rules regardless of the resource allocation procedure used. Table 5 shows the average increases in project duration by size of network after RCPS procedures are implemented using serial and parallel resource allocation under the six combinations of circumstances defined in Table 2. After comparing the serial and parallel resource allocation procedures, the better results (i.e., the lowest increases in project du- In serial resource allocation (Table 3), the SAD and STFS rules rank fourth in every combination of resource type and relaxed/limited supply and the HRPW, EFT, EFTD, STFD, HRD, HWRU, HRU1, and HRU2 rules rank third at least once. These rules consistently failed to perform better than the other rules in serial resource allocation as they resulted in longer extensions of the project duration. On the other hand, the MTS, HRPW*, LST, LFT, TIMROS, and TIMRES rules consistently ranked first or second.
In parallel resource allocation (Table 4), only the HRD rule is ranked fourth, and the SAD, MIS, HRPW, EFTD, and STFS rules are ranked third at least once. In parallel resource allocation, these rules are considered as low performance rules, whereas the MTS, HRPW*, EFT, LST, LFT, STFD, HWRU, HRU1, HRU2, TIMROS, and TIMRES rules ranked first and second.
When one considers both serial and parallel resource allocation combined, Tables 3 and 4 indicate that the MTS, HRPW*, LST, LFT, TIMROS, and TIMRES rules consistently rank first and second (i.e., they resulted in shorter extensions of the project duration) and can be considered as the best performing rules regardless of the resource allocation procedure used. Table 5 shows the average increases in project duration by size of network after RCPS procedures are implemented using serial and parallel resource allocation under the six combinations of circumstances defined in Table 2. After comparing the serial and parallel resource allocation procedures, the better results (i.e., the lowest increases in project duration) are underlined and bolded in Table 5. Table 5. Average increases in project duration after RCPS procedures. Note: The lowest increases in project duration are underlined and bolded.

Combinations as of
As seen in Table 5, parallel resource allocation performs better than serial resource allocation in most of the cases, the only exception occurring in the case of one resource type with a relaxed supply level. This finding can be interpreted to mean that in simple cases where there is only one resource that is available in abundance relative to demand, it is quite sufficient to perform simple serial resource allocation rather than the more complex parallel resource allocation. It can also be inferred from this finding that parallel resource allocation is slightly more advantageous than serial resource allocation in situations that involve multiple resource types, a situation that occurs quite often in construction projects. The results do not agree with Kim and Ellis Jr.'s [55] study that used an elitist genetic algorithm to compare these resource allocation techniques and that found that serial allocation performed better than parallel allocation. In that article it is said that the search space of serial resource allocation is larger than the search space of parallel resource allocation. As in Kolisch [24]'s study, serial resource allocation outperforms parallel resource allocation in case of multi-pass techniques. However, in the single-pass case, parallel resource allocation performs better than serial resource allocation.

Conclusions
The main advantage of heuristic methods in solving RCPS problems is that they operate with high computational speed because they use simple priority rules. Using the best-performing priority rules enhances the advantages of heuristic RCPS. Most scheduling software packages use heuristic priority rules. In this study, the most common heuristic priority rules are tested under a variety of conditions defined by network size, resource allocation procedure, number of types of resources, and resource supply levels.
It is not easy to determine by surveying the literature which priority rule exhibits the best performance in solving the RCPS problem. While some researchers consider few real projects, others compare few (but not all) priority rules, and others use only one size (often a small size) network to compare the rules. To fill this gap, 17 priority rules were investigated in this study in a total of 2040 projects, i.e., all the projects in PSPLIB organized in four sets of work schedules of 30, 60, 90, and 120 activities, using different types of resources and different resource supply levels.
Overall, it was found that the MTS, HRPW*, LST, LFT, TIMROS, and TIMRES rules consistently rank first and second as they resulted in shorter extensions of the project duration regardless of the resource allocation procedure used. It was also found that in most cases, parallel resource allocation performs better than serial resource allocation, and that the "minimum late finish" rule (LFT) performs better than the other priority rules in parallel resource allocation. In serial resource allocation, the "minimum late start time" (LST) and the "highest rank of positional weight 2" (HRPW*) rules share the first rank depending on the combination of resource supply levels and number of resource types. All three rules are simple and tend to demonstrate that simple heuristic priority rules perform better (i.e., result in shorter extensions of the project duration) than complicated rules.
Even though the study presents a thorough comparison of priority rules used in heuristic methods, it also has limitations. Multi-mode and multi-project applications, the impact of project type and project scope need to be investigated in future research. In addition, 1, 4, and 10 resource types and minimum and relaxed supply levels are considered in Table 2. The use of more sophisticated measures such as the Resource Factor (RF) defined by Pascoe [56] and the Resource Strength (RS) proposed by Kolisch [43] can be explored in future research.