c0dehunter
c0dehunter

Reputation: 6150

Genetic Algorithm - producing a new generation

I am struggling to completely understand how to get a new generation in GA. AFAIK, these are the steps (let's consider elitist approach):

I am not sure this is OK and also as mentioned - what do you do with crossover probability CP? I mean, you need to have the same population size between generations therefore you need to cross all specimens from the worse 70% of population - rendering CP useless.

Upvotes: 1

Views: 599

Answers (2)

Audrius Meškauskas
Audrius Meškauskas

Reputation: 21718

Each individual could contain two copies of genome, and gametes contain a single copy. Gametes are produced from such dual genome by taking the required genes from each of these two copies at random. When gametes join, a new individual with two copies is produced. At least, this is how it works in nature where crossover always occurs (there is no such thing as CP).

This however requires to solve how two genomes are reflected to the single phenotype that participates in selection. Depending on the task you try to solve with genetic algorithm this may vary from trivial to very problematic.

I also recommend to use JGap package that provides many algorithms, both nature and human invented.

Upvotes: 1

OliasailO
OliasailO

Reputation: 512

The probabilities for crossover act as follows:

if rand() < crossProb:
  child1, child2 = crossover(parent1, parent2)
else:
  child1, child2 = parent1, parent2

Assuming rand() gives a float between [0, 1) and your crossover function is designed to return two values. Mutation works essentially the same but with a single parent-to-child relation.

The initial 20% in your selection process is simply guaranteed to have no mutation/crossover.

Upvotes: 1

Related Questions