Change Log Report

Total number of changed sets: 1

Changes from an unknown range

Total commits: 136
Total number of files changed: 140

Timestamp Author Details
2026-07-19 15:10:53 Bruno Mahé <bruno@bmahe.net> Apply spotless format
2026-07-19 15:08:25 Bruno Mahé <bruno@bmahe.net> Allow recurrent connections from output nodes

Add an opt-in AddConnection policy flag for evolving output-to-hidden and output-to-output links while preserving feed-forward defaults. Update recurrent samples, documentation, and coverage.\n\nTests: mvn -pl neat -am test\nTests: mvn -pl samples -am clean compile -DskipTests
2026-07-19 03:21:35 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2026-07-19 03:21:32 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r6.0
2026-07-17 21:45:03 Bruno Mahé <bruno@bmahe.net> Apply Spotless to ensure code is formatted appropriately
2026-07-17 21:43:53 Bruno Mahé <bruno@bmahe.net> Use openrewrite to s/Validate.notNull/Objects.requireNonNull/g

Command:

```bash
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run --define rewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-static-analysis:RELEASE --define rewrite.activeRecipes=org.openrewrite.staticanalysis.ReplaceApacheCommonsLang3ValidateNotNullWithObjectsRequireNonNull --define rewrite.exportDatatables=true
```
2026-07-17 21:41:32 Bruno Mahé <bruno@bmahe.net> Apply openrewrite common sast rules

Command:

```bash
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run --define rewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-static-analysis:RELEASE --define rewrite.activeRecipes=org.openrewrite.staticanalysis.CommonStaticAnalysis
```
2026-07-17 19:12:52 Bruno Mahé <bruno@bmahe.net> Run openrewrite recipe for Java 25

Command:

```bash
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run --define rewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:RELEASE --define rewrite.activeRecipes=org.openrewrite.java.migrate.UpgradeToJava25 --define rewrite.exportDatatables=true
```
2026-07-16 22:42:41 Bruno Mahé <bruno@bmahe.net> Document Java 25 compatibility

Update CI and contributor guidance for the Java 25 baseline, document the 5.x/6.x compatibility split, and recommend the latest stable 5.3 release in examples.\n\nTests: mvn --batch-mode spotless:check\nTests: mvn --batch-mode clean verify -DskipPITests=true
2026-07-16 22:08:33 Bruno Mahé <bruno@bmahe.net> Start 6.0 development line

Bump the Maven reactor to 6.0-SNAPSHOT after adopting Java 25 as the minimum supported runtime.

Tests: mvn --batch-mode validate
2026-07-16 00:53:07 Bruno Mahé <bruno@bmahe.net> Support sparse NEAT node IDs

Add extensible node layouts and population-scoped hidden-node allocation so sparse external identities remain stable across factories and structural mutations. Update NEAT consumers and samples to preserve declared input and output order.

Tests: mvn clean verify -DskipPITests=true

Refs #25
2026-05-08 23:42:15 Bruno Mahé <bruno@bmahe.net> Normalize empty XML tags
2026-04-30 05:24:06 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2026-04-30 05:24:02 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r5.3
2026-04-29 02:50:34 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2026-04-29 02:50:30 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r5.2
2026-04-29 02:41:42 Bruno Mahé <bruno@bmahe.net> Apply spotless format
2026-04-26 18:55:24 Bruno Mahé <bruno@bmahe.net> Fix multi fitness plotting for new pandas

Remove the deprecated pandas use_inf_as_na option from the sample plotting script and normalize the fitness column explicitly before aggregation.

This keeps min/max/quantile plotting working on recent pandas releases by coercing non-numeric values and replacing infinite values with NaN.

Tests: python3 samples/scripts/plot_multi_fitness.py --help
2025-11-24 02:03:26 Bruno Mahé <bruno@bmahe.net> Apply spotless format
2025-11-24 01:52:56 Bruno Mahé <bruno@bmahe.net> Add example about NEAT streaming parity article
2025-11-15 14:12:12 Bruno Mahé <bruno@bmahe.net> Update formatting rules
2025-11-15 12:09:23 Bruno Mahé <bruno@bmahe.net> Add a new maven plugin to ensure consistent formatting
2025-11-15 11:33:02 Bruno Mahé <bruno@bmahe.net> Add recurrent NEAT parity/control demos

