scheduling <type>

scheduling <type>
Description

Specifies the scheduling policy for the task. A task can be scheduled from start to end (As Soon As Possible, asap) or from end to start (As Late As Possible, alap).

A task can be scheduled from start to end (ASAP mode) when it has a hard (start) or soft (depends) criteria for the start time. A task can be scheduled from end to start (ALAP mode) when it has a hard (end) or soft (precedes) criteria for the end time.

Some task attributes set the scheduling policy implicitly. This attribute can be used to explicitly set the scheduling policy of the task to a certain direction. To avoid it being overwritten again by an implicit attribute this attribute should always be the last attribute of the task.

A random mixture of ASAP and ALAP tasks can have unexpected side effects on the scheduling of the project. It increases significantly the scheduling complexity and results in much longer scheduling times. Especially in projects with many hundreds of tasks the scheduling time of a project with a mixture of ASAP and ALAP times can be 2 to 10 times longer. When the projects contains chains of ALAP and ASAP tasks the tasks further down the dependency chain will be served much later than other non-chained task even when they have a much higher priority. This can result in situations where high priority tasks do not get their resources even though the parallel competing tasks have a much lower priority.

As a general rule, try to avoid ALAP tasks whenever possible. Have a close eye on tasks that have been switched implicitly to ALAP mode because the end attribute comes after the start attribute.

AttributesNameTypeDescription
typeID

Possible values are alap or asap.

Contexttask,
InheritableYesScenario Spec.No
See alsodepends, end, precedes, start, period

project prj "Scheduling Example" "1.0" 2005-07-23 - 2005-09-01

task items "Project breakdown" {
  task t1 "Task 1" {
    start 2005-07-25
    end 2005-08-01
    # Implicite ALAP task
  }
  task t2 "Task 2" {
    end 2005-08-01
    start 2005-07-25
    # Implicite ASAP task
  }
  task t3 "Task 3" {
    start 2005-07-25
    end 2005-08-01
    scheduling asap
    # Explicite ASAP task
  }
  task t4 "Task 4" {
    end 2005-08-01
    start 2005-07-25
    scheduling alap
    # Explicite ALAP task
  }
}