Lawler's algorithm
Lawler's algorithm is an efficient algorithm for solving a variety of constrained scheduling problems, particularly single-machine scheduling. It can handle precedence constraints between jobs, requiring certain jobs to be completed before other jobs can be started. It can schedule jobs on a single processor in a way that minimizes the maximum tardiness, lateness, or any function of them.
Definitions
There are n jobs. Each job is denoted by and has the following characteristics:- Processing-time, denoted by pi;
- Due time, denoted by '.
- Cost function, denoted by '; it is a weakly-increasing function of the time job i completes its execution, denoted by .
- When, the objective function corresponds to minimizing the maximum lateness
- When, the objective corresponds to minimizing the maximum tardiness.
Algorithm
The algorithm builds the schedule back to front. For each scheduling step, it looks only at the tasks that no other tasks depend on, and puts the one with the latest due date at the end of the schedule queue. Then it repeats this process until all jobs are scheduled.The algorithm works by planning the job with the least impact as late as possible. Starting at that is the processing time of job.
set of already scheduled jobs
set of jobs whose successors have been scheduled
time when the next job will be completed
while '''do
select such that
schedule such that it completes at time
add to, delete from and update.
end while'''
Example 1
Assuming there are three jobs: t1, t2, and t3, with the following precedence constraints:- t1-> t2, t1 must finish before t2
- t1-> t3, t1 must finish before t3
- t1: 2nd day
- t2: 5th day
- t3: 8th day
- S =, initially empty set of scheduled jobs
- J =, the set of jobs whose successors have been scheduled or jobs without successors. t2 and t3 have no successors.
- select a job j in J, so its due date is the latests, in this example, it is t3 with a due date 8th.
- move j from J to S's front, now J =, S=.
- update J to add any new job whose successors have been scheduled. There is none this time.
- select a job j in J, so its due date is the latests. It is t2 with due date 5th this time.
- move j from J to S's front, now J =, S=
- update J to add any new job whose successors have been scheduled, now J= since both t2 and t3 have been scheduled.
- select a job j in J=, so its due date is the latests. This example, it is t1.
- move j from J to S's front, now J =, S=
- update J to add any new job whose successors have been scheduled. Nothing to add.
So the final schedule is t1 -> t2-> t3 as S =
Example 2
A more complex example, with simplified steps:The jobs and precedence constraints are shown below: a parent node --> child node in the tree.
j1
/ \
j2 j3
/ \ |
j4 j5 j6
The due dates of jobs are shown underneath of each node of the tree in parentheses.
- j1: 2
- j2: 5
- j3: 4
- j4: 3
- j5: 5
- j6: 6
- The S set would be