For each task in a chromosome Do |
Set its reference count equal to the number of immediate parents of the task, in the task graph corresponding |
to the chromosome. |
For each processor Pi Do |
Set its local timer si to zero. |
Add execution time of processor’s first task to si. |
Set the global timer S to one. |
Repeat |
For each processor Pi Do |
Read the value of timer si of Pi. |
If S = si Then |
Reduce one from the reference count of each child of the task. |
Set EST of each child of the task that are not assigned to Pi, to: |
Max (Current EST of the child, Sum of si and communication cost between the tasks) |
Take next task of Pi from the chromosome. |
Add the sum of S and execution time of the task to si. |
If EST of the task is bigger than S or reference count of task is not zero Then |
add one unit of time to si. |
Add one unit of time to the global timer S. |
Until all the tasks are scheduled. |
makespan = the maximum value of the timers, si, of all processors, Pi, as the fitness of the chromosome. |