public void Elite() { IChromosome<int>[] a = new IChromosome<int>[] { new DigitalChromosome().GenerateFromArray(new int[] { 9, 9, 9 }), new DigitalChromosome().GenerateFromArray(new int[] { 7, 7, 7 }), new DigitalChromosome().GenerateFromArray(new int[] { 3, 3, 3 }), new DigitalChromosome().GenerateFromArray(new int[] { 2, 2, 2 }), new DigitalChromosome().GenerateFromArray(new int[] { 7, 7, 7 }), new DigitalChromosome().GenerateFromArray(new int[] { 7, 7, 7 }), new DigitalChromosome().GenerateFromArray(new int[] { 7, 7, 7 }) }; EliteSelection<int> selection = new EliteSelection<int>(2); IChromosome<int>[] res = selection.Select(a, x => x.ToArray().Sum(), 6); CollectionAssert.AreEqual(new IChromosome<int>[] { new DigitalChromosome().GenerateFromArray(new int[] { 9, 9, 9 }), new DigitalChromosome().GenerateFromArray(new int[] { 7, 7, 7 }) }, res.Take(2).ToArray()); }
public void TestElite() { var s = new EliteSelection(); var chromosomes = CreateEmptyChromosomes(10); var selected = s.Select(chromosomes, 5); Assert.AreEqual(5, selected.Count); for (var i = 0; i < selected.Count; i++) { Assert.AreEqual(9 - i, ((EmptyChromosome)selected[i]).Index); } }