From Theory to Practice : Efficient Self-tuning of Parallel Genetic Algorithms