Abstract:
Constrained resource allocation techniques are implemented with a digital computer due to its improved speed and graphics capability. These techniques allow for rapid resource constrained scheduling when given a precedence ordered list of activities. Resources are allocated to activities in order of highest priority with all precedence constraints being taken into account. Resources are allocated in such a manner that preserves the integrity of the random variables associated with start and finish times of activities. Activity durations and start/finish expected values and variances are adjusted to account for shortfalls occurring prior to an activity&#39;s start time and between an activity&#39;s start and finish times. The result is a schedule of start and finish times for each activity that is resource feasible and achievable within a prescribed confidence level.

Description:
This is a continuation of application Ser. No. 07/684,036, filed Apr. 11, 1991, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     FIELD OF THE INVENTION 
     The present invention relates to methods for scheduling activities and resources during project management. More particularly, this invention describes an efficient method for scheduling resources amongst a number of activities taking both resource and precedence constraints into consideration while preserving the probabilistic information about the start and finish times of the project&#39;s activities. 
     BACKGROUND ART 
     Because research and development projects can be exceedingly complex to manage, a number of project management methods have been developed. Planning a project requires a number of variables to be taken into account: the resources that will be required, the people who will be involved, specifying discrete activities in some logical precedence, order, etc. Resources, activities, and personnel will all be constrained in some fashion. Some resources may only be usable for one activity at a time; personnel may be divided between a number of different projects; shortfalls such as illness and vacations must be taken into account. Activities may not be scheduled in a random fashion; in any project some activities will have to precede others in some logical order to successfully complete the project. For example, in constructing a building it would make no sense to install air conditioners prior to laying the foundation or drawing blueprints. 
     Many methods for project management are well known. The most common, CPM (critical path method), is a deterministic method in which each activity in the project network has a predetermined finite duration. This method has been applied in a number of settings using a number of different facilities. Recently with the progress in the field of digital computers, software products for project management have become available in a myriad of different packages. For a recent discussion of these packages see L. Wood, &#34;The Promise of Project Management&#34;, BYTE, November 1988, pp. 180-192. 
     CPM scheduling requires a determination of what activities are on the critical path and evaluating their start and finish times. Because uncertainties abound in complex projects, the deterministic CPM schedule may have little resemblance to the realities of the project schedule, thereby requiring frequent updating and wasting of a management resource for scheduling purposes. 
     A more realistic model of a project can be obtained by taking into account the uncertain, or probabilistic, nature of activity durations. Uncertainties arise in a number of ways. An activity may require more total effort than the amount allocated. If it does, then successor activities will be delayed, ad infinitum. Another well known method for project management, PERT (program evaluation and review technique) attempts to take into account the uncertain nature of activity durations. However, the PERT method makes assumptions which provide inadequate models of how to calculate probabilistic information. For example, it is assumed in PERT that the expected cumulative duration to the start of an activity is equal to the maximum of the expected cumulative durations of the inbound activities. This assumption can easily be shown to be inconsistent with the rules of Probability Theory. In Clark, C. E., &#34;The Greatest of a Finite Set of Random Variables&#34;, Operations Research, March-April 1961, pp. 145-162, Clark sets forth a method which can be applied to determine start times of activities which preserves their probabilistic nature and overcomes the problems which arise in the PERT method. 
     However, none of the above techniques take into account the limited availability of resources (referred to in the art as &#34;resource constraints&#34;). All or part of a resource may be used by many activities. If activities which require the same resource are scheduled at the same time by a project management tool looking only at precedence information, then the schedule set forth by the project management tool can not be followed. Thus, a method is needed for scheduling both activities and resources which takes into account and preserves the probabilistic information of the activity durations as well as the availability of resources. 
     The issue of resource constraints has been addressed by developers of large computer software packages which determine a single point estimate for activities. The software operates on a large computer system and is costly and time consuming to execute. Furthermore, such systems are deterministic in nature and do not take into account the uncertain nature of activity durations. (For background information, see Joseph J. Moder, Cecil R. Philips, Edward W. Davis, Project Management with CPM, Pert and Precedence Diagramming, pp. 189-217 (Van Nostrand Reinhold Co., 1983). 
     As will be disclosed below, the present invention provides a rapid method of deriving a resource constrained schedule for a project network that preserves probabilistic information about activity schedules. The present invention provides a means for representing the availability of each resource as an ambient level of availability and a schedule of temporary shortfalls. 
     SUMMARY OF THE INVENTION 
     The present invention is a method for quickly scheduling activities while preserving the probabilistic information about activity scheduling and taking resource constraints into consideration. An initial, deterministic, unconstrained schedule is first computed to allow an approximation to be made of each activity&#39;s slack time. (Slack time is the amount of time an activity can be delayed without impacting the project&#39;s finish date.) The rule for establishing the order in which activities are scheduled is made such that the activity with least available slack time should be scheduled before those with greater slack time. 
     The minimum-slack selection rule specifies the next activity to be scheduled at each step in an iterative procedure, which continues until all activities are scheduled. In addition to precedence arcs initially defined in the project which identify the activity or activities which must be scheduled before certain activities in the network, the present invention provides for resource arcs in order to take into account resource constraints, thereby providing a more realistic schedule. Resource arcs function as precedence arcs and are added between a scheduled activity and an activity yet to be scheduled when a resource required by the activity to be scheduled is not available until the scheduled activity has completed use of the resource. Furthermore, the present invention accounts for resource shortfalls which occur during the project by adjusting the projected start and finish times of each activity to include delays which will occur due to a resource shortfall. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a computer incorporating the present invention. 
     FIG. 2 is the first portion of a general flowchart of the scheduling system in accordance with the present invention. 
     FIGS. 3a, 3b, 3c, and 3d illustrate the iterative list processing technique employed in the present invention. 
     FIG. 4 is the intermediate portion of the general flowchart of the scheduling system in accordance with the present invention. 
     FIG. 5 is the final portion of the general flowchart of the scheduling system in accordance with the present invention. 
     FIG. 6 is a more detailed flowchart of a portion of the general flowchart for resource constrainability. 
     FIG. 7 is a more detailed flowchart of a portion of the general flowchart for calculating the maximum mean and variance of the start time of activities. 
     FIG. 8 is a more detailed flowchart of a portion of the general flowchart for calculating the delay in an activity&#39;s start time due to shortfalls preceding the activity&#39;s start time. 
     FIG. 9 is more detailed flowchart of a portion of the general flowchart for calculating the delay caused by a shortfall occurring during the duration of an activity. 
     FIG. 10 illustrates that resource shortfalls are spanned by stretching start and finish times. 
     FIG. 11 graphically illustrates a shortfall delay. 
     FIG. 12 graphically illustrates the computation of shortfall delay in the finish time of an activity. 
     FIG. 13 graphically illustrates the variables used to compute the shortfall delay. 
     NOTATION AND NOMENCLATURE 
     The detailed description that follows is presented largely in terms of algorithms and symbolic representations of operations on data bits and data structures within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. 
     An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. These steps are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to these signals as bit patterns, values, elements, symbols, characters, data packages, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. 
     Further, the manipulations performed are often referred to in terms, such as adding or comparing, that are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein that form part of the present invention; the operations are machine operations. Useful machines for performing the operations of the present invention include general purpose digital computers or other similar devices. In all cases there should be borne in mind the distinction between the method of operations in operating a computer and the method of computation itself. The present invention relates to method steps for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals. 
     The present invention also relates to an apparatus for performing these operations. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer as selectively activated or reconfigured by a computer program stored in the computer. The algorithms presented herein are not inherently related to any particular computer or other apparatus. In particular, various general purpose machines may be used with programs written in accordance with the teachings herein, or it may prove more convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description given below. 
     TERMS AND DEFINITIONS 
     Arc: indicator of precedence between activities; depicted as a directed line connecting two activities. The activity at the arc&#39;s origin (sometimes referred to as the &#34;tail&#34; activity) must be completed before the activity at the arc&#39;s end (referred to as the &#34;head&#34; activity) may be started. 
     Technical or Logical Arcs: the arcs which define the precedence ordering of the activities in a project network. 
     Resource Arc: an arc added by the scheduler to add a precedence relationship between two activities which use the same resource. (e.g., Task A and Task B can be done concurrently. However, they both require the same resource. The scheduler adds a &#34;resource arc&#34; between Task A and Task B, forcing one to complete before the other can be started.) A project is referred to as resource constrained when these arcs have been added. 
     Confidence Level: the percent probability used to schedule activity start and finish times (e.g., a user may specify that she wants a project schedule showing start and finish times with an 85% chance of being met. 85% is the confidence level.) 
     Inbound or Incoming or Parent Activities: the activities which immediately precede the current activity; that is, activities which must be completed before the current activity can start (activities which are in a &#34;tail&#34; precedence relation to the which are in a &#34;tail&#34; precedence relation to the current activity). 
     Outbound or Outgoing or Child Activities: the immediately succeeding activities which may not be started until the current activity is completed (activities which are in &#34;head&#34; precedence relation to the current activity). 
     FTE Available: the full time equivalent level of effort defined for a resource. The FTE available for &#34;Joe,&#34; a full-time worker, would be defined as 1. Anne, who works 3/4 time would have an FTE available of 0.75. If there are three software engineers who are full-time workers, the FTE available for the resource &#34;Software Engineer&#34; would be 3. 
     Shortfall: a temporary period of time when a resource is not fully available.--holidays, vacations, weekends, etc. 
     SF=time point marking the beginning of a shortfall 
     V=shortfall duration 
     r=(FTE Available--Total Outage)/FTE Available; the fraction of &#34;FTE Available&#34; available during the shortfall. 
     R=(1/r)--1; delay multiplier. Equals 0 when r=1; approaches infinity as r approaches 0. 
     u(x,y)=unit step function; 0 if x&lt;y; 1 if x≧y. 
     Total Outage: the amount by which the FTE Available is reduced during a shortfall. 
     Shortfall Calendar: a list of a resource&#39;s shortfalls, each specified as a temporary level of FTE Available over a fixed time period. 
     j Index on activities which have been ordered by precedence 
     ij, kj Indices on inbound arcs at activity j 
     A ij , A kj  Tail (left) activity of arc ij or kj 
     t j  The duration of activity j; a random variable 
     t j .sup.μ  The expected duration of activity j t j .sup.μ =(optimistic+most likely+pessimistic)/3 t j   v  =The variance of activity j duration t j   v  =[pessimistic-optimistic) 2  +(most likely-optimistic)×(most likely-pessimistic)]/18 
     T j  The cumulative duration through the end of activity j; a random variable 
     
         T.sub.j =M.sub.j +t.sub.J 
    
     T J .sup.μ  The expected cumulative duration through the end of activity j 
     
         T.sub.j.sup.μ =M.sub.j.sup.μ +t.sub.j.sup.μ 
    
     T j   v  The variance of cumulative duration through the end of activity j 
     
         T.sub.j.sup.v =M.sub.j.sup.v +t.sub.j.sup.v 
    
     M j  The cumulative duration to activity j (start time); a random variable M j  =max {T A1j , . . . T AIj  } 
     M j .sup.μ  The expected cumulative duration to activity j 
     M j   v  The cumulative variance to activity j 
     m kj  Defined as: m kj  =max {T Akj ,m.sub.(k-1)j }; m 1j  =T A1j  ; 2≦k≦I ∴m kj  =max {T Alk , . . . , T Akj  } and M j  =m ij   
     m kj .sup.μ  the k th  estimate of M j .sup.μ 
     m kj   v  the k th  estimate of M j   v   
     b j  Tail activity index of the best path arc back from activity j 
     B j  Set of activities numbers of the best path back from activity j 
     
         B.sub.j ={j}∪B.sub.bj ;B.sub.1 ={.0.} 
    
     J ikj  Junction activity index of best paths back from A ij  and A kj  ; k≠i 
     
         J.sub.ikj =max {B.sub.Aij ∩B.sub.Akj } 
    
     C(T Aij , T A  (i+1) j ) Correlation between cumulative durations approximated by 
     
         C(T.sub.best path ij, T.sub.best path(i+1)j) 
    
     C(M j , T Aij ) Correlation between cumulative duration at activity j and the cumulative duration through activity A ij   
     N -1  (%|μ,ν) The inverse cumulative normal distribution for a given mean μ, variance ν, valued at probability %. 
     %F i  finish time point for predecessor activity i at % confidence level. 
     
         F.sub.i =N.sup.-1 (%|T.sub.i.sup.μ, T.sub.i.sup.v) 
    
     SF i  beginning of shortfall interval after %F i  (finish time for predecessor activity i). 
     %S&#39; start time point for current activity at % confidence level assuming no short falls occur after %F i . 
     
         S&#39;=N.sup.-1 (% |.sup.F M.sup.μ, .sup.F M.sup.v) 
    
     %S start time point for current activity at confidence level. 
     
         %S=N.sup.-1 (%|M.sup.μ, M.sup.v) 
    
     d the shift in %S (start time) caused by shortfalls. 
     
         d =%S--%S&#39; 
    
     %F&#39; finish time for current activity at % confidence level assuming no short falls exist after %S. 
     
         %F&#39;=N.sup.-1 (%|.sup.F T.sup.μ,.sup.F T.sup.v) 
    
     %F finish time for current activity at % confidence level. 
     
         %F=N.sup.-1 (%|T.sup.μ,T.sup.v) 
    
     the shift in %F (finish time) caused by shortfalls. 
     
         e =%F-%F&#39; 
    
     RANDOM VARIABLES 
       F  M start time for the activity assuming no short falls after %F i  for all inbound activities. 
     d delay in M (start time for an activity) caused by all shortfalls after %F 1  (finish time for predecessor activity i). 
     M start time for an activity. 
     
         M=.sup.F M+d 
    
     t duration of an activity assuming no shortfalls are encountered. 
       f  T finish time point for an activity assuming no short falls after start time %S. 
     
         .sup.F T=M+t 
    
     e delay in the current activity&#39;s duration caused by short falls after %S. 
     T finish time for the activity. 
     T= F  T+e 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The present invention will be described as a method corresponding to the diagrams presented in the figures. However, one who is skilled in the art will recognize that the invention may be applied in a variety of fashions. 
     Although the overall method of the present invention may be carried out by many different facilities, in the preferred embodiment a digital computer such as the one shown in FIG. 1 is used. The digital computer of FIG. 1 comprises a CPU 10, memory 11, and an I/O circuit 12. The CPU 10 performs computational functions and memory addressing. The memory 11 is used for storing programs and data. The I/O circuit 12 provides the computer means for receiving data from a user (not shown), such as by a keyboard 13 or a pointing device 14. The I/O circuit also provides means for outputting results to devices like display monitor 15 or printer 16. It is to be emphasized that using a digital computer is not necessary for applying the present invention, but merely provides a convenience. 
     In the method of the present invention the project network is first established and initialized. Specifically, the activities of the project network are identified, scheduling precedence (i.e., precedence arcs) is specified between activities indicating the inbound activities to each activity in the project network, and the resources required by each activity and the probabilistic duration of each activity is specified. A confidence level (%) is also specified, identifying a level of confidence that the project network will be performed within the derived schedule. The activities are then scheduled taking into account precedence as well as resource constraints. Resource arcs, which function as precedence arcs, are added when it is determined that there is a probability that the resources required by the activity to be scheduled exceed their general level of availability. Using precedence arcs and resource arcs for the current activity to be scheduled, start and finish times are determined such that the probability of not exceeding these times equals the prespecified (%) confidence level. The probabilistic nature of the activity&#39;s duration and the confidence level of the network are preserved. The start and finish times are then further delayed, if necessary, to take into account temporary unavailability of a resource during a project, referred to as resource shortfall. The result is a realistic project schedule which accounts for all network precedence, resource constraints, and probabilistic information on activity duration within the given (%) confidence level. 
     Referring to FIG. 2, the flowchart discloses several initial steps 101, 102, 103, 104, 105 which are performed prior to executing the iterative procedure which starts at box 201. The initial procedures comprise the following steps: 
     (1) In box 101, the user or manager defines the project network. This is done by identifying all of the activities that a project will entail as well as the necessary order (precedence) for carrying out the activities. The precedence is specified according to precedence arcs which identify for each activity those activities (if any) which must be scheduled and completed before the current activity can be scheduled. The user will also specify the parameters of a probability distribution on activity duration for each activity. Any parametric form of probability distribution may be used. Without limiting the claim, the method will be illustrated using the Triangular Distribution. The Triangular Distribution requires estimates of the optimistic, pessimistic and most likely durations for each activity. The user also defines the resources required for carrying out each activity. A confidence level used to predict finish times for the activities and project is also specified by the user. Resource availability is specified as a general level of availability (FTE Available) together with a shortfall calendar for each resource. The shortfall calendar identifies when each resource is temporarily below its general level and by how much. Shortfalls represent, for example, a personnel resource on vacation or a device resource shutdown for maintenance. If the user is using a digital computer 20 (FIG. 1), this information may be defined using a graphical display interface comprising keyboard 13, pointing device 14 and display monitor 15 whereby the user enters the information into the computer. 
     (2) In box 102 (FIG. 2), a list of all activities is created and ordered by precedence. When ordered by precedence, the activities defined to precede other activities are listed before those activities. 
     (3) In box 103, an initial estimate of the project&#39;s duration is calculated using N -1  (%|t j .sup.μ, t j   v ) for each activity&#39;s duration. 
     (4) In box 104, the total slack time for each activity is determined from a deterministic (CPM) schedule of the project. Slack time is the amount of time that may be lost to activity delay without having a delaying effect upon the whole project. For example, activities on the critical path have zero slack time because any delay would extend the entire project. 
     The resource constrained scheduling procedure of the present invention utilizes an iterative list processing approach to schedule the activities of the project. Activities are selected and scheduled one at a time from a list of schedulable activities. Exactly one activity is scheduled at each step. The priority rule for scheduling an activity is to select from the currently schedulable activities, the one which has the least total slack time from the deterministic schedule as defined above. However, it will be obvious to one skilled in the art that other priority scheduling rules may also be utilized. 
     Each activity passes through four states as it progresses through the scheduling procedure. The path is summarized as follows: 
     UNSCHEDULABLE→SCHEDULABLE→SCHEDULED AND ONGOING→SCHEDULED AND DONE 
     At any given point in the process, all activities are in one of the four states. Technical precedence and the activities already &#34;Scheduled&#34; determine the &#34;Unschedulable&#34; and &#34;Schedulable&#34; activities. Activities with no unscheduled predecessor activities are moved from the Unscheduled list to the Schedulable list. Then the activity with the least total slack is removed from the Schedulable list and scheduled. 
     Scheduling an activity entails determining both its start and finish times. The procedure begins by adding any required resource precedence arcs. Then the procedure (illustrated by the flowchart of FIG. 7) determines the start time assuming no shortfalls. The finish time is logically defined as the start time plus the duration of the activity. Either or both start time and finish time may be modified according to the rules for handling resource shortfalls which will be described below. Finally, the Schedulable list is updated by adding any activities which have just become schedulable as a result of scheduling the current activity, that is, those activities which now have no unscheduled predecessor activities. The current activity is considered scheduled at this point. However, it is placed in a &#34;scheduled and ongoing&#34; list. This list tracks the resource commitment information needed to apply the rules for adding resource precedence arcs to the network. Eventually, the activity will be dropped from the list and be considered &#34;Scheduled and Done&#34;. The process moves to the next activity to be scheduled, continuing until the unscheduled and schedulable lists are empty and all activities are scheduled. 
     However, choosing which activity to schedule next only on the basis of least slack may result in a less than optimal selection under certain conditions. In the preferred embodiment a holding queue is utilized to prevent a low priority activity from being scheduled before a high priority activity which utilizes the same resource. Consider a project which consists of three activities, Task A, Task B, and Task C, each of which has a duration of five days. Task C cannot start until Task B is completed. Task B and Task C have zero slack (they are the critical path); Task A has five days slack. Also assume that Person X is assigned full time to Task A and Task C, and Person Y is assigned full time to Task B. Following the scheduling algorithm, Task A and Task B are put on the Schedulable list because they have no predecessor activities. Person Y&#39;s task (Task B) is scheduled first because it has zero slack. That releases Task C (Person X&#39;s) to the Schedulable list. Since Task C has zero slack, it is chosen to be scheduled next. Finally, Person X&#39;s other task, A, is scheduled after Task C. We now have a project which lasts fifteen days, instead of the optimal ten, with Person X sitting idle for the first five days. To avoid this situation, released activities are not put on the Schedulable list immediately. Instead, they are placed in a holding queue until the Schedulable list is empty. One further refinement involves returning an activity to the holding queue unscheduled if one of its resources has been scheduled since the Schedulable list was last filled. This action will prevent a low priority activity from being scheduled before a high priority activity when they both use the same resource. 
     Scheduling may be described pictorially by reference to FIGS. 3a, 3b, and 3c. Activities are initially unschedulable. Associated with each activity are the resources and the amount of time with respect to a resource each activity requires. Furthermore, the amount of slack time for each activity is known. The resources are initialized by identifying the FTE Available, as well as a shortfall calender, for each resource. The activities can be moved to the schedulable list if the activity has no predecessor activities which are not scheduled, that is, those activities located on the unschedulable or schedulable list. Referring to FIG. 3a, for example, activities A and B, having no unschedulable predecessors, are moved to the schedulable list while activities C, D, E and F remain on the unschedulable list. The activities on the schedulable list are then ordered according to the amount of least slack. Thus activity A, which has a smaller amount of slack than activity B, is scheduled and moved from the schedulable list to the scheduled and on-going list. The resources utilized by activity A are allocated thereby identifying, for example, that activity a requires 0.25 of resource 1, 0.5 of resource 3 and 1 of resource 5. 
     Activity B is then moved to the scheduled and ongoing list and activity B resources are allocated. However, activity B requires one full day of resource 1 and at that time, only 0.75 is available due to the fact that activity A requires 0.25 of resource 1. Thus a resource arc is added, which provides temporal precedence to activity A so that activity A will be performed prior to activity B. Activity A is then moved to the scheduled and done list and activity B, having its resource arcs included showing it has to wait for resource 1 to be used by activity A before it can utilize resource 1, is moved to the scheduled and on-going list. The process continues by determining if any of the activities on the unschedulable list have predecessor activities which are now scheduled. Thus for example, if activity E requires that activity B be performed first, B is now on the scheduled list and therefore activity E can be moved to the schedulable list to be processed and scheduled. 
     This iterative process continues until all activities are scheduled. Although the list processing approach can be implemented in many ways, one technique is to provide a list of unschedulable activities and then a plurality of scheduled and on-going and scheduled and done activities as it pertains to each resource. Thus, the order in which resources perform tasks are identified as well as the sequence of execution of activities as defined by the arcs between activities and the ordering of predecessor activities for each activity. 
     FIG. 3c is illustrative of the resource arcs that may be imposed during the list processing of the schedule. For example, FIG. 3c shows four activities A, B, C and j, where j requires execution of activities A, B and C before it can be executed. During scheduling it has been determined because of the amount of available slack, activity A has first access to a resource which activity B and C also require. Furthermore, activity B has precedence over activity C in accessing that same resource because it has less slack than activity C. Thus resource arcs are added, as shown by the dotted line, to identify that activity A first has access to the resource after which activity B has access followed by activity C. At the conclusion of activity C&#39;s processing utilizing the resource, activity j can be processed. 
     The preferred embodiment is illustrated in FIG. 3b. A holding queue is provided. Each activity ready to be placed on the schedulable list is first placed in the holding queue. The activities in the holding queue are held until the schedulable list has been emptied. If an activity requires a resource which has been scheduled for an activity recently located on the schedulable list (subsequent to the last time the schedulable list had been emptied), the activity is moved back to the holding queue for subsequent scheduling. This somewhat minimizes the sub-optimal effects caused by scheduling based solely on least slack and prevents a low priority activity from being scheduled before a high priority activity when both activities require the same resource. 
     This scheduling procedure is described in further detail with reference to FIG. 2. Once the duration schedule has been evaluated and the slack time calculated for each activity, the Schedulable list is initialized at box 105 by assigning to it all activities with no predecessor activities. The activities on the Schedulable list are prioritized based on least available slack. 
     Following this initialization stage of the process, the iterative portion of the process starting at box 201 is begun and repeated until all activities have been scheduled. Subsequent stages of the iterative portion of the process return to the procedure represented by box 201 via input box 1A. 
     The first step in the iterative portion of the process is to determine if the scheduling process is complete. This is done by looking first to the Schedulable list at box 201, and if it is empty, turning to the holding queue at box 202. If the activity holding queue is empty as well, scheduling has been completed. The completed schedule is then displayed on the display monitor or output to a similar output device to the user (box 204). If the holding queue is not empty at box 202, the holding queue activities are moved to the Schedulable list at box 205. 
     The activity of highest priority (i.e. the one with the least available slack time) is selected at box 206. This activity is removed from the Schedulable list and, if it is constrainable, resource arcs are added as necessary. It is at this point that resource usage and the availability of resources are taken into account. 
     The constrainability evaluation will be described with reference to FIG. 6. Input box A of this portion is directed from box 206 of FIG. 2. 
     An activity is said to be constrainable if it is selected for scheduling and passes the following condition: an activity is not constrainable if any of the resources it will require have already been scheduled for another activity since the Schedulable list was last filled. A list of resources used is maintained and checked at box 301. This list of resources used is cleared each time the Schedulable list is refilled from the holding queue. Activities not constrainable at box 301 are added back to the holding queue at box 302. Another iteration of the process then begins again at box 1A of FIG. 2. Once all resources have been constrained as determined at box 303, the process is resumed at box 207 of FIG. 2. 
     The present invention&#39;s model of resource availability specifies each resource as a full-time equivalent (FTE) level of effort and a calendar of shortfalls. The full-time equivalent level of effort is referred to as FTE Available. The procedure, represented in boxes 303 through 307, guarantees that a resource will never be scheduled for more than the FTE Available at any time. 
     First, at decision box 304 the determination is made as to whether the resource&#39;s FTE --  Remaining will allow the resource to be concurrently scheduled. FTE --  Remaining is the amount of resource available after all constraints to ongoing activities (those in the Scheduled and Ongoing list). The resource can be concurrently scheduled if FTE --  Remaining is not less than that requested by the activity (FTE --  Requested). If the activity can be scheduled, at box 305 the amount FTE --  Requested is deducted from the resource&#39;s FTE --  Remaining and a resource precedence arc is added from the last activity placed on the Scheduled and Done list to the current activity if a precedence arc doesn&#39;t already exist. The procedure then returns to see if there are more activities to be constrained at step 303. 
     If the resource&#39;s FTE Remaining is less than the FTE needed by the activity (FTE --  Requested) at box 304, at step 306 the first activity from the resource&#39;s Scheduled and Ongoing List is put on the done list indicating that the activity must finish before the current one can start and use the resource. Once the activity is moved to the Scheduled and Ongoing list, at step 307, the moved activity&#39;s FTE requirement (FTE --  Requested) is added to the FTE Remaining. This iteration is repeated until there is enough FTE --  Remaining to satisfy the FTE --  Requested of the current activity. The process then continues at box 305 as described above wherein the amount of FTE --  Requested is deducted from the resource&#39;s FTE Remaining and a resource precedence arc is added from the last activity placed on the Scheduled and Done list to the current activity if a precedence arc doesn&#39;t already exist. 
     Having completed constraining the activity to account for all resource requirements, the process continues at box 207 of FIG. 2. Step 207 calls for calculating the maximum normal distribution for the start time of the current activity ( F  M.sup.μ,v). This requires the execution of an algorithm for calculating a maximum normal distribution which will be described with reference to FIG. 7. This algorithm is derived from the reference, Clark, C. E., &#34;The Greatest of a Finite Set of Random Variables&#34;, Operations Research, March-April 1961, pp. 145-162; described below. 
     By adding and including resource arcs in addition to the precedence arcs in the determination of the start time of an activity, the start time allows for resource constraints while preserving the probabilistic nature of the network. The process described herein selectively adds resource arcs, only when needed, thus providing an effective resource constrained schedule. 
     The start time (M) for an activity is the maximum of the cumulative durations of its immediate predecessors. In the case of two incoming activities: 
     
         M=max(T.sub.1, T.sub.2)                                    (1) 
    
     where T 1  and T 2  are the cumulative durations of the incoming activities. 
     When uncertainty about activity durations is introduced, relation (1) still holds, but M, T 1  and T 2  are now random variables. When activity durations are uncertain, project management tools should produce the probability distribution on finish date or estimate a finish date at a selected confidence level. (e.g., a finish date which has an 85% chance of being met). The analysis herein assumes that start and finish times are normally distributed, a reasonable approximation when there are many activities in a network. Since a normal distribution is fully specified by a mean and variance, the objective of the algorithm is to calculate a mean and variance for each activity&#39;s start and finish times. This task is not trivial since: 
     
         M.sup.μ≠max (T.sub.1.sup.μ,T.sub.2.sup.μ) and M.sup.σ ≠max(T.sub.1.sup.σ,T.sub.2.sup.σ)       (2) 
    
     where the superscript μ denotes expected value and σ denotes standard deviation. 
     In FIG. 7, the first step of the algorithm is to calculate the mean duration and variance for the current activity. Although any form of probability distribution may be used, it is preferable to use a parametric form with easy-to-access parameters and easy-to-calculate mean and variance. The method will be illustrated using the Triangular distribution, with the parameters pessimistic, most likely, and optimistic duration. Therefore, using estimates for pessimistic (pess.), optimistic (opt.) and most likely (m.l.) durations, 
     The expected or mean duration is defined as: ##EQU1## 
     Decision box 402 determines if the activity has any immediate predecessors. If there are none, then the maximum mean and variance for the start time of the current activity will be zero (it can start at any time because it is not dependent on incoming activities.) Zero is then returned at box 403. Decision box 404 determines if the current activity has only one predecessor. If yes, then the maximum mean and variance is set equal to the cumulative mean and variance of the predecessor activity at box 405. That is, with only one inbound activity: 
     
         .sup.F M.sup.μ, v =T.sup.μ,v                         (5) 
    
     Now, when there are multiple inbound activities they are ordered at step 406 by descending values of their cumulative means T i .sup.μ. This is done to keep α (equation 9) positive. Following this, it is necessary at box 407 to calculate the correlation between the cumulative durations of the inbound activities. 
     The technique utilized to generate this result was initially developed by Clark for non-resource constrained scheduling. The assumption that the distributions are normal is used in the equations to determine mean and variance which apply to the maximum of two &#34;normally distributed&#34; variables. Also, as explained by Clark, whenever a maximum is defined over more than two variables (inbound activity durations), we must apply the equations repetitively. i.e., 
     
         max(T.sub.1,T.sub.2,T.sub.3)=max(T.sub.1,max(T.sub.2,T.sub.3))(6) 
    
     At step 408, the first estimate of the maximum mean and variance is the cumulative mean and variance of the first inbound activity. The iterative process across the inbound activities is indexed by k, thus for each activity: 
     
         m.sub.k =max(T.sub.k,m.sub.k-1); m.sub.1 =T.sub.1          (7) 
    
     For clarity, the equations below are also indexed for each activity j in the network, i.e. at each point where the new start time is defined as the maximum of all the inbound times. 
     The objective is to compute M j .sup.μ  and M j   v  at each activity where M j .sup.μ  is the expected cumulative duration to activity j (expected start time there) and M j   v  is the variance of cumulative duration to activity j. Substituting terms directly into Clark&#39;s equations develops the equations for considering each inbound activity one at a time. 
     Define: 
     
         a.sub.kj =[T.sup.v.sub.Akj +m.sup.v.sub.(k.sub.-1)j -2C(T.sub.Akj,m.sub.(k-1)j)*T.sup.σ.sub.Akj *m.sup.σ.sub.(k-1)j ]1/2                            (8) 
    
     
         α.sub.kj =(m.sup.μ.sub.(k-1)j -T.sup.μ.sub.Akj)/a.sub.kj(9) 
    
     
         m.sup.μ.sub.kj =T.sup.μ.sub.Akj *N(-α.sub.kj)+m.sup.μ.sub.(k-1)j *N(α.sub.kj) +a.sub.kj *n(α.sub.kj)                                        (10) 
    
     
         m.sup.v.sub.kj =(T.sup.μ.sub.Akj.sup.2 +T.sup.v.sub.Akj)*N(-α.sub.kj)+(m.sup.μ.sub.(k-1)j.sup.2 +m.sup.v.sub.(k-1)j) *N(α.sub.kj) +(T.sup.μ.sub.Akj +m.sup.μ.sub.(k-1)j)*a.sub.kj *n(α.sub.kj)-m.sup.μ.sub.kj.sup.2(11) 
    
     
         C(T.sub.ij,m.sub.kj)=[T.sup.σ.sub.kj *C(T.sub.kj,T.sub.ij)+(m.sup.σ.sub.(k-1)j *C(T.sub.ij ,m.sub.(k-1)j) -T.sup.σ.sub.kj *C(T.sub.kj, T.sub.ij))*N(-α.sub.kj)]/m.sup.π.sub.kj          (12) 
    
     where 2≦k≦I and n(x) and N(x) are the standard normal probability density function and the standard normal cumulative distribution functions, respectively. Equation (12) satisfies step 409 for calculating the correlation between inbound cumulative durations and the estimate of the maximums. Note that these equations assume that the variable T k .sup.μ  is ordered with decreasing mean as was done in step 406 so that α is always positive. 
     These steps are repeated at boxes 410, 411 and 412 until the correlation between the inbound cumulative durations and estimates of the maximum have been calculated considering all inbound acts. 
     The final result at step 413 each activity is: 
     
         M.sub.j.sup.μ =m.sub.Ij 
    
     
         M.sub.j.sup.v =m.sub.Ij.sup.v 
    
     This set of dynamic equations in the index k requires the following initial conditions for a solution: 
     
         m.sub.1j.sup.μ =T.sub.1j.sup.μ ; 
    
     
         m.sub.1J.sup.v =T.sub.1J.sup.v ; 
    
     
         C(T.sub.Aij,T.sub.Akj)known value 
    
     where C(T Aij ), T Akj )) is the correlation between cumulative durations approximated by C(T best  path ij, T best  path (i+1)j) which was determined at box 407. 
     In a large network of activities, calculating the term C(T Aij , T Akj )) would be extremely computationally intensive because it depends on all activity times that can possibly impact T Aij  and T Akj  i.e., all paths leading to these two activities. The additional simplifying assumption used to make the computation of this term manageable is to select a single &#34;best path&#34; back from each T Akj  and use it as a surrogate for purposes of computing the required correlation coefficients. 
     Once a &#34;best path&#34; is selected for each of T Aij  and T Akj , the correlation coefficient is computed by separating the dependent and independent parts of the two &#34;best paths&#34; (J ikj ).. We can now compute: 
     
         C(T.sub.Aij,T.sub.Akj)=M.sub.Jikj.sup.v /((T.sub.Aij.sup.σ,T.sub.Akj .sup.σ);1≦k≦I C(T.sub.Aij,T.sub.Akj)=1.0 when k=i; and C(T.sub.Aij,T.sub.Akj)=C(T.sub.Aij,T.sub.Akj)             (13) 
    
     The following equations verify that we now have sufficient initial conditions to compute the correlation coefficients needed. For k=1, 2 and i=1, 2, we have: 
     
         C(T.sub.A1j,m.sub.1J)=C(T.sub.A1j,T.sub.A1j)=1.0 C(T.sub.A1j,m.sub.2j)=[T.sub.2j.sup.σ *C(T.sub.A2j,T.sub.A1j)+{T.sub.A1j.sup.σ -T.sub.A2j.sup.σ *C(T.sub.A2j,T.sub.A1j)}*N(-α.sub.2j)]/m.sub.2j.sup.σ C(T.sub.A2j,m.sub.1j)=C(T.sub.A2j,T.sub.A1j) C(T.sub.A2j,m.sub.2j)=]T.sub.A2j.sup.μ +{T.sub.A1j.sup.σ *C(T.sub.A2j,T.sub.A1j)-T.sub.A2j.sup.σ }*N(-α.sub.2j)]/m.sub.2j.sup.σ                (14) 
    
     The single remaining task necessary to complete the description of the algorithm is to specify how the &#34;best path&#34; is selected at step 414. The assumption used herein, at each activity in the network, is to select the single incoming activity&#39;s cumulative duration which is most correlated with the random start time for the current activity. The best path is then determined by induction. First, the best path back from the initial activity of the network is null. Then, assuming that a single best path has already been selected for all activities prior to j, the correlation of each inbound T Aij  with the maximum can be calculated by (12). The arc index k* where C(T Ak*j , M 1j )=max{C(T A1j ,m 1j ), C(T A2j ,m 1j ), . . . , C(T Aij ,m 1j )} is the index of the arc which is the best path back from the current activity; that is, b j  =Ak* j . 
     Finally, after all inbound activities are processed, the maximum mean and variance are set to the last estimate at step 413, concluding the current iteration of this algorithm for determining the start time of the current activity to be scheduled. The procedure then returns to the main iterative portion at step 208, (FIG. 4). 
     With the distribution for the start time of the activity known, an estimated start time point, %S&#39;, for the current activity at the % confidence level is determined. However, it assumes no shortfalls between the finish times of incoming activities and the start time of the current activity. 
     Once the activity has been scheduled, the start time %S&#39; of the scheduled activity is adjusted to take into account resource shortfalls which occur during a project. A shortfall occurs when the resource is inoperative due to, for example, a person resource going on vacation or a mechanical resource being shut down for maintenance. 
     In order to consider an activity finished (i.e., to determine the finish time of an activity), the total effort, not duration, must be accomplished at the specified % confidence level. The distribution on total effort (which is different for each resource) is specified by the relationship, 
     
         total effort=duration X FTE 
    
     where FTE is a known constant and duration is a random variable with probability distribution given by mean and variance data. The model utilized in the present invention allows FTE to differ from resource to resource but assumes the duration distribution is common to all resources on a given activity. Because FTE is known, the above relation uniquely determines the duration necessary to conserve the % confidence level on total effort. 
     Shortfall can delay an activity in two ways. If it is encountered between the start and finish time of an activity, the activity must be delayed to the point where enough time has elapsed to maintain the specified % confidence level on total effort. For example, if FTE is reduced by one-third by a shortfall, the activity duration must be increased by 50%. The second way a shortfall can cause delay is if it occurs between the finish of one activity and the start of the next. In that case the start of the current activity must be delayed to account for the probability that the finish time of any inbound activity might extend into the shortfall. If there are multiple inbound activities, each activity must be checked for the occurrence of a shortfall between their finish times and the start of the current activity. 
     Furthermore, any time a delay occurs, the delay interval itself must be checked for shortfall and the delay interval must be lengthened if any shortfall is encountered. 
     To take into account the shortfalls which may occur between the finish times of inbound activities and the current activity, at step 209, the delay, d , is calculated. d  is the amount the start time is delayed to account for shortfalls between the finish times of incoming activities and the current activity&#39;s start time. See FIGS. 10-13 for a graphical depiction of the variables used in the delay calculations. 
     The following function computes the additional delay which must be added to a time, m, to account for a shortfall of (1-r) FTE Available occurring at point SF of duration V for resource i ##EQU2## 
     The effect of this delay function is to delay all ongoing activities proportionately as shown in FIG. 13. 
     The % confidence start time of an activity, %S, is delayed by an expected delay d  if there is any shortfall between the finish of any inbound activity, i (%F i ) and the estimated start of the current activity (%S&#39;). It has been determined that to preserve % confidence it is sufficient to approximate the several delays caused by several inbound activities by a single average delay d . The delay is determined as a weighted average across inbound activities. The weight is the probability that the inbound activity will be the longest; it is multiplied by the activity&#39;s respective shortfall delay caused by that activity passing through one or more shortfalls as it extends to %S&#39;. See FIGS. 10 and 11. 
     
         %S=%S&#39;+d d =Σ.sub.i cr.sub.i &gt;d.sub.i (%S&#39;)          (17) 
    
     
         cr.sub.i &gt;=([1-N.sub.i (%S&#39;)]cr.sub.i)/(Σ.sub.j [1-N.sub.j (%S&#39;)]cr.sub.j)                                           (18) 
    
     
         cr.sub.i =cr.sub.i (.sup.F M.sup.μ)=φ.sub.i /Σ.sub.j φ.sub.j                                               (19) 
    
     The term crt, the criticality index, is the probability, for each inbound activity, that it is the longest inbound activity to the current activity; it is indicative of the probability that the inbound activity will extend beyond its determined finish time %Fi (due to the uncertain nature of the activity&#39;s duration). A computationally fast approximation of cri is suggested by viewing cri as an expected value of a one-to-one change of variables. To do this we need an approximation for cr i  (m), which in general is a byproduct of the joint density function on {Ti}. Although it is not readily available, we can model it quite accurately from its interpretation as the conditional criticality factor. We use the conditional frequency of activity i winning when the maximum is m, 
     
         cr.sub.i (m)=φ.sub.i (m,m)/(Σ.sub.j φ.sub.j (m,m)) 
    
     φ i  (T i , F  M)=the joint density function used by cri(m) to reflect the correlation  F   M .sup.μ,v of each inbound activity with the maximum normal distribution of the start time for the activity ( F  M). 
     The computational rule for the joint density function is: 
     
         φ.sub.i =φ(.sup.F M.sup.μ,.sup.F M.sup.μ |T.sub.i.sup.μΣ, .sup.F M.sup.μσ,cor(T.sub.i, .sup.F.sub.M)) φ(z.sub.1,z.sub.2)=1/[2π(1-ρ.sup.2).sup.1/2 ]exp [-(z.sub.1.sup.2 -2ρz.sub.1 z.sub.2 +z.sub.2.sup.2)/ (2 {1-ρ.sup.2 })]                                                       (20) 
    
     
         ρ=cor(T.sub.i, .sup.F M) 
    
     
         z.sub.1 =(.sup.F Mμ-T.sub.i.sup.μ)/T.sub.i.sup.σ 
    
     
         z.sub.2 =(.sup.F M.sup.μ -.sup.F M.sup.μ)/.sup.F M.sup.σ 
    
     Note that z 2  is zero here, so 
     
         φ(z.sub.1, z.sub.2)=1/[2π(1-ρ.sup.2).sup.1/2 ]exp [-(z.sub.1.sup.2 /2{1-π.sup.2 })]                      (21) 
    
     For boundary conditions, the following rules apply: 
     If  F  M.sup.σ =0, there is no uncertainty in any of the incoming arcs (all T i .sup.σ  are zero) and all φ1 are zero except where T i .sup.μ = F  M.sup.μ  in which case φ i  =1. 
     If T i .sup.σ  is close to zero and  F  M.sup.μ-T i .sup.μ  is also close to zero, φ 1  =1. 
     If T i .sup.σ  is close to zero and  F  M.sup.μ-T i .sup.μ  is not, then φ 1  =0. 
     If 1-p 2  is close to zero and z 1  is also close to zero, the exponential term is increasing rapidly and φ i  can be set to an arbitrary large number (e.g., 50). 
     If 1-p 2  is close to zero and z 1  is not, then φ i  is 0. 
     If Σ i  φ i  =0, reset φ(max(t i .sup.μ))= 1. Alternatively, recalculate φ i  using the formula φ i  =1-z 1i  /Σ j  z 1 . 
     The detailed procedure for calculating d  is represented in FIG. 8. At box 501, if the Maximum Cumulative variance ( F  M v ) of the current activity is zero, there is no uncertainty in any of the finish times of the inbound activities, and thus there is no chance that a delay will be encountered between any of their finish times and the start time of the current activity. The procedure in that case returns d =0 at box 502. 
     If there is uncertainty about the start time of the activity ( F  M v  is greater than zero), then at box 503 Cr i  &gt;, the probability that the duration of an activity might extend past its finish time %F i , is calculated for each inbound activity,  i , using the above equations 18, 19, 20 and 21. 
     Next, at box 505, an iteration over each inbound activity, i, is begun to search its resources&#39; shortfall calendars over %F i  and %S&#39; for shortfalls. If there is no uncertainty at decision box 506, then the delay for activity i is set to zero at box 507. 
     If there is uncertainty in the inbound activity&#39;s finish time, the region of the shortfall calendar search is initialized to %F i , %S&#39;, and the delay is initialized to zero at box 508. 
     At box 510, the shortfall calendar for each resource used by activity i over the region of interest is searched. If shortfall is found for any resource, its delay factor is calculated using equation 16. In the case where there is more than one resource used by activity i, d i  is incremented by the maximum of all the resources&#39; delay factors at box 511. Also at box 511, the region to search is redefined to further examine the region bounded by the previous end and the previous end plus d i . 
     The search for shortfall is completed when the region of interest collapses to zero as decided at box 509. 
     When all the inbound activities have been examined for shortfall in the iterative procedure begun at box 503, the amount of delay to add to %S&#39; is calculated using equation 17 at box 504 to determine the start time %S. The procedure then returns to the main iterative loop at box 210. 
     Having accounted for all shortfall delays prior to the activity&#39;s estimated start time %S&#39;, its start time, %S and the new distribution, M.sup.μ, M v , are set at box 210: 
     
         %S=%S&#39;+d 
    
     
         M.sup.μ =.sup.F M.sup.μ d 
    
     
         M.sup.v =.sup.F M.sup.v 
    
     Once the start time %S has been determined, it is necessary to estimate an initial finish time for the current activity: 
     
         .sup.F T.sup.μv =M.sup.μv +t.sup.μv 
    
     where t is a duration of the activity assuming there are no shortfalls encountered, M is the expected start time, and  F  T is the finish time point for the activity assuming no shortfalls after start time %S. 
     Therefore, the initial estimate for the finish time at box 211 is: 
     
         %F&#39;=N.sup.-1 (% |.sup.F T.sup.μ, .sup.F T.sup.v) 
    
     Shortfalls not only delay the start time of an activity by occurring prior to its start time. Any shortfalls that occur following the start of an activity have the effect of delaying the finish time by an exact amount. Since the delay on the finish time is not impacted by uncertainty its calculation is simply the result of applying equation 16 to shortfalls found in the region %S-%F&#39; (see FIGS. 10 and 12). 
     The procedure of step 212 procedure is described in detail with reference to FIG. 9. At box 601 the region to be examined for shortfall is initialized to %S, %F&#39;, and e  is set to zero. The variable e  is the delay which stretches the duration of the activity out to a point where the % total effort will fit within the FTE available. The variance of the activity duration is not changed. As long as the start of the region is less than the end, boxes 604 and 605 are repeated. These two steps are the same as those described for calculating delay for the start in boxes 508 through 510. In this procedure, the end point of the region is the time point M in equation 16. 
     If the activity uses more than one resource, each resources&#39; shortfall calendar must be examined for shortfall in the region of interest and the delay calculated. The maximum of the calculated delays is then used to increment e  at box 605. At this point the region is reset to account for any delay found at step 604. When no delay is found, the start of the region will be equal or greater than the end at decision box 602 and the value of e  is returned at box 603. 
     Having accounted for all shortfalls occurring during the duration of the activity, the new distribution for the finish time is determined at step 213 of the primary iterative portion represented in FIG. 4. The expected duration through the current activity is defined: 
     
         T.sup.μ =.sup.F T.sup.μ +e 
    
     The variance through the activity is not adjusted and remains as: 
     
         T.sup.v =.sup.F T.sup.v 
    
     Thus the scheduled finish time for the activity, preserving the % confidence factor and accounting for concurrent shortfalls is: 
     
         %F&#39;+e 
    
     Once the start and finish time for the activity have been determined preserving the confidence level and accounting for all shortfalls, the activity is added to the ongoing list of each of its resources and marked as scheduled at step 214. Then, at step 215 on FIG. 5, the affected ongoing lists are ordered by ascending finish times. 
     When an activity is scheduled, any successor activities which included a precedence arc from the activity scheduled may then be eligible to be scheduled. When all successor activities have been examined for release to the Schedulable list at step 216, the procedure returns to the top of procedure 200 at step 201 to continue the main iteration. While not all successor activities have been examined, it is necessary to check for each successor that all of its predecessors have been scheduled (step 217). If the activity&#39;s predecessors have all been scheduled, the successor activity is added to the Schedulable List&#39;s holding queue at step 218. 
     The main iterative portion repeats until all activities have been scheduled in such a manner that resources are constrained, the % confidence level is maintained and all shortfalls are accounted for. 
     Once all the activities have been scheduled, the project network is scheduled and available for review and utilization by the user for managing a project and allocating tasks and resources according to the scheduled project. As is obvious to one skilled in the art, the user may view a variety of information in a variety of formats. For example, the user may view a time line of resource usage relative to the activities in the project network or can view a calendar of scheduled activities. 
     It will be recognized by one skilled in the art that the above detailed description of the invention may be embodied in other specific forms without departing from the spirit of the invention. Thus, it is understood that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.