Standard Scheduling Calculation
Scheduling is calculated using the Critical Path Method.
The scheduling process has 3 sub processes or layers.
Layer 1
- In this layer the Critical Path is calculated at an abstract level.
- Activity duration in days and precedence are used to calculate the earliest and latest start and finish day-number for all activities, these dates are conventionally referred to as: es, ef, ls & lf.
- The end of the project is deemed to be at the end of the day-number which is the maximum early finish of all activities
- All activities are deemed to have an implied predecessor of the start of the project
- All activities are deemed to have an implied successor of the end of the project.
- All activities where es=ls and ef=lf are said to be on the critical path and have is_critical = true or 1, all other activities have is_critial = false or 0
The consequence of items d & e are that no activity will have a start date before the project start and no activity will have a finish date after the project finish. These rules are not universally observed in other scheduling programs.
The result of this calculation can be represented in a classic precedence diagram shown in the description of the Critical Path Method. This format is the best way to trace through how day-numbers were calculated. There are Innovator Items which will display such a diagram for an Innovator Project as SVG; it is planned to make these available in the Aras Community Forums.
Layer 2
In this layer es, ef, ls, and lf are interpreted as calendar dates, and are calculated from the results of Layer 1 plus project target start, target finish and scheduling type.
Day-numbers calculated in Layer 1 present us with an interpretation question. If a project starts with an activity 'A' of 5 days duration it will start on day-number 0 and finish on day-number 5. A following activity 'B" with finsh-to-start precedence and 0 lead lag will start on day-number 5. If 'A' starts on Monday which is day-number 0, how do we interpret 'A's finish date and 'B's start date which are both day_number 5? In the current version of Innovator we choose interpret 'A's finish date as Friday which is actually day-number 4 and 'B's start date as the following Monday day_number 5.
This solution now presents us with a follow-up question. What about activities with duration zero, such as milestones? If 'B' is a milestone and we apply the rule above to it, the result would be that B starts on Monday and finishes on the previous Friday, which doesn't make sense. For activites with duration zero the current version of Innovator chooses to interpret both the start and finish as (day_number minus 1), in the case of B, on Friday.
For Forward Scheduling
- project duration is calculated as maximum of ((maximum (ef) of all activities) - ((minimum (es) of all activities)
- project sceduled start is set to project target start
- project scheduled finish is set to maximum of ((maximum (ef) of all activities) and (project target finish))
For Backward Scheduling
- project duration is calculated as maximum of ((maximum (ef) of all activities) - ((minimum (es) of all activities)
- project sceduled finish is set to project target finish
- project scheduled start is set to minimum of ((minimum (es) of all activities) and (project target start))
- For both Forward and Backward scheduling
- activity es is calculated as project schedule start plus activity day-number minus 1 if activity duration = 0
- activity ef is calculated as project scheduled start plus activity day-number minus 1
- activity ls is calculated as project scheduled finish minus project duration plus activity day-number minus 1 if activity duration = 0
- activity ls is calculated as project scheduled finish minus project duration plus activity day-number minus 1
Layer 3
In this layer planned start and finish dates are calculated from the results of Layer 2 plus Activity Target dates and prior planned dates.
The objective in Layer 3 is to:
- Keep all planned dates consistent with the other layers
- Keep the schedule as stable as possible only changing dates when they must be changed
- Accommodate activity target dates wherever possible otherwise adopt the closest available date
- Manage planned dates within float for forward scheduling so that successors are rescheduled if necessary to observe precedence
- Manage planned dates within float for backward scheduling so that predecessors are rescheduled if necessary to observe precedence
- Resolve potential scheduling conflicts, silently, in a consistent fashion
- Default planned dates to early dates for forward scheduling
- Default planned dates to late dates for backward scheduling
For forward scheduling
Planned dates are calculated in a forward pass from the start of the project to the end
- activity planned start, ps, is first set to the es date
- if the activity has predecessors and the maximum predecessor's pf (modified by precedence-type and lead-lag) is greater than this ps then this ps is set to that value
- if this activity has a target start date greater than ps then this ps is set to the activity target start date
- if this activity has no target date and this activity's prior ps is greater than the value calculated in steps 18 to 20. then the ps is set to the prior ps
- if the ps is now greater than ls then ps is set to ls
- pf is set to ps plus duration
For backward scheduling
Dates are calculated in a backward pass from the end of the project to the start
- activity planned finish, pf is first set to the lf date
- if the activity has successors and the minimum successors ps (modified by precedence-type and lead-lag) is less than this pf then this pf is set to that value.
- if the activity has a target finish date greater than pf then this pf is set to the activity target finish date
- if this activity has no target finish date and this activity's prior pf is less than the value calculated in steps 24 to 26 then the pf is set to to the prior pf.
- if the pf is now greater than ef then pf is set to ef
- ps is set to pf minus duration
The result of Layers 2 and 3 can be represented in a precedence diagram showing calendar dates. There are Innovator Items which will display such a diagram for an Innovator Project as SVG as shown below; a solution add-on is available at http://www.aras.com/communityProjects