Genetic Programming : Difference between Roulette Rank and Tournament Selection
I'm reading a slide about Genetic Programming. In this slide, it said that there are some methods at selection phase such as Roulette, Rank or Tournament without any explanation. I tried Google but nowhere says clearly about these terms. Please tell me what is the difference between them.
Roulette wheel selection (aka Fitness proportionate selection) The fitness is used to associate a probability of selection to each individual. If fi is the fitness of individual i in the population, its probability of being selected is: pi = fi / Σ j(fj) for j = 1 … N (N is the number of individuals in the population) It's called roulette wheel because it can be seen as a roulette wheel in a casino: This can be simulated by the following (naive) algorithm: Calculate the sum of all fitnesses in population (sum S). Generate a random number r in the interval [0; S]. Go through the population and sum fitnesses. When the sum s is greater than r, stop and return the individual where you are. For possible implementations see: Roulette wheel selection algorithm Roulette Selection in Genetic Algorithms Rank Selection is similar to roulette wheel selection except that selection probability is proportional to relative fitness rather than absolute fitness. It doesn't make any difference whether the fittest candidate is ten times fitter than the next fittest or 0.001% fitter. In both cases the selection probabilities would be the same. All that matters is the ranking relative to other individuals. Rank selection is easy to implement when you already know on roulette wheel selection. Instead of using the fitness as probability for getting selected you use the rank. So for a population of N solutions the best solution gets rank N, the second best rank N-1, etc. The worst individual has rank 1. (Ranking Selection in Genetic Algorithm code) Tournament selection Choose few individuals at random from the population (a tournament). The individual with the best fitness (the winner) is selected for crossover. As you can see it's efficient to code. It also works on parallel architectures and allows the selection pressure to be easily adjusted (changing the number of individuals in a tournament). Of course there are many variants of these algorithms. For a comparison you could read: Comparison of Performance between Different Selection Strategies on Simple Genetic Algorithms (Jinghui Zhong , Xiaomin Hu , Min Gu , Jun Zhang - 2005)
Copy-paste of selections with Xlib in X11: XA_TARGETS array of atoms
Selecting who should breed with whom from a list of qualified parents?
programmatically change selected rows in a slickgrid
dgrid selection- select row only when I click on check box
Getting the Root-Element of an EObject which is being listened in a Tree-/Tableviewer
Rangy expands for cyrillic
Couldn't find box selection in Jdeveloper
In SAS, calculate value using conditional logic with different variables
Disable Text Selection in Chromium Embedded?
Retrieving Selection Data from Applications other than xterm
How to activate selected text replacement when typing new text?
GIMP: Subtract overlapping selections
Opencart: Add extra features under the same product
AQGridView Selection and Deselection
make 2 different selection-tools coexist in pyside
Swapping text selections in Sublime Text 2