| Module | MatrixUniformCrossover |
| In: |
lib/charlie/list/matrix.rb
|
Uniform crossover for matrices
# File lib/charlie/list/matrix.rb, line 48
48: def cross(parent1,parent2)
49: tc1 = []; tc2=[]
50: g1 = parent1.genes; g2 = parent2.genes
51: g1.each_with_index{|rg1,ri|
52: tc1 << (r1=[]); tc2 << (r2=[])
53: rg2 = g2[ri];
54: rg1.each_with_index{|e,i|
55: if rand(2).zero?
56: r1 << e; r2 << rg2[i]
57: else
58: r2 << e; r1 << rg2[i]
59: end
60: }
61: }
62: [tc1,tc2].map{|x| from_genes(x) }
63: end