Jenetics Versions Save

Jenetics - Genetic Algorithm, Genetic Programming, Grammatical Evolution, Evolutionary Algorithm, and Multi-objective Optimization

v8.0.0

1 month ago

Improvements

  • Java 21 is used for building and using the library.
  • #878: Allow Virtual-Threads evaluating the fitness function. Must be enabled when creating an Engine (see code snippet below), the previous behaviour has been preserverd.
final Engine<DoubleGene, Double> engine = Engine.builder(ff)
	.fitnessExecutor(BatchExecutor.ofVirtualThreads())
	.build();
  • #880: Replace code examples in Javadoc with JEP 413.
  • #886: Improve CharStore sort.
  • #894: New genetic operators: ShiftMutator, ShuffleMutator and UniformOrderBasedCrossover.
  • #895: Improve default RandomGenerator selection. The used RandomGenerator is selected in the following order:
    1. Check if the io.jenetics.util.defaultRandomGenerator start parameter is set. If so, take this generator.
    2. Check if the L64X256MixRandom generator is available. If so, take this generator.
    3. Find the best available random generator according to the RandomGeneratorFactory.stateBits() value.
    4. Use the Random generator if no best generator can be found. This generator is guaranteed to be available on every platform.

v7.2.0

8 months ago

Improvemments

  • #862: Add a method, which allows to create a sliced (chromosome) view onto a given Genotype.
  • #866: Allow specifying the default RandomGenerator used by the library.
java -Dio.jenetics.util.defaultRandomGenerator=L64X1024MixRandom\
     -cp jenetics-@[email protected]:app.jar\
         com.foo.bar.MyJeneticsAppjava 
  • #872: Improve generic type parameters for some argument types in io.jenetics.prog module.
  • #876: Fix compiler warnings with Java 21.

Bugs

  • #865, #867: Fixing typos in documentation.
  • #868: Fix execution script ./jrun.cmd

v7.1.3

1 year ago

Improvemments

  • #857: Make library compile with Java 20.

v7.1.2

1 year ago

Improvemments

  • #853: Improve error message for Codecs::ofSubSet::encode method.

v7.1.1

1 year ago

Bugs

  • #842: BitChromosone::bitCount returns wrong results for chromosome lengths <= 8.

v7.1.0

1 year ago

Improvements

  • #813: Re-implementation of MathExpr class. Replace ad-hoc parsing implementation.
  • #815: Implement Grammatical-Evolution.
  • #820: Additional BitChromosome methods: and, or, xor, not, shiftRight, shiftLeft.
  • #833: Implement Tree::reduce function. Allows to write code as follows:
final Tree<String, ?> formula = TreeNode.parse(
    "add(sub(6, div(230, 10)), mul(5, 6))",
    String::trim
);
final double result = formula.reduce(new Double[0], (op, args) ->
    switch (op) {
        case "add" -> args[0] + args[1];
        case "sub" -> args[0] - args[1];
        case "mul" -> args[0] * args[1];
        case "div" -> args[0] / args[1];
        default -> Double.parseDouble(op);
    }
);

Bugs

  • #831: Error while parsing parentheses trees.
  • #836: Fix BitChromosome(Test).

v7.0.0

2 years ago

Improvements

  • #632: Convert data classes to records.
  • #696: Convert libraries to JPMS modules.
  • #715: Improve BitChromosome.
  • #762: Breaking change Update to Java 17.
  • #767: Incubator - Grammar-based evolution.
  • #773: Incubator - Simplify and unify parsing code for MathExpr class.
  • #785: Using RandomGenerator instead of Random class.
  • #787: Breaking change - Change upper limit of Integer/LongeGenes from inclusively to exclusively.
  • #789: Make AbstractChromosome non-Serializable.
  • #796: Use InstantSource instead of Clock for measuring evolution durations.
  • #798: Performance improve of subset creation method.
  • #801: Introduce Self interface.
  • #816: Add Sudoku example (by alex-cornejo).

Bugs

  • #791: Fix possible overflow in Integer/LongGene mean method.
  • #794: Fix possible underflow in DoubleGene mean method.
  • #803: Bug checking Sample arity in class SampleList.

v6.3.0

2 years ago

Improvements

  • #763: ProxySorter is now able to sort array slices.
  • #768: Implement Ordered class. Currently, it is required that the return value of the fitness function to be Comparable. But sometimes you might want to change the order of a given type or add some order to a type. The Ordered class makes this possible.

v6.2.0

3 years ago

Improvements

  • #754: Make Optimize.best method null friendly.

Bugs

  • #742: Fix compile error with Java 15.
  • #746: Const<Double> equals doesn't conform with Double.compare.
  • #748: Fix broken formulas in Javadoc.
  • #752: StreamPublisher doesn't close underlying Stream on close.

v6.1.0

3 years ago

Improvements

  • #323: Fix leaky abstraction of CompositeCodec.
  • #434: Rewrite build scripts using Kotlin.
  • #695: Simplify MOEA for continious optimization.
  • #704: Add FlatTreeNode.ofTree factory method, for cleaner Tree API.
  • #706: The Constraint is now part of the Problem interface. If defined, it will automatically be part of the created Engine.
default Optional<Constraint<G, C>> constraint() {
    return Optional.empty();
}
  • #708: Additional Chromosome.map(Function) methods. This allows a more efficient mapping of chromosomes.
  • #731: Improve creation of constrained individuals, as defined in the Constraint interface.
  • #739: Add jenetics.incubator module. This module will contain classes which might be part of one of the main module.

Bugs

  • #700: GaussianMutator violates the DoubleGene's upper bound.
  • #707: Fix conversion of BitChromosome <-> BitSet.