Module GladiatorialSelection
In: lib/charlie/selection.rb

Co-evolution: Direct competition (gladiatorial) selection. Define a Genotype#fight function to use this

Methods

Public Instance methods

[Source]

     # File lib/charlie/selection.rb, line 172
172:   def next_generation(population)
173:     (population.size/2).times{
174:       ix=[0,0,0,0]
175:       ix=(0..3).map{population.rand_index} while ix.uniq.size < 4
176:       ix[0],ix[1] = ix[1],ix[0] unless population[ix[0]].fight(population[ix[1]])  # 0 and 2 hold winners
177:       ix[2],ix[3] = ix[3],ix[2] unless population[ix[2]].fight(population[ix[3]])
178:       nw = []; 
179:       nw +=  yield(population[ix[0]],population[ix[2]]) while nw.size < 2
180:       population[ix[1]],population[ix[3]] = *nw
181:     }
182:     population
183:   end

[Validate]