static ISeq<DoubleGene> seq(final Double minimum, final Double maximum, final int length) { final double min = minimum; final double max = maximum; final Random r = RandomRegistry.getRandom(); return MSeq.<DoubleGene>ofLength(length) .fill(() -> new DoubleGene(nextDouble(r, min, max), minimum, maximum)) .toISeq(); }
public static Population<EnumGene<Double>, Double> newPermutationDoubleGenePopulation( final int ngenes, final int nchromosomes, final int npopulation) { final Random random = new Random(122343); final MSeq<Double> alleles = MSeq.ofLength(ngenes); for (int i = 0; i < ngenes; ++i) { alleles.set(i, random.nextDouble() * 10); } final ISeq<Double> ialleles = alleles.toISeq(); final MSeq<PermutationChromosome<Double>> chromosomes = MSeq.ofLength(nchromosomes); for (int i = 0; i < nchromosomes; ++i) { chromosomes.set(i, PermutationChromosome.of(ialleles)); } final Genotype<EnumGene<Double>> genotype = new Genotype<>(chromosomes.toISeq()); final Population<EnumGene<Double>, Double> population = new Population<>(npopulation); for (int i = 0; i < npopulation; ++i) { population.add(Phenotype.of(genotype.newInstance(), 0, PFF)); } return population; }
/** Create a population of DoubleGenes */ public static Population<DoubleGene, Double> newDoubleGenePopulation( final int ngenes, final int nchromosomes, final int npopulation) { final MSeq<DoubleChromosome> chromosomes = MSeq.ofLength(nchromosomes); for (int i = 0; i < nchromosomes; ++i) { chromosomes.set(i, DoubleChromosome.of(0, 10, ngenes)); } final Genotype<DoubleGene> genotype = new Genotype<>(chromosomes.toISeq()); final Population<DoubleGene, Double> population = new Population<>(npopulation); for (int i = 0; i < npopulation; ++i) { population.add(Phenotype.of(genotype.newInstance(), 0, FF).evaluate()); } return population; }