View Javadoc
1   package net.bmahe.genetics4j.core.spec.chromosome;
2   
3   /**
4    * Marker interface for chromosome specifications in evolutionary algorithms.
5    * 
6    * <p>ChromosomeSpec defines the contract for specifying the structure, constraints, and properties of chromosomes used
7    * in genetic algorithms. Implementations provide the blueprint for creating chromosome instances with specific
8    * characteristics such as size, value ranges, and data types.
9    * 
10   * <p>Chromosome specifications are used by:
11   * <ul>
12   * <li><strong>Chromosome factories</strong>: To create chromosome instances with correct properties</li>
13   * <li><strong>Genetic operators</strong>: To understand chromosome structure for crossover and mutation</li>
14   * <li><strong>Validation logic</strong>: To ensure chromosome integrity and constraint satisfaction</li>
15   * <li><strong>Algorithm configuration</strong>: To specify the genetic representation for problems</li>
16   * </ul>
17   * 
18   * <p>The framework provides several concrete implementations:
19   * <ul>
20   * <li>{@link BitChromosomeSpec}: Specifications for binary string chromosomes</li>
21   * <li>{@link IntChromosomeSpec}: Specifications for integer array chromosomes</li>
22   * <li>{@link DoubleChromosomeSpec}: Specifications for double-precision floating-point chromosomes</li>
23   * <li>{@link FloatChromosomeSpec}: Specifications for single-precision floating-point chromosomes</li>
24   * </ul>
25   * 
26   * <p>Chromosome specifications typically define:
27   * <ul>
28   * <li><strong>Size/Length</strong>: Number of alleles or genes in the chromosome</li>
29   * <li><strong>Value constraints</strong>: Valid ranges, domains, or sets of allowed values</li>
30   * <li><strong>Data type</strong>: The primitive or object type used for allele representation</li>
31   * <li><strong>Structural properties</strong>: Fixed vs. variable length, constraints between alleles</li>
32   * </ul>
33   * 
34   * <p>Example usage in genetic algorithm configuration:
35   * 
36   * <pre>{@code
37   * // Create a specification for 100-bit binary chromosome
38   * ChromosomeSpec bitSpec = BitChromosomeSpec.of(100);
39   * 
40   * // Create a specification for integer chromosome with range [0, 50]
41   * ChromosomeSpec intSpec = IntChromosomeSpec.of(10, 0, 50);
42   * 
43   * // Use in genotype specification
44   * GenotypeSpec genotypeSpec = GenotypeSpec.of(bitSpec, intSpec);
45   * }</pre>
46   * 
47   * @see net.bmahe.genetics4j.core.chromosomes.Chromosome
48   * @see net.bmahe.genetics4j.core.chromosomes.factory.ChromosomeFactory
49   * @see BitChromosomeSpec
50   * @see IntChromosomeSpec
51   * @see DoubleChromosomeSpec
52   * @see FloatChromosomeSpec
53   */
54  public interface ChromosomeSpec {
55  
56  }