342 | | |
| 342 | Random algorithm notes. |
| 343 | |
| 344 | * As Late As Possible (ALAP) with only FS dependency is an easy scheduling algorithm. A task without successors is due on it's milestone date and things back up from there. However, it is sometimes helpful to use ASAP, even for single tasks. For example, if a software development task is poorly understood so its estimate might be wildly wrong, that task should be tackled early in the project so that deviation from estimate is known early and there is more time to adjust for it. Also, it's often desirable to handle bugs before new features so tasks might get ALAP and bugs ASAP within the same project. |
| 345 | |
| 346 | * There are three constraints that influence a task's scheduling: |
| 347 | * The date of the task's milestone |
| 348 | * Dependency on other tasks |
| 349 | * Resource sharing |
| 350 | |
| 351 | * For ALAP with FS and 100% resource application (effort) |
| 352 | * Task A's finish date is the milestone date if it has no successors |
| 353 | * Task A's finish date is Task B's start date if B has an FS dependency on A (A -> B) |
| 354 | * Resolve resource conflict: |
| 355 | * Task A should be before B if A has successors and B does not |
| 356 | * Task A should be before B if A is higher priority |
| 357 | * Task A should be before B if A has more risk |
| 358 | |
| 359 | * With the above rules for putting A before B, does scheduling become a sorting operation that just needs a comparison function which implements those rules? Intuitively, an O(n^2) sort like bubble sort would work but something like a merge sort might not because tasks in the partitions might depend on one another. Perhaps partitioning can be done to eliminate dependencies. |