I've implemented a genetic algorithm which uses a reproduction method based on the one described in Regularized Evolution for Image Classifier Architecture Search.
Minimal pseudo-code describing the reproduction method:
num_steps = 1e1000
step = 0
1. while step < total_steps:
1a. winner, loser = tournament_selection(population)
1b. offspring = mutate(winner)
1c. replace loser with offspring
1d. step++
The authors in 1 mention that the loop above is parallelized by distributing the loop above over multiple workers. They also mention that the full implementation is given in the released source, but the linked code does not contain the relevant parallelization part.
I fail to understand how this specific reproduction method can be parallelized: the parent selection step (1a) is dependent on the current state of the population.
Some notes:
- This method works better than the vanilla reproduction method which applies selection+mutation to the entire population in its current state, and is easily parallelizable.
- I have written to the main author regarding this point but did not get a response.