1 package net.bmahe.genetics4j.neat.chromosomes.factory;
2
3 import java.util.List;
4 import java.util.Objects;
5
6 import org.apache.commons.lang3.Validate;
7
8 import net.bmahe.genetics4j.core.chromosomes.factory.ChromosomeFactory;
9 import net.bmahe.genetics4j.core.spec.chromosome.ChromosomeSpec;
10 import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
11 import net.bmahe.genetics4j.neat.spec.NeatChromosomeSpec;
12
13 public class NeatEmptyChromosomeFactory implements ChromosomeFactory<NeatChromosome> {
14
15 @Override
16 public boolean canHandle(final ChromosomeSpec chromosomeSpec) {
17 Objects.requireNonNull(chromosomeSpec);
18
19 return chromosomeSpec instanceof NeatChromosomeSpec;
20 }
21
22 @Override
23 public NeatChromosome generate(ChromosomeSpec chromosomeSpec) {
24 Objects.requireNonNull(chromosomeSpec);
25 Validate.isInstanceOf(NeatChromosomeSpec.class, chromosomeSpec);
26
27 final NeatChromosomeSpec neatChromosomeSpec = (NeatChromosomeSpec) chromosomeSpec;
28 final var nodeLayout = neatChromosomeSpec.nodeLayout();
29 float minWeightValue = neatChromosomeSpec.minWeightValue();
30 float maxWeightValue = neatChromosomeSpec.maxWeightValue();
31
32 return new NeatChromosome(nodeLayout, minWeightValue, maxWeightValue, List.of());
33 }
34 }