@Override public EnumGene<Integer> newInstance() { return EnumGene.of(_alleles); }
/** * Return a new enum gene with an allele randomly chosen from the given * valid alleles. * * @param <A> the allele type * @param validAlleles the array of valid alleles. * @return a new {@code EnumGene} with an randomly chosen allele from the * sequence of valid alleles * @throws IllegalArgumentException if the give valid alleles array is empty */ @SafeVarargs public static <A> EnumGene<A> of(final A... validAlleles) { return EnumGene.of(ISeq.of(validAlleles)); }
@Test public void isValid() { final ISeq<Integer> alleles = IntStream.range(0, 100) .boxed() .collect(ISeq.toISeq()); final ISeq<EnumGene<Integer>> genes = IntStream.of(comb.subset(100, 10)) .mapToObj(i -> EnumGene.of(i, alleles)) .collect(ISeq.toISeq()); final PermutationChromosome<Integer> ch = new PermutationChromosome<>(genes); Assert.assertTrue(ch.isValid()); Assert.assertEquals(ch.length(), 10); }
@Test public void isNotValid() { final ISeq<Integer> alleles = IntStream.range(0, 100) .boxed() .collect(ISeq.toISeq()); final ISeq<EnumGene<Integer>> genes = IntStream.of(comb.subset(100, 10)) .mapToObj(i -> EnumGene.of(i%3, alleles)) .collect(ISeq.toISeq()); final PermutationChromosome<Integer> ch = new PermutationChromosome<>(genes); System.out.println(ch); Assert.assertFalse(ch.isValid()); Assert.assertEquals(ch.length(), 10); }
public static EnumGene<Float> nextEnumGeneFloat() { return EnumGene.of(ISeq.of(random()::nextFloat, 5)); }
public static EnumGene<Boolean> nextEnumGeneBoolean() { return EnumGene.of(ISeq.of(random()::nextBoolean, 5)); }
public static EnumGene<Long> nextEnumGeneLong() { return EnumGene.of(ISeq.of(random()::nextLong, 5)); }
public static EnumGene<Double> nextEnumGeneDouble() { return EnumGene.of(ISeq.of(random()::nextDouble, 5)); }
public static EnumGene<Long> nextEnumGeneLong() { return EnumGene.of(ISeq.of(random()::nextLong, 5)); }
public static EnumGene<Integer> nextEnumGeneInteger() { return EnumGene.of(ISeq.<Integer>of(random()::nextInt, 5)); }
public static EnumGene<Boolean> nextEnumGeneBoolean() { return EnumGene.of(ISeq.of(random()::nextBoolean, 5)); }
public static EnumGene<Integer> nextEnumGeneInteger() { return EnumGene.of(ISeq.<Integer>of(random()::nextInt, 5)); }
public static EnumGene<Double> nextEnumGeneDouble() { return EnumGene.of(ISeq.of(random()::nextDouble, 5)); }
@Test(expectedExceptions = IllegalArgumentException.class) public void valueOfZeroLength() { final int length = 0; final ISeq<Integer> alleles = MSeq.<Integer>ofLength(length).fill(Int()).toISeq(); EnumGene.of(alleles); }
public static EnumGene<Byte> nextEnumGeneByte() { return EnumGene.of(ISeq.of(() -> nextByte(random()), 5)); }
public static EnumGene<Character> nextEnumGeneCharacter() { return EnumGene.of(ISeq.of(() -> nextChar(random()), 5)); }
public static EnumGene<Character> nextEnumGeneCharacter() { return EnumGene.of(ISeq.of(() -> nextChar(random()), 5)); }
public static EnumGene<Short> nextEnumGeneShort() { return EnumGene.of(ISeq.of(() -> nextShort(random()), 5)); }
public static EnumGene<Short> nextEnumGeneShort() { return EnumGene.of(ISeq.of(() -> nextShort(random()), 5)); }
public static EnumGene<String> nextEnumGeneString() { return EnumGene.of(ISeq.of(() -> nextASCIIString(random()), 5)); }