@Test public void maximize() { using(new Random(7345), r -> { final Function<Genotype<IntegerGene>, Integer> ff = g -> g.getChromosome().getGene().getAllele(); final Factory<Phenotype<IntegerGene, Integer>> ptf = () -> Phenotype.of(Genotype.of(IntegerChromosome.of(0, 100)), 1, ff); final ISeq<Phenotype<IntegerGene, Integer>> population = IntStream.range(0, 1000) .mapToObj(i -> ptf.newInstance()) .collect(ISeq.toISeq()); final RouletteWheelSelector<IntegerGene, Integer> selector = new RouletteWheelSelector<>(); final double[] p = selector.probabilities(population, 100, Optimize.MAXIMUM); Assert.assertTrue(RouletteWheelSelector.sum2one(p), Arrays.toString(p) + " != 1"); }); }
@Test public void minimize() { using(new Random(7345), r -> { final Function<Genotype<IntegerGene>, Integer> ff = g -> g.getChromosome().getGene().getAllele(); final Factory<Phenotype<IntegerGene, Integer>> ptf = () -> Phenotype.of(Genotype.of(IntegerChromosome.of(0, 100)), 1, ff); final ISeq<Phenotype<IntegerGene, Integer>> population = IntStream.range(0, 1000) .mapToObj(i -> ptf.newInstance()) .collect(ISeq.toISeq()); final RouletteWheelSelector<IntegerGene, Integer> selector = new RouletteWheelSelector<>(); final double[] p = selector.probabilities(population, 100, Optimize.MINIMUM); Assert.assertTrue(RouletteWheelSelector.sum2one(p), Arrays.toString(p) + " != 1"); }); }