Step1: List the project activities in order of precedence by arranging the arrow head numbers in ascending order, and when two or more activities have the same head number, list them so that the arrow tail numbers are also in ascending order. Next prepare a bar-chart for the activities showing their total and free slack and their current schedule which should be as early as possible. If certain activities have schedules fixed by pervious resource allocations or total project duration time constants, they should be drawn on the chart with no slack.
Step2: Starting with the last activity (the one at the bottom of the diagram), schedule it to give the lowest total sum of squares of resources requirements for each time unit. If more than one schedule gives the same total sum of squares, then schedule the activity as late as possible to get as much slack as possible in all preceding activities.
Step 3: Holding the last activity fixed, repeat step 2 on the next to the last activity in the network taking advantage of any slack that have been made available to it by the rescheduling in step2. In general, this slack availability check is made by observing the scheduled start times of all activities having a tail number equal to the head number of the activity in question; these activities will always be found below the one in question. The earliest of these observed scheduled start times is then the latest allowable finish time of the activity in question.
Step4: Continue Step 3 until the first activity in the list has been considered; this completes the first rescheduling cycle.
Step5: Carry out additional rescheduling cycles by repeating Step 2 through 4 until no further reduction in the total sum of squares of resource requirements is possible, noting that only movement of an activity to the right (schedule later) is permissible under this scheme.
Step 6: make final adjustments to the schedule taking into account factors not considered in the basic scheduling procedure.
The above procedure was for ensuring, as far as possible, a constant rate of usage of resources and hence the concept of the least sum of squares was quite appropriate. But when there are constraints or ceilings on the availability of resources, a very different kind of heuristic or algorithm is to be used. Most of the resources allocation algorithms schedule the job in each period (day or week, etc) only up to the limit of resources and then postpone any remaining jobs until resources are sufficient for scheduling them. The resources are allocated on a period by period basis to some sub-set of the available jobs those whose predecessors have been completed.
1. Allocate the resources serially in time i.e. start on the first day and schedule all the jobs that are possible, then do the same for the second day, and so on
2. When a number of jobs compete or the same resources give preference to the jobs that have the least slack.
3. Re-schedule non-critical jobs, if possible, and free resources for scheduling critical or non-slack jobs.
It should be emphasized once again that this heuristic, or any heuristic for that matter may not produce optimal results; but definitely near optimal results can be achieved with the expenditure of less energy and time. Analytical procedures are to some extent available and they can guarantee optimality. Analytical procedures might involve Linear Programming, Integer Programming etc but again, these analytical methods are feasible for only very small projects. For the present, heuristics programs are the only possible procedure for dealing with the problem of large projects and multiple constrained resources.
To sum up, resource allocation is a way of utilizing the available floats of the activities and re-scheduling the activities in such a way as not to exceed the given ceiling on the resources (or to achieve as much constant rate of usage of the resources as possible if that is what is needed) and to do this with limited delay in project completion. Resources allocation/analysis is also a very valuable planning exercise. It can provide alternative schedules by trying out different resource patterns. Various assumed conditions can provide different scenarios for the project manager’s decision making.