Add runnable streaming parity and thrust controller examples under the samples module so users can exercise recurrent NEAT configs.
Includes documentation for the website
2025-10-01 07:29:27 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2025-10-01 07:29:23 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r5.1
2025-09-29 08:53:46 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2025-09-29 08:53:39 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r5.0
2025-09-28 02:00:54 Bruno Mahé <bruno@bmahe.net> Replace tab with space as commandlineArgs gets confused by tab
2025-09-27 18:54:59 Bruno Mahé <bruno@bmahe.net> Move DoubleTournament to GP module.

It is dedicated to genetic programming and there is a more generic
alternative with the Selective Refinement Tournament operator
2025-09-27 00:26:50 Bruno Mahé <bruno@bmahe.net> Mass format the code
2025-09-27 00:24:36 Bruno Mahé <bruno@bmahe.net> Add a new symbolic regression example based on SRT and update the article about bloat issues
2025-09-21 15:49:20 Bruno Mahé <bruno@bmahe.net> Add utility method for evaluating fitness of single chromosomes

- Add static utility method to simplify fitness evaluation for single chromosomes
- Include comprehensive documentation with usage examples and edge cases
- Add complete test suite covering valid cases, error conditions, and edge cases
- Update TSVExample to demonstrate usage of the new utility method
- Improve code formatting and documentation consistency in Fitness interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-21 13:09:28 Bruno Mahé <bruno@bmahe.net> Clean up a bit TSVExample
2025-09-18 00:44:10 Bruno Mahé <bruno@bmahe.net> Replace deprecated Validate::notNull with Objects::requireNonNull
2025-09-17 06:19:19 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2025-09-17 06:19:13 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r4.2
2025-09-16 23:09:48 Bruno Mahé <bruno@bmahe.net> Bumped major version as the previous commit break interfaces and compatibility

Command run:
```bash
mvn --batch-mode release:update-versions -DdevelopmentVersion=5.0-SNAPSHOT
```
2025-09-16 22:25:27 Bruno Mahé <bruno@bmahe.net> Optimize SymbolicRegressionWithDoubleTournament and add more parsimony pressure

This results in increasing the odds of success for that example as it
results in smaller individuals
2025-09-13 23:29:20 Bruno Mahé <bruno@bmahe.net> Address build issues after upgrade.

The root cause is the update of Apache Maven Site on two fronts:
* It get stuck with the first module. This means that ${basedir} is
stuck to the value of the first module it is executed in and provides
the wrong values. This is the same for every other module specific
variables such as ${maven.multiModuleProjectDirectory}
* There are bugs in the locales handling. And while this is optional, it
won't work without it
2025-09-07 15:48:01 Bruno Mahé <bruno@bmahe.net> Update dependencies
2024-06-24 02:36:02 Bruno Mahé <bruno@bmahe.net> Small clean up and quality of life changes
2024-02-12 11:01:32 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2024-02-12 11:01:30 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r4.1
2023-10-16 01:30:16 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-10-16 01:30:13 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r4.0
2023-10-14 15:01:56 Bruno Mahé <bruno@bmahe.net> Update site for java 21
Fix conflict in generated graphviz diagrams from the docs
2023-10-11 21:12:21 Bruno Mahé <bruno@bmahe.net> Update version to 4.0-SNAPSHOT in preparation for the java 21 updates
2023-10-11 00:53:00 Bruno Mahé <bruno@bmahe.net> Add new sample about evolutionary painting
2023-07-25 03:58:30 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-07-25 03:58:28 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r3.4
2023-07-16 23:00:21 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-07-16 23:00:18 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r3.3
2023-07-16 20:03:15 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-07-16 20:03:13 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r3.2
2023-07-16 19:41:49 Bruno Mahé <bruno@bmahe.net> Add SITE_EXTRA_HEADER to the samples module
2023-07-15 21:50:04 Bruno Mahé <bruno@bmahe.net> Extend auto-loading capabilities to all handlers and migrate MOO handlers auto-loading
2023-06-15 10:19:18 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-06-15 10:19:16 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r3.1
2023-04-30 19:06:00 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2023-04-30 19:05:56 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r3.0
2023-04-28 00:40:29 Bruno Mahé <bruno@bmahe.net> Upgrade major version to 3.0-SNAPSHOT
2023-04-27 22:08:03 Bruno Mahé <bruno@bmahe.net> Fix link in the doc
2023-04-27 01:20:15 Bruno Mahé <bruno@bmahe.net> Add new doc to implement XOR with NEAT
2023-04-23 20:53:28 Bruno Mahé <bruno@bmahe.net> Improve test coverage for the NEAT module
2023-03-25 19:33:25 Bruno Mahé <bruno@bmahe.net> Update the website to https://genetics4j.org
2022-11-29 01:23:25 Bruno Mahé <bruno@bmahe.net> Fix typo in Optimization s/MAXIMZE/MAXIMIZE/g
2022-11-29 01:18:31 Bruno Mahé <bruno@bmahe.net> Fix bug where species were trimming their best performers rather than their lowest performers
2022-11-23 22:12:15 Bruno Mahé <bruno@bmahe.net> Refactor and export a new method EASystem::createOffsprings to generate offsprings from an existing population
2022-10-16 18:32:54 Bruno Mahé <bruno@bmahe.net> Add basic NEAT implementation
2022-05-23 21:12:41 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2022-05-23 21:12:38 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r2.0
2022-04-17 14:59:34 Bruno Mahé <bruno@bmahe.net> Make the Kernel execution context more accessible.

This means extracting more information about supported workgroup sizes by the devices and
pass the KernelExecutionContext to the FitnessExtractor.
It also allows the LocalMemoryAllocators to tailor buffer sizes to the
chosen workgroup sizes.
2022-03-26 17:51:19 Bruno Mahé <bruno@bmahe.net> Add MOO with seed to the mixture model doc
2022-03-23 22:35:37 Bruno Mahé <bruno@bmahe.net> Fix some log statements
2022-03-21 01:34:27 Bruno Mahé <bruno@bmahe.net> Add a GPU module for OpenCL based evolution and a sample demonstrating its use for mixture models
2021-12-25 20:28:32 Bruno Mahé <bruno@bmahe.net> Rename EAConfigurationSync to EAConfiguration

This sets the synchronous configuration as the default one as it's the
easiest one to get started with.
2021-12-25 19:50:13 Bruno Mahé <bruno@bmahe.net> Provide a way for users to compute the fitness in their own asynchronous way
2021-09-21 22:27:26 Bruno Mahé <bruno@bmahe.net> Remove zealous guard. Such case can happen.
2021-09-21 03:47:43 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2021-09-21 03:47:41 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.8
2021-09-21 00:37:51 Bruno Mahé <bruno@bmahe.net> Set major version to 2.0-SNAPSHOT in preparation to the java 17 migration
2021-09-21 00:26:46 Bruno Mahé <bruno@bmahe.net> Update to java 17 and junit 5

Also disable pitest temporarily until it supports java 17
2021-09-19 19:54:51 Bruno Mahé <bruno@bmahe.net> Force the plotting scripts from sample to use python3

The CI image does not have any python alias and thus require a more
specific version
2021-09-19 16:29:56 Bruno Mahé <bruno@bmahe.net> Add a new doc about Clustering and clean up the associated code
2021-09-09 23:08:04 Bruno Mahé <bruno@bmahe.net> Add a new example which clusters data using real valued chromosomes
2021-09-04 15:14:49 Bruno Mahé <bruno@bmahe.net> Add a support for halting evolution when the fitness does not improve over a specified number of generations
2021-08-14 05:32:19 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2021-08-14 05:32:16 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.7
2020-11-12 06:31:13 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-11-12 06:31:10 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.6
2020-06-27 16:55:17 Bruno Mahé <bruno@bmahe.net> Tweak doc
2020-06-21 02:40:12 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-06-21 02:40:10 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.5
2020-06-20 14:35:06 Bruno Mahé <bruno@bmahe.net> Non-MOO examples of symbolic regression should convert their fitness to a vector[fitness, parsimony]

This makes visualization of the front over generation more obvious
2020-06-19 02:11:51 Bruno Mahé <bruno@bmahe.net> Add Tarpeian Method to fight bloat and documented the Symbolic Regression examples in the samples website
2020-06-13 14:57:05 Bruno Mahé <bruno@bmahe.net> Add a new Symbolic Regression example based on enforced max depth

Also ensure the very same equation is being regressed on in each of the symbolic regression examples
2020-06-13 01:09:21 Bruno Mahé <bruno@bmahe.net> Add an example of symbolic regression using proportional tournaments
2020-06-13 01:09:07 Bruno Mahé <bruno@bmahe.net> Adjust csv logger
2020-06-12 22:44:31 Bruno Mahé <bruno@bmahe.net> Add a new example for Symbolic Regression based on Double Tournaments
2020-06-10 22:24:56 Bruno Mahé <bruno@bmahe.net> Add support for Double and proportional tournaments
2020-06-01 23:29:20 Bruno Mahé <bruno@bmahe.net> Replace the comparator in the examples

Note that this comparator does not take in account commutativity or rotations.
2020-05-31 18:07:44 Bruno Mahé <bruno@bmahe.net> Add support for SPEA2
2020-05-19 00:14:27 Bruno Mahé <bruno@bmahe.net> Add a new operator for GP implementing Node Replacement
2020-05-17 15:58:11 Bruno Mahé <bruno@bmahe.net> Add some doc about fitness sharing
2020-05-13 08:22:27 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-05-13 08:22:25 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.4
2020-05-12 01:32:54 Bruno Mahé <bruno@bmahe.net> Add Fitness Sharing on top of a new concept for Post Evaluation processing.

This fix #21
2020-05-11 21:25:39 Bruno Mahé <bruno@bmahe.net> Add a new EvolutionListener which dumps results in a CSV

One of the benefits is it abstracts the user from worrying how to structure the columns
2020-05-09 19:30:04 Bruno Mahé <bruno@bmahe.net> s/Evolution Strategy/Replacement Strategy/g

Replacement Strategy is more clear and appropriate. Based on how _evolution strategy_ is used
in different books, it might be interpreted slightly differently depending on the context,
which could lead to confusion.
2020-05-05 00:10:24 Bruno Mahé <bruno@bmahe.net> Introduce the concept of Evolution Strategy

An Evolution Strategy defines how the next generation is created based on the offsprings and the current generation.

Fix #19
2020-05-03 17:36:20 Bruno Mahé <bruno@bmahe.net> Simplify GPEAExecutionContexts as to require less parameters

Add a new method to GPEAExecutionContexts.forGP which require neither a ProgramHelper nor a ProgramGenerator. It uses by default the well known ramped half and half population generation algorithm.

Fix #17
2020-05-01 07:11:18 Bruno Mahé <bruno@bmahe.net> Docs and usability tweaks
2020-05-01 02:08:07 Bruno Mahé <bruno@bmahe.net> Rename classes as their names weren't appropriate.

Renamed:
- GenotypeSpec -> EAConfiguration
- GeneticSystem -> EASystem
- GeneticSystemDescriptor -> EAExecutionContext

Evolutionary Algorithm is a more appropriate and generic term given the scope of this project.

Fix #16
2020-04-23 22:23:11 Bruno Mahé <bruno@bmahe.net> Add a new module for Multi-Objective Optimization.

This new module implements NSGA2
2020-04-15 00:47:33 Bruno Mahé <bruno@bmahe.net> Add Ramped Half and Half GP Program generation and abstract fitness function.
2020-04-12 17:00:58 Bruno Mahé <bruno@bmahe.net> Add MultiProgramGenerator as a way to combine different program generation strategies
2020-04-10 00:49:33 Bruno Mahé <bruno@bmahe.net> Extract Symbolic Regression sample to the sample module
2020-04-02 01:39:08 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-04-02 01:39:05 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.3
2020-03-27 07:30:23 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-03-27 07:30:19 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.2
2020-03-27 05:30:45 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-03-27 05:30:43 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.1
2020-01-04 23:12:21 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare for next development iteration
2020-01-04 23:12:19 Gitlab CI <ci@bmahe.net> [maven-release-plugin][ci skip] prepare release r1.0
2019-10-23 01:14:34 Bruno Mahé <bruno@bmahe.net> Implement #1 - the Edge Recombination Crossover combination operator and enable the Swap mutation operator to not use a fix number of swaps
2019-10-21 23:49:47 Bruno Mahé <bruno@bmahe.net> Add a partial mutation operator
2019-10-21 22:41:26 Bruno Mahé <bruno@bmahe.net> Implement combinations of chromosome combinators
2019-10-19 02:37:18 Bruno Mahé <bruno@bmahe.net> Add ability to specify meta-selections which combine multiple selection policies
2019-10-18 19:50:32 Bruno Mahé <bruno@bmahe.net> Add ability to specify meta-mutations which points to other mutation policies

This has required some extensive refactoring to accomodate this capability
2019-08-23 21:41:15 Bruno Mahé <bruno@bmahe.net> Fix compilation error
2019-08-23 21:05:42 Bruno Mahé <bruno@bmahe.net> Misc. cleanup and refactoring. Also handle TSPLIB problems
2019-08-22 23:41:23 Bruno Mahé <bruno@bmahe.net> Provide a way to supply population generator
2019-08-22 00:19:27 Bruno Mahé <bruno@bmahe.net> Add Order Crossover (OX) operator and TSV problem sample
2019-08-20 01:33:39 Bruno Mahé <bruno@bmahe.net> Add minimization feature
2019-08-17 23:28:13 Bruno Mahé <bruno@bmahe.net> Initial commit