Skip to content

Releases: jenetics/jenetics

v9.0.0

16 Jan 20:36
v9.0.0
677d526

Choose a tag to compare

Improvements

  • Update Java 25 and optimize code for new Java version.
  • #917: ScopedValue for RandomRegistry class.
  • #940: Remove deprecated API.
  • #955: Make IntStream counting more robust.

v8.3.0

22 Sep 11:47
v8.3.0
ff2f3ae

Choose a tag to compare

Improvements

  • #933: Deprecate RandomAdapter for removal.
  • #935: Compile and test Jenetics with Java 24/25
  • #938: Convert Range classes into records.
  • #943: Remove `org.apache.commons:commons-math3´ test dependency.
  • #946: Create io.jenetics.distassert module, used by statistical GA tests.
  • #948: Improve GaussianMutator implementation.
  • #951: Improve testing for RandomRegistry

Bugs

  • #936: Fix assemblePkg task
  • #941: Fix statistical tests after TestNG upgrade.
  • #952: Fix artifact publishing.
  • #955: Improve stochastic universal selector.

v8.2.0

07 Apr 19:02
v8.2.0
7d95b7a

Choose a tag to compare

Improvements

  • #889: Allow adding annotations to Cfg elements for Grammatical Evolution.
final var cfg2 = Cfg.<String>builder()
    .R("expr", rule -> rule
        .N("num", "annotation 1")
        .N("var", "annotation 2")
        .E(exp -> exp
            .T("(")
            .N("expr").N("op", 4).N("expr")
            .T(")")))
    .R("op", rule -> rule.T("+").T("-").T("*").T("/"))
    .R("var", rule -> rule.T("x").T("y"))
    .R("num", rule -> rule
        .T("0").T("1").T("2").T("3").T("4")
        .T("5").T("6").T("7").T("8").T("9")
    )
    .build();
  • #915: Remove usage of java.security.AccessController.
  • #921: Remove object == this "optimization" in equals methods.
  • #923: Improve parsing performance of CsvSupport.
  • #925: INCUBATION: Implement statistical hypothesis tester. The statistical tests for the engine classes has been stabilized and can be written in the following way.
final var observation = new RunnableObservation(
    Sampling.repeat(200_000, samples ->
        samples.add(DoubleGene.of(0, 20).doubleValue())
    ),
    Partition.of(0, 20, 20)
);
new StableRandomExecutor(seed).execute(observation);

assertThatObservation(observation).isUniform();

Bugs

  • #914: Fix Samplers.linear(double) factory.

v8.1.0

14 Sep 21:21
v8.1.0
973a2f5

Choose a tag to compare

Improvements

  • #822: Improve the build script for generating combined Javadoc.
  • #898: Add support for reading data from CSV files or strings. This simplifies the code for regression problems.
static List<Sample<Double>> parseDoubles(final CharSequence csv) {
	return CsvSupport.parseDoubles(csv).stream()
		.map(Sample::ofDouble)
		.toList();
}
  • #904: Upgrade to Gradle 8.10 and cleanup of build scripts.
  • #907: Add a chapter in the user's manual for optimization strategies: Practical Jenetics.
  • #909: Helper methods for converting primitive arrays.
final Codec<int[], DoubleGene> codec = Codecs
    .ofVector(DoubleRange.of(0, 100), 100)
    .map(Conversions::doubleToIntArray);

Bugs

  • #419: Fix flaky statistical tests.

v8.0.0

22 Mar 19:25
v8.0.0
173b3f5

Choose a tag to compare

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

30 Aug 18:33
v7.2.0
6431890

Choose a tag to compare

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-@__version__@.jar: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

21 Apr 18:14
v7.1.3
275274b

Choose a tag to compare

Improvemments

  • #857: Make library compile with Java 20.

v7.1.2

06 Mar 18:46
v7.1.2
d3ea682

Choose a tag to compare

Improvemments

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

v7.1.1

16 Oct 17:46
v7.1.1
9b1ac80

Choose a tag to compare

Bugs

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

v7.1.0

15 Jun 18:12
v7.1.0
3c1926f

Choose a tag to compare

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).