How do genetic algorithms work exactly? I was looking at the basic genetic algorithm here

http://www.ai-junkie.com/ga/intro/gat1.html

But I have some questions about things I didn't get.

To reiterate:



You have a problem you want a good enough solution to.

You create N random solutions (encoded as bits of 0 and 1)

You evaluate a fitness or score for each for how good a solution it is.

Pick randomly 2 different of them. Based on each score, they have a higher chance of being picked. (i.e. higher score = higher chance of being picked, but the sum of all probabilities add to 100%)

Then for those 2 (call it A and B) picked, there is a cross over step.
There is a chance associated with a crossover. The link uses 70%. So if the crossover happens, then we pick a random point and exchange the bits of both A and B after the point. This creates C.


We created a new solution. Do we remove one of the existing ones? If so, which one?


Then there is a mutation step. This is the part that confuses me most.


Does mutation step occur regardless of if the crossover step happened or not?
What do we mutate? A or B or C?
For whatever we mutate, does mutate mean we iterate over each bit, and for each bit there is a 0.1% chance to flip the bit?


Finally reevaluate the score for all and repeat all of this until you find a good enough solution.



Does anyone know?
Looking at the code the tutorial provides answers your questions. First of all, as it's described/implemented, crossover doesn't create a new string, it just modifies the two selected ones. So,


Yes, mutation always occurs
You mutate both A and B. There is no C
Yes.