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 |