1. mutex_initialize();

2. if(mutex)then

3. ga_first_lock();

4. while(stop_criterion)do

5. for i ← 1 to nPop do

6. initialize(pop(i));

7. for j ← 1 to nIndividuals do

8. send_individual(indj);

9. receive_individual(indj);

10. structure(pop(i));

11. repeat

12. for j ← 1 to crossRate*popSize do

13. (ind1,ind2)←selectedParents(pop(i));

14. newInd ← crossover(ind1,ind2);

15. if λ • mutatioRate then

16. newInd ← mutation(newInd);

17. send_individual(newInd);

18. receive_individual(newInd);

19. insert(newInd, pop(i));

20. end for

21. structure (pop(i));

22. until convergence(pop(i));

23. executeMigration(pop(i),pop(i+1));

24. end while

25. end if