Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

applying crossover and mutation to a graph (genetic algorithm)

I'm playing arround with a Genetic Algorithm in which I want to evolve graphs. Do you know a way to apply crossover and mutation when the chromosomes are graphs?

Or am I missing a coding for the graphs that let me apply "regular" crossover and mutation over bit strings?

thanks a lot! Any help, even if it is not directly related to my problem, is appreciated!

Manuel

like image 850
Manuel Araoz Avatar asked Jul 01 '10 18:07

Manuel Araoz


People also ask

How crossover and mutation is related to genetic algorithm?

The crossover of two parent strings produces offspring (new solutions) by swapping parts or genes of the chromosomes. Crossover has a higher probability, typically 0.8-0.95. On the other hand, mutation is carried out by flipping some digits of a string, which generates new solutions.

What is the difference between the crossover and mutation operation in genetic algorithm?

According to these researches, the crossover is considered the main operator of genetic algorithms, while the mutation is a secondary operation. In this way, GA1 and GA2 have a crossover probability (p c) of 90% and a mutation probability (p m) of 10%. In addition, GA3 and GA4 have a p c = 75% and p m = 25%.

Which data mining technique uses the concept of crossover and mutation?

A standard genetic algorithm utilizes three genetic operators: reproduction (selection), crossover and mutation.

How is mutation used in genetic algorithm?

A common method of implementing the mutation operator involves generating a random variable for each bit in a sequence. This random variable tells whether or not a particular bit will be flipped. This mutation procedure, based on the biological point mutation, is called single point mutation.


1 Answers

I like Sandor's suggestion of using Ken Stanley's NEAT algorithm.

NEAT was designed to evolve neural networks with arbitrary topologies, but those are just basically directed graphs. There were many ways to evolve neural networks before NEAT, but one of NEAT's most important contributions was that it provided a way to perform meaningful crossover between two networks that have different toplogies.

To accomplish this, NEAT uses historical markings attached to each gene to "line up" the genes of two genomes during crossover (a process biologists call synapsis). For example:

crossover with different topologies in NEAT
(source: natekohl.net)

(In this example, each gene is a box and represents a connection between two nodes. The number at the top of each gene is the historical marking for that gene.)

In summary: Lining up genes based on historical markings is a principled way to perform crossover between two networks without expensive topological analysis.

like image 186
Nate Kohl Avatar answered Oct 21 '22 19:10

Nate Kohl