Change Log Report

Total number of changed sets: 1

Changes from an unknown range

Total commits: 428
Total number of files changed: 697

Timestamp Author Details
2026-07-19 15:51:30 Bruno Mahé <bruno@bmahe.net> Harden GPG setup for releases

Install GnuPG before importing the signing key and fail immediately when the import does not produce a secret key. Also secure the GPG home and use the correct passphrase-file option.\n\nTests: yq eval '.' .gitlab-ci.yml\nTests: mvn -q spotless:check
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-18 14:25:36 Bruno Mahé <bruno@bmahe.net> Apply spotless formatting
2026-07-18 14:24:08 Bruno Mahé <bruno@bmahe.net> Update dependencies and renable maven changelog report
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:15:13 Bruno Mahé <bruno@bmahe.net> Apply junit openrewrite recipe

Command:

```bash
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run --define rewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-testing-frameworks:RELEASE --define rewrite.activeRecipes=org.openrewrite.java.testing.junit5.JUnit5BestPractices
```
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-17 19:05:35 Bruno Mahé <bruno@bmahe.net> Ran openrewrite to remove unused imports

Command:
```bash
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run \
-Drewrite.activeRecipes=org.openrewrite.java.RemoveUnusedImports
```
2026-07-17 18:59:44 Bruno Mahé <bruno@bmahe.net> Misc. cleanup for README
2026-07-16 23:51:13 Bruno Mahé <bruno@bmahe.net> Remove deprecated NEAT node index accessors

Use the ordered node ID APIs throughout NEAT tests and verify that explicit sparse layouts preserve declaration order.\n\nTests: mvn --batch-mode spotless:check\nTests: mvn --batch-mode -pl neat -am test\nTests: mvn --batch-mode clean verify -DskipPITests=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 20:25:35 Bruno Mahé <bruno@bmahe.net> Document Java control-flow style

Record the repository convention to avoid break and continue statements in Java code.
2026-07-16 20:25:31 Bruno Mahé <bruno@bmahe.net> Prevent duplicate NEAT split connections

Skip disabled genes and restore only missing links when an ancestral connection has already been split. Add regression coverage for re-enabled and partially deleted splits.\n\nTests: mvn -pl neat -Dtest=NeatChromosomeAddNodeMutationHandlerTest,SparseStructuralMutationTest test
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-07-12 22:41:49 Bruno Mahé <bruno@bmahe.net> Update to Java 25
2026-05-08 23:42:15 Bruno Mahé <bruno@bmahe.net> Normalize empty XML tags
2026-05-08 21:10:03 Bruno Mahé <bruno@bmahe.net> Refine repository agent guidance

Co-Authored-By: Oz <oz-agent@warp.dev>
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-28 22:36:11 Bruno Mahé <bruno@bmahe.net> Small updates to AGENTS.md/CLAUDE.md
2026-04-27 19:37:13 Bruno Mahé <bruno@bmahe.net> Update dependencies
2026-04-27 01:56:33 Bruno Mahé <bruno@bmahe.net> Apply spotless formatting
2026-04-27 01:31:34 Bruno Mahé <bruno@bmahe.net> Update Apache Log4j to 2.25.4
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
2026-04-25 17:42:57 Bruno Mahé <bruno@bmahe.net> Apply spotless formatting
2026-04-25 15:01:53 Bruno Mahé <bruno@bmahe.net> Upgrade Central publishing plugin

Update the Sonatype Central publishing plugin from 0.9.0 to 0.10.0.\n\nTests: mvn -B -Dstyle.color=never validate
2026-04-25 14:38:32 Bruno Mahé <bruno@bmahe.net> Upgrade JOCL to 2.0.6

Update the JOCL dependency used by the GPU module from 2.0.5 to 2.0.6.

Validation:
- mvn test -pl gpu -am
2026-04-25 14:36:29 Bruno Mahé <bruno@bmahe.net> Refresh build tooling and core dependencies

Update the build and test plugin versions, centralize commons-csv in dependency
management, and upgrade the Apache Commons, Immutables, and Mockito versions
that have been validated in this branch.

Validation:
- mvn clean compile
- mvn test
- mvn clean verify -DskipPITests=true
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-24 01:48:38 Bruno Mahé <bruno@bmahe.net> Fix a bug in Terminations::ofMaxtime

It was looking at the nano part rather than converting the entire duration to nanos
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-11-15 11:26:34 Bruno Mahé <bruno@bmahe.net> Update agent instructions
2025-11-14 01:18:28 Bruno Mahé <bruno@bmahe.net> Clean up README.md
2025-11-14 01:14:00 Bruno Mahé <bruno@bmahe.net> Add RecurrentNetwork support and tests for NEAT

Introduce a recurrent network evaluator capable of iteratively computing arbitrary cyclic NEAT topologies, complete with configurable convergence control and state management. Add thorough unit tests covering convergence, reset behavior, parity with feed-forward execution on acyclic graphs, disabled connections, and multi-step state retention. Update NEAT docs to reference the new executor from existing components.
2025-11-14 01:04:48 Bruno Mahé <bruno@bmahe.net> Add a symlink AGENTS.md -> CLAUDE.md
2025-10-16 01:22:45 Bruno Mahé <bruno@bmahe.net> Update some dependencies
2025-10-02 05:20:36 Bruno Mahé <bruno@bmahe.net> Edit README.md to update Maven Central shield
2025-10-01 22:26:12 Bruno Mahé <bruno@bmahe.net> Remove reference to the old gitlab maven repo

This is not needed anymore as artefacts are now deployed on maven central
2025-10-01 22:22:28 Bruno Mahé <bruno@bmahe.net> Update recommended version 4.2 -> 5.1
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-10-01 02:08:23 Bruno Mahé <bruno@bmahe.net> Add support for Java 25.

It required an adjustment related to a change pushed with Java 23.
That changes require us to explicitly declate any annotation processor
instead of being picked up automatically in previous versions of Java.
See for details https://mail.openjdk.org/pipermail/jdk-dev/2024-May/009028.html
2025-10-01 01:37:51 Bruno Mahé <bruno@bmahe.net> Publish artefacts on Maven Central by default in CI/CD
2025-09-30 21:52:23 Bruno Mahé <bruno@bmahe.net> Tweak gitlab ci
2025-09-30 21:46:27 Bruno Mahé <bruno@bmahe.net> Force all checksums on maven deploy to sonatype
2025-09-30 01:11:36 Bruno Mahé <bruno@bmahe.net> Disable jdk 25 build until I have time to investigate the failure
2025-09-30 00:58:17 Bruno Mahé <bruno@bmahe.net> Make GPG Key available when performing a release
2025-09-29 23:33:14 Bruno Mahé <bruno@bmahe.net> Move sonatype/gpg plugin behind a release profile
2025-09-29 22:36:44 Bruno Mahé <bruno@bmahe.net> Add gpg signing plugin
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 20:17:46 Bruno Mahé <bruno@bmahe.net> Temurin images are APT based
2025-09-28 18:30:43 Bruno Mahé <bruno@bmahe.net> Deploy to Maven Central by default
2025-09-28 16:34:15 Bruno Mahé <bruno@bmahe.net> Add JDK 25 validation in Gitlab CI
2025-09-28 15:45:24 Bruno Mahé <bruno@bmahe.net> Add SelectiveRefinementTournament in the intro doc to the list of selection operators
2025-09-28 15:34:52 Bruno Mahé <bruno@bmahe.net> Fix link to DoubleTournament in intro doc
2025-09-28 15:33:33 Bruno Mahé <bruno@bmahe.net> Remove test strings in asciidoc docs
2025-09-28 15:33:23 Bruno Mahé <bruno@bmahe.net> Ignore vim swp files
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-25 01:06:24 Bruno Mahé <bruno@bmahe.net> Fix SelectiveRefinementTournamentSelector test mock setup

Fixed three failing tests by correcting mock RandomGenerator setup:
- selectWithRefinementApplied: Updated mock to properly sequence tournament selection calls
- selectWithoutRefinement: Fixed mock values to match expected fitness tournament behavior
- selectWithMinimization: Corrected mock setup for minimization optimization logic

The tests were failing because the mock didn't account for all nextInt() calls
made during tournament selection. Each tournament requires multiple random
number generations, and the expected assertions needed to match the actual
selection behavior based on fitness comparators and refinement logic.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 00:53:43 Bruno Mahé <bruno@bmahe.net> Remove unused imports in SRT
2025-09-24 00:52:31 Bruno Mahé <bruno@bmahe.net> Remove example from SRT and formatting
2025-09-24 00:34:19 Bruno Mahé <bruno@bmahe.net> Add comprehensive Javadoc documentation to SelectiveRefinementTournament

- Document class-level functionality with algorithm overview and use cases
- Add detailed method-level documentation for all public methods
- Include code example showing typical usage pattern
- Document validation constraints and builder API
- Provide cross-references to related classes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 00:12:32 Bruno Mahé <bruno@bmahe.net> Clean up codebase and add SelectiveRefinementTournament selection strategy

- Replace Apache Commons Lang3 Validate with Objects.requireNonNull() for null checks
- Remove unnecessary @Value.Style annotations and clean up Tournament class
- Add SelectiveRefinementTournament selection policy with handler and selector implementation
- Add package-info.java files across all modules for improved documentation
- Update test classes to use concrete types instead of Immutable variants
- Add convenient factory methods to InputSpec for easier instantiation

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

Co-Authored-By: Claude <noreply@anthropic.com>
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-21 13:08:50 Bruno Mahé <bruno@bmahe.net> Optimize children generation by parallelizing the process
2025-09-20 01:03:44 Bruno Mahé <bruno@bmahe.net> Fix bounds overflow bug in IntChromosomeOrderCrossover and add comprehensive test

- Fix chromosome2Idx bounds check that could cause IndexOutOfBoundsException
- Add bounds wrapping logic to properly cycle through second parent chromosome
- Add test case that reproduces the edge case with multiple chromosome2 iterations
- Minor optimization: use cached numAlleles variable instead of method calls

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-20 00:50:10 Bruno Mahé <bruno@bmahe.net> Enhance evolution listeners with lifecycle hooks and improved documentation

- Added preEvaluation and postEvaluation lifecycle hooks to EvolutionListener interface
- Updated EASystem to call lifecycle hooks for all registered listeners
- Enhanced DefaultEvolutionListener with comprehensive JavaDoc and lifecycle support
- Enhanced EvolutionListenerLogTopN with detailed JavaDoc and lifecycle support
- Added comprehensive test suite for EvolutionListenerLogTopN with 18 test cases
- Updated EvolutionListener interface with improved documentation and examples
- Fixed comparator handling to respect EA configuration fitness comparators
- Enhanced thread safety documentation and implementation notes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-20 00:04:29 Bruno Mahé <bruno@bmahe.net> Make sure example in README.md is runnable in jshell and add a new stdout based logger
2025-09-18 22:02:36 Bruno Mahé <bruno@bmahe.net> Add some convenience methods in BitChromosome and IntChromosome
2025-09-18 22:02:12 Bruno Mahé <bruno@bmahe.net> Add static constructor for fixed number of swap in SwapMutation
2025-09-18 22:01:18 Bruno Mahé <bruno@bmahe.net> More deprecated Validate.notNull
2025-09-18 22:00:36 Bruno Mahé <bruno@bmahe.net> Formatting for Genotype
2025-09-18 22:00:09 Bruno Mahé <bruno@bmahe.net> Formatting for Fitness
2025-09-18 00:44:10 Bruno Mahé <bruno@bmahe.net> Replace deprecated Validate::notNull with Objects::requireNonNull
2025-09-18 00:43:26 Bruno Mahé <bruno@bmahe.net> Enhance README.md with modern, attractive design

- Add eye-catching header with DNA emoji and compelling tagline
- Improve visual appeal with better badges and structured layout
- Add comprehensive Quick Start section with proper EAConfiguration builder pattern
- Create feature showcase with visual tables and emojis
- Add real-world applications and code examples
- Organize documentation links in accessible hub format
- Include community contribution guidelines
- Fix GitLab links (replace GitHub references)
- Add modular architecture visualization
- Improve overall readability and professional appearance

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 23:12:19 Bruno Mahé <bruno@bmahe.net> Remove unused ExecutorService in EASystemFactory
2025-09-17 23:09:54 Bruno Mahé <bruno@bmahe.net> Replace deprecated Validate::notNull with Objects::requireNonNull
2025-09-17 23:06:59 Bruno Mahé <bruno@bmahe.net> Add virtual thread support for fitness evaluation

- Implement FitnessEvaluatorVirtualThread with one virtual thread per evaluation
- Add EASystemFactory.fromWithVirtualThreads() factory method
- Optimize for I/O-bound fitness functions and large populations
- Maintain compatibility with existing evaluation architecture

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

Co-Authored-By: Claude <noreply@anthropic.com>
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-17 00:12:16 Bruno Mahé <bruno@bmahe.net> Update recommended version to latest release 4.2
2025-09-16 23:42:20 Bruno Mahé <bruno@bmahe.net> Mutator gets passed `generation` to enable implementations to adjust their behavior over time
2025-09-16 23:27:16 Bruno Mahé <bruno@bmahe.net> Introduce a proper PostEvaluationProcessor and ensure it gets passed `generation` to enable implementations to adjust their behavior over time
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 23:07:05 Bruno Mahé <bruno@bmahe.net> Selector gets passed `generation` to enable implementations to adjust their behavior over time
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-16 22:23:19 Bruno Mahé <bruno@bmahe.net> Improve DoubleTournamentSelectionPolicyHandlerTest to test an verified case
2025-09-16 20:49:13 Bruno Mahé <bruno@bmahe.net> Replace Validate.notNull with Objects.requireNonNull and misc. clean up
2025-09-14 19:06:59 Bruno Mahé <bruno@bmahe.net> Update references to the staged website since it is now built for the `en` locale
2025-09-14 12:38:04 Bruno Mahé <bruno@bmahe.net> Add token test to the extras module to ensure pitest runs and gather a report
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-08 21:44:59 Bruno Mahé <bruno@bmahe.net> Try something with gitlab ci
2025-09-08 00:46:49 Bruno Mahé <bruno@bmahe.net> Add -yqq to gitlab config
2025-09-08 00:46:02 Bruno Mahé <bruno@bmahe.net> Newest python forces the use of virtualenv
2025-09-07 22:43:48 Bruno Mahé <bruno@bmahe.net> Temp hack to get the site to build
2025-09-07 15:48:01 Bruno Mahé <bruno@bmahe.net> Update dependencies
2025-07-14 22:28:23 Bruno Mahé <bruno@bmahe.net> Add trufflehog command back
2025-07-14 22:20:40 Bruno Mahé <bruno@bmahe.net> Remove entry point of Trufflehog image in CI/CD
2025-07-14 22:08:59 Bruno Mahé <bruno@bmahe.net> Add a Trufflehog check
2025-06-21 17:53:11 Bruno Mahé <bruno@bmahe.net> Add tests for PopulationIterator
2025-06-21 17:44:08 Bruno Mahé <bruno@bmahe.net> Improve javadoc for EASystem
2025-06-21 17:40:26 Bruno Mahé <bruno@bmahe.net> Improve testing for EASystem
2025-06-18 22:37:40 Bruno Mahé <bruno@bmahe.net> Gitlab CI/CD: cache core/target for debugging
2025-06-18 22:37:03 Bruno Mahé <bruno@bmahe.net> Update pitest version
2025-06-18 00:47:17 Bruno Mahé <bruno@bmahe.net> Skip compilation when building a site as it is done in previous stages
2025-06-17 21:30:08 Bruno Mahé <bruno@bmahe.net> Add more logging to ci/cd
2025-06-15 03:17:56 Bruno Mahé <bruno@bmahe.net> Add Claude instructions
2025-06-15 03:09:49 Bruno Mahé <bruno@bmahe.net> Add comprehensive javadoc documentation for NEAT module

Adds extensive javadoc documentation for the entire NEAT (NeuroEvolution of
Augmenting Topologies) module, covering all major classes and interfaces with
detailed descriptions, usage examples, and algorithm explanations.

Key documented components:
- Core infrastructure: NeatUtils, InnovationManager, SpeciesIdGenerator
- Network components: Connection, FeedForwardNetwork, Activations
- Genetic representation: NeatChromosome, NeatChromosomeSpec
- Species management: Species, NeatSelection, NeatSelectionPolicyHandler
- Genetic operators: NeatCombination, NeatChromosomeCombinator
- Mutation handlers: AddConnectionPolicyHandler, AddNodePolicyHandler
- Factory classes: NeatEAExecutionContexts, NeatConnectedChromosomeFactory
- Selection implementation: NeatSelectorImpl with species-based selection
- Comparison strategies: ParentComparisonHandler, ChosenOtherChromosome

Documentation features:
- Comprehensive class and method descriptions
- Real-world usage examples with code snippets
- NEAT algorithm integration explanations
- Performance considerations and optimization details
- Cross-references between related components
- Parameter guidance and configuration examples

This significantly improves code clarity and developer experience for the
complex NEAT neural network evolution algorithm implementation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 02:39:32 Bruno Mahé <bruno@bmahe.net> Add comprehensive javadoc documentation for GPU module

Enhance GPU module with extensive javadoc documentation covering:

Core GPU acceleration framework:
- GPUEASystemFactory: Factory for GPU-accelerated EA systems
- GPUFitnessEvaluator: OpenCL lifecycle management and execution
- GPUEAConfiguration/GPUEAExecutionContext: GPU-specific configuration

OpenCL integration layer:
- Platform/Device/KernelInfo: OpenCL resource model classes
- PlatformUtils/DeviceUtils/KernelInfoUtils: OpenCL API utilities
- OpenCLExecutionContext: Execution environment management

Fitness evaluation framework:
- OpenCLFitness: Abstract base for OpenCL fitness evaluation
- SingleKernelFitness: Single kernel execution framework
- MultiStageFitness: Multi-stage kernel pipeline support

Data management and filtering:
- CLData/DataLoader: GPU memory management abstractions
- ResultExtractor: Type-safe result extraction from GPU memory
- DeviceFilters/PlatformFilters: Predicate-based device selection
- Program: OpenCL kernel compilation specification

All classes include comprehensive documentation with:
- Architectural overviews and usage patterns
- Method-level documentation with parameter details
- Performance considerations and optimization strategies
- Error handling guidance and memory management
- Extensive code examples and workflow descriptions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 21:12:59 Bruno Mahé <bruno@bmahe.net> Complete comprehensive javadoc documentation for core module components

This commit adds extensive javadoc documentation for the remaining core
module classes and interfaces, focusing on high-priority undocumented
components and improving minimal existing documentation.

Major additions include:

- PopulationIterator: Complete documentation with usage patterns and
thread safety considerations for population traversal
- TreeNode: Comprehensive genetic programming tree structure documentation
with examples and performance considerations
- EASystemFactory: Extensive factory method documentation with configuration
guides and usage patterns for different evaluation strategies
- Terminations: Complete utility class documentation with logical
combination examples and termination criteria patterns
- FitnessBulkAsync: Detailed asynchronous batch evaluation interface
documentation with implementation examples and use cases
- GenotypeGenerator: Population initialization documentation with
automatic and custom generation patterns

Enhanced existing documentation:
- FitnessEvaluator: Added comprehensive evaluation strategy documentation
- SelectionPolicy: Detailed selection strategy interface documentation
- ReplacementStrategy: Complete replacement strategy documentation
- Minor cross-reference fixes and HTML compliance improvements

All core module classes now have professional-quality documentation
following consistent patterns with practical examples, performance
considerations, and clear usage guidance.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 20:50:52 Bruno Mahé <bruno@bmahe.net> Complete core module javadoc documentation with system orchestration and factories

- Enhance EASystem class with comprehensive evolutionary process documentation
- Document floating-point chromosome types: DoubleChromosome, FloatChromosome
- Add detailed ChromosomeFactory interface documentation with factory pattern explanation
- Document EvolutionListener interface for monitoring and callback mechanisms
- Include performance considerations, thread safety, and usage examples
- Provide implementation guidelines and best practices for custom extensions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 20:46:10 Bruno Mahé <bruno@bmahe.net> Enhance core module javadoc documentation for key interfaces and classes

- Document core evolutionary algorithm interfaces: Mutator, Selector, Termination
- Add comprehensive javadocs for chromosome types: IntChromosome, TreeChromosome
- Document specification interfaces: ChromosomeSpec, IntChromosomeSpec, MutationPolicy
- Include detailed usage examples, design patterns, and cross-references
- Explain strategy pattern implementation and configuration approaches
- Add thread safety, performance, and constraint handling documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 20:37:04 Bruno Mahé <bruno@bmahe.net> Add comprehensive javadoc documentation for core API classes

- Document core classes: Individual, Genotype, Population, Chromosome, BitChromosome, Fitness
- Add javadocs for GP module: Operation, OperationFactory
- Document MOO module: FitnessVector with Pareto dominance explanation
- Include detailed parameter descriptions, return values, and usage examples
- Add cross-references between related classes
- Explain design patterns, thread safety, and performance considerations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-14 16:05:00 Bruno Mahé <bruno@bmahe.net> Migrate Validate::notNull to Objects::requireNonNull for IntChromosomeOrderCrossover
2024-09-18 22:53:48 Bruno Mahé <bruno@bmahe.net> Fix javadoc in FitnessEvaluator
2024-06-24 02:36:02 Bruno Mahé <bruno@bmahe.net> Small clean up and quality of life changes
2024-05-19 17:27:01 Bruno Mahé <bruno@bmahe.net> PITest avoidCallsTo should point to a package or a class, not a method
2024-05-19 16:52:35 Bruno Mahé <bruno@bmahe.net> Extract genotype generation handling in its own class for easier maintenance
2024-05-17 00:32:19 Bruno Mahé <bruno@bmahe.net> Use Objects::requireNonNull for bitChromosomeUtils
2024-05-17 00:32:05 Bruno Mahé <bruno@bmahe.net> Add a builder method to ChromosomeFactoryProvider
2024-05-15 21:41:32 Bruno Mahé <bruno@bmahe.net> Upgrade dependencies
2024-05-13 23:14:03 Bruno Mahé <bruno@bmahe.net> Update recommended version to 4.1
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
2024-02-10 02:20:02 Bruno Mahé <bruno@bmahe.net> Updates
2024-02-08 01:42:05 Bruno Mahé <bruno@bmahe.net> Update dependencies
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-15 18:58:34 Bruno Mahé <bruno@bmahe.net> Update recommended version to the latest which is 4.0
2023-10-15 18:58:23 Bruno Mahé <bruno@bmahe.net> Update java version in the contributing guide
2023-10-15 15:42:53 Bruno Mahé <bruno@bmahe.net> Update README
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-13 23:31:32 Bruno Mahé <bruno@bmahe.net> Remove gitlab license scanning from ci since it's deprecated
2023-10-13 23:16:55 Bruno Mahé <bruno@bmahe.net> Update gitlab ci images to eclipse temurin 21
2023-10-12 00:26:46 Bruno Mahé <bruno@bmahe.net> Update DistributionUtils to java 21
2023-10-11 21:40:18 Bruno Mahé <bruno@bmahe.net> Update CI to java 21
2023-10-11 21:37:42 Bruno Mahé <bruno@bmahe.net> Update base build image for gitlab ci
2023-10-11 21:34:20 Bruno Mahé <bruno@bmahe.net> Update build docker image for the gitlab ci and add Corretto 21
2023-10-11 21:29:28 Bruno Mahé <bruno@bmahe.net> Update java version to 21
2023-10-11 21:28:59 Bruno Mahé <bruno@bmahe.net> Update dependencies
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-24 22:00:02 Bruno Mahé <bruno@bmahe.net> Update recommended version to 3.4
2023-07-24 02:39:38 Bruno Mahé <bruno@bmahe.net> Add information about deviceBuilder.maxWorkItemSizes
2023-07-24 02:39:12 Bruno Mahé <bruno@bmahe.net> Remove unused property in pom.xml
2023-07-24 01:26:41 Bruno Mahé <bruno@bmahe.net> Improve readability of logs for MultiStageFitness
2023-07-24 01:25:41 Bruno Mahé <bruno@bmahe.net> Add a new method getDeviceInfoLongArray
2023-07-24 00:56:48 Bruno Mahé <bruno@bmahe.net> Improve logging
2023-07-24 00:56:12 Bruno Mahé <bruno@bmahe.net> Delete unused code
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-16 17:23:10 Bruno Mahé <bruno@bmahe.net> Configure generated website
2023-07-16 16:51:48 Bruno Mahé <bruno@bmahe.net> Update dependencies
2023-07-16 16:27:51 Bruno Mahé <bruno@bmahe.net> Update recommended version to 3.3
2023-07-16 14:12:37 Bruno Mahé <bruno@bmahe.net> Attempt at fixing the release build.

This appears to be due to the upgrade of maven-source-plugin and a
common cited remedy would be to change its goal from `jar` to
`jar-no-fork`
2023-07-16 06:52:34 Bruno Mahé <bruno@bmahe.net> Update README.md to add a new line as the badges don't align well
2023-07-16 06:52:06 Bruno Mahé <bruno@bmahe.net> Update README.md with Semgrep badge
2023-07-15 23:42:36 Bruno Mahé <bruno@bmahe.net> Fix typo in the TournamentNSGA2SelectionPolicyHandlerFactory
2023-07-15 21:52:30 Bruno Mahé <bruno@bmahe.net> Save Semgrep output as xml since it contains a tally of failures
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-07-15 17:28:37 Bruno Mahé <bruno@bmahe.net> Provide the ability to customer the parent's comparison logic for NEAT combinations

This includes leveraging Java's ServiceLoader so that users can provide
their own policies and it will be picked up automatically
2023-06-15 22:04:41 Bruno Mahé <bruno@bmahe.net> Update dependencies and remove the gitlog plugins as it's not updated anymore
2023-06-15 18:51:13 Bruno Mahé <bruno@bmahe.net> Update the recommended version to 3.1
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-06-15 01:59:51 Bruno Mahé <bruno@bmahe.net> Fix typo in gitlab config
2023-06-15 01:58:20 Bruno Mahé <bruno@bmahe.net> Tweak the gitlag ci/cd
2023-06-14 22:57:59 Bruno Mahé <bruno@bmahe.net> Escape \
2023-06-14 20:39:24 Bruno Mahé <bruno@bmahe.net> Remove the extra `-` in the main website page.

This is due to doxia trying to compute a title without leaving room for
configuration.
Having investigated, it's easier to sed out the dash than contribute a
patch or fight it
2023-06-14 00:24:32 Bruno Mahé <bruno@bmahe.net> Add ability to set minimum level of offsprings and survivors for elitism and set a default of 1 for survivors.

This helps ensure there will always be at least one survivor in small populations.
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-30 13:23:24 Bruno Mahé <bruno@bmahe.net> Update recommended version to 3.0
2023-04-29 18:33:02 Bruno Mahé <bruno@bmahe.net> Renable Semgrep
2023-04-29 00:08:20 Bruno Mahé <bruno@bmahe.net> Disable Semgrep Pro until it is fixed
2023-04-29 00:01:52 Bruno Mahé <bruno@bmahe.net> Revert "Debug: set semgrep ci --oss-only as the build appears stuck"

This reverts commit e3b1e9464dab8b555261187c4536730d64057d0a.
2023-04-28 23:51:15 Bruno Mahé <bruno@bmahe.net> Debug: set semgrep ci --oss-only as the build appears stuck
2023-04-28 00:42:34 Bruno Mahé <bruno@bmahe.net> Update some dependencies
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-27 01:17:55 Bruno Mahé <bruno@bmahe.net> Add new NEAT mutation operators for deleting nodes and connections.

Also add a class to output NeatChromosomes to graphviz format
2023-04-23 20:53:28 Bruno Mahé <bruno@bmahe.net> Improve test coverage for the NEAT module
2023-04-17 23:40:59 Bruno Mahé <bruno@bmahe.net> Fix location for AbstractNeatChromosomeConnectionMutationHandlerTest
2023-04-17 23:35:12 Bruno Mahé <bruno@bmahe.net> Improve test coverage
2023-04-05 20:16:32 Bruno Mahé <bruno@bmahe.net> Update CI pipeline for Java 20
2023-03-25 20:09:16 Bruno Mahé <bruno@bmahe.net> Save the result of semgrep run to a json file
2023-03-25 19:33:25 Bruno Mahé <bruno@bmahe.net> Update the website to https://genetics4j.org
2023-02-11 17:59:25 Bruno Mahé <bruno@bmahe.net> Clean up gitlab ci config
2023-02-11 17:52:00 Bruno Mahé <bruno@bmahe.net> Improve test coverage for NEAT chromosome factories
2023-02-11 17:51:24 Bruno Mahé <bruno@bmahe.net> Update some dependencies in pom.xml
2023-02-10 20:56:19 Bruno Mahé <bruno@bmahe.net> Upgrade maven version in CI and remove openjdk as it is not supported anymore

See for details:
* https://github.com/carlossg/docker-maven/issues/305
* https://github.com/infosiftr/docker-library-docs/blob/master/openjdk/deprecated.md
* https://github.com/docker-library/openjdk/issues/505
2023-01-27 00:39:02 Bruno Mahé <bruno@bmahe.net> Update versions
2022-12-04 15:46:14 Bruno Mahé <bruno@bmahe.net> Run semgrep all the time
2022-12-04 02:10:56 Bruno Mahé <bruno@bmahe.net> Refactor the way the fitness comparator is computed.
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-29 01:16:56 Bruno Mahé <bruno@bmahe.net> Extract Tournament Selector in its own class
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-11-23 22:11:09 Bruno Mahé <bruno@bmahe.net> Extend Builder directly into Connection
2022-11-23 21:59:31 Bruno Mahé <bruno@bmahe.net> Speciation for NEAT should also check the compatbility with the members of a species in addition to the ancestors
2022-11-23 21:58:29 Bruno Mahé <bruno@bmahe.net> Allow the initialization of SpeciesIDGenerator with a specific base species id
2022-11-23 21:57:30 Bruno Mahé <bruno@bmahe.net> Allow the initialization of a specific value for InnovationManager
2022-10-16 19:04:43 Bruno Mahé <bruno@bmahe.net> Fix typo in index.adoc
2022-10-16 19:03:58 Bruno Mahé <bruno@bmahe.net> Update README.md for NEAT
2022-10-16 18:43:38 Bruno Mahé <bruno@bmahe.net> Update Gitlab CI for new neat module
2022-10-16 18:32:54 Bruno Mahé <bruno@bmahe.net> Add basic NEAT implementation
2022-09-29 23:38:43 Bruno Mahé <bruno@bmahe.net> Add semgrep configuration
2022-08-27 23:40:01 Bruno Mahé <bruno@bmahe.net> Fix CI build
2022-08-27 18:23:14 Bruno Mahé <bruno@bmahe.net> Update build image for openjdk to 18 as 17 is not supported anymore
2022-08-27 18:07:29 Bruno Mahé <bruno@bmahe.net> Update base image for CI
2022-08-26 23:57:36 Bruno Mahé <bruno@bmahe.net> Update dependencies versions
2022-08-26 23:57:26 Bruno Mahé <bruno@bmahe.net> Adjust formatting
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-05-23 19:12:56 Bruno Mahé <bruno@bmahe.net> Update recommend version to 2.0
2022-05-23 19:10:35 Bruno Mahé <bruno@bmahe.net> Upgrade maven plugins
2022-05-23 19:01:59 Bruno Mahé <bruno@bmahe.net> Upgrade mockito from 4.4.0 to 4.5.0
2022-05-22 16:29:17 Bruno Mahé <bruno@bmahe.net> Add some javadoc
2022-05-22 16:28:57 Bruno Mahé <bruno@bmahe.net> Comment out blocking operation used for measuring operation duration
2022-05-21 14:06:26 Bruno Mahé <bruno@bmahe.net> Add support for multi stage fitness computations over GPU
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-04-17 14:59:19 Bruno Mahé <bruno@bmahe.net> Enable jdk 18 in CI/CD
2022-03-26 17:51:19 Bruno Mahé <bruno@bmahe.net> Add MOO with seed to the mixture model doc
2022-03-26 15:05:33 Bruno Mahé <bruno@bmahe.net> Add temporary files from Kate to .gitignore
2022-03-25 00:28:28 Bruno Mahé <bruno@bmahe.net> Add support for IBM Semeru in the CI job
2022-03-25 00:22:17 Bruno Mahé <bruno@bmahe.net> Exclude Apache Log4j2 from pitest's mutations
2022-03-25 00:21:56 Bruno Mahé <bruno@bmahe.net> Avoid extra array allocation if not logging at trace level
2022-03-23 22:36:02 Bruno Mahé <bruno@bmahe.net> Add references to the mixture model sample to the overview docs
2022-03-23 22:35:37 Bruno Mahé <bruno@bmahe.net> Fix some log statements
2022-03-23 22:35:01 Bruno Mahé <bruno@bmahe.net> Add FloatChromosome and DoubleChromosome entries in the doc of core
2022-03-23 22:34:43 Bruno Mahé <bruno@bmahe.net> Update some dependencies
2022-03-23 01:50:25 Bruno Mahé <bruno@bmahe.net> Upgrade some dependencies
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
2022-01-16 22:13:41 Bruno Mahé <bruno@bmahe.net> EASystem::evaluateOnce should call the registered EvaluationListeners
2022-01-11 23:42:19 Bruno Mahé <bruno@bmahe.net> Add a new method to EASystem to evaluate a specific population
2022-01-04 21:56:21 Bruno Mahé <bruno@bmahe.net> Upgrade build images
2022-01-04 19:58:00 Bruno Mahé <bruno@bmahe.net> Add support for Float based chromosomes
2022-01-04 17:03:14 Bruno Mahé <bruno@bmahe.net> Provide the generation to the fitness evaluation and more hooks
2022-01-03 16:50:54 Bruno Mahé <bruno@bmahe.net> Make error message more user friendly
2021-12-28 13:24:55 Bruno Mahé <bruno@bmahe.net> Abstract out EAExecutionContext

This will make it easier to extend for GPU specific context
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-12-25 15:02:33 Bruno Mahé <bruno@bmahe.net> Update Apache Log4j2 to 2.17.0
2021-12-15 23:17:28 Bruno Mahé <bruno@bmahe.net> Upgrade Apache Log4j2 to 2.16.0

Addresses the well known security issue
2021-11-06 18:26:56 Bruno Mahé <bruno@bmahe.net> Run tests on OpenJDK and Amazon Corretto in the test stage of the CI/CD
2021-11-06 16:10:34 Bruno Mahé <bruno@bmahe.net> Update versions of some dependencies
2021-11-05 23:04:39 Bruno Mahé <bruno@bmahe.net> Don't run test coverage at test phrase in gitlab
2021-11-05 18:59:04 Bruno Mahé <bruno@bmahe.net> Add junit5 plugin to pitest
2021-10-06 21:51:49 Bruno Mahé <bruno@bmahe.net> Contrary to the openjdk images, Eclipse Temurin images are based on debian
2021-10-06 21:45:10 Bruno Mahé <bruno@bmahe.net> Use Eclipse Temurin 17 as base image for CI/CD
2021-10-06 19:23:21 Bruno Mahé <bruno@bmahe.net> Fix bug with stable fitness termination when minimizing solutions

It needs to use the fitnessComparator to properly deal with the
optimization goal
2021-09-21 23:22:34 Bruno Mahé <bruno@bmahe.net> Improve README
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 01:24:45 Bruno Mahé <bruno@bmahe.net> Upgrade mvn pmd plugin to 3.15.0 and do not run pitest reports if pitest is disabled
2021-09-21 01:02:54 Bruno Mahé <bruno@bmahe.net> The latest maven build image has migrated from debian to rhel based
2021-09-21 00:50:30 Bruno Mahé <bruno@bmahe.net> Update Gitlab CI/CD pipeline for Java 17
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:27:46 Bruno Mahé <bruno@bmahe.net> Update recommended version to 1.8
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 17:36:14 Bruno Mahé <bruno@bmahe.net> gitlab ci images require installation of python3
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-09-04 14:47:55 Bruno Mahé <bruno@bmahe.net> Add Single Point and Multi-Point Arithmetic combination policies

This is implemented for integer and double based chromosomes
2021-08-31 01:49:17 Bruno Mahé <bruno@bmahe.net> Add support for creep mutations
2021-08-29 17:49:00 Bruno Mahé <bruno@bmahe.net> Add support for double in swap mutations
2021-08-29 17:32:44 Bruno Mahé <bruno@bmahe.net> Add a chromosome handler for random mutations in double chromosomes
2021-08-29 17:11:50 Bruno Mahé <bruno@bmahe.net> Add support for Single Point Crossover for double
2021-08-29 17:00:44 Bruno Mahé <bruno@bmahe.net> Add support for Multi Point Crossover for double
2021-08-29 15:16:24 Bruno Mahé <bruno@bmahe.net> Add DoubleChromosome
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
2021-08-13 23:27:42 Bruno Mahé <bruno@bmahe.net> Update recommended version to 1.7
2021-08-13 17:25:53 Bruno Mahé <bruno@bmahe.net> Solves #24. CSVEvolutionListener should be able to only write some of the individuals

Add ability for users to include additional operations to be done on the
individuals being written at each generation.
2021-06-26 01:36:12 Bruno Mahé <bruno@bmahe.net> Update some dependencies
2021-05-07 00:38:47 Bruno Mahé <bruno@bmahe.net> Setup graphviz in the verify CI state

This avoids some harmless error in the build logs
2021-05-06 20:09:14 Bruno Mahé <bruno@bmahe.net> Attach javadocs to the all the build artefacts
2021-05-06 18:39:39 Bruno Mahé <bruno@bmahe.net> Set debian frontend to non-interactive as it is making the build fail
2021-05-06 01:09:42 Bruno Mahé <bruno@bmahe.net> Update JDKs used for build and validation
2021-03-07 17:15:50 Bruno Mahé <bruno@bmahe.net> Mass update of dependencies and plugins. Also enable markdown and asciidoc changelog generation
2021-02-02 01:25:39 Bruno Mahé <bruno@bmahe.net> Upgrade pitest to 1.6.6
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-11-11 23:41:02 Bruno Mahé <bruno@bmahe.net> Update recommended version to 1.6
2020-11-10 20:09:29 Bruno Mahé <bruno@bmahe.net> Update some libraries and maven plugins
2020-11-10 19:47:58 Bruno Mahé <bruno@bmahe.net> Add openjdk 16 to the gitlab config
2020-09-20 00:17:05 Bruno Mahé <bruno@bmahe.net> Fix image name
2020-09-20 00:11:59 Bruno Mahé <bruno@bmahe.net> Add support for jdk15
2020-06-30 23:48:47 Bruno Mahé <bruno@bmahe.net> Add convenience terminal
2020-06-29 22:39:14 Bruno Mahé <bruno@bmahe.net> Remove unused import
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 20:39:35 Bruno Mahé <bruno@bmahe.net> Update the recommended version to 1.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-13 01:08:34 Bruno Mahé <bruno@bmahe.net> Proportional Tournaments should make the decision of which comparator to use on each tournament
2020-06-12 22:44:31 Bruno Mahé <bruno@bmahe.net> Add a new example for Symbolic Regression based on Double Tournaments
2020-06-12 22:44:08 Bruno Mahé <bruno@bmahe.net> Add a `and` operation for Terminations
2020-06-12 22:43:47 Bruno Mahé <bruno@bmahe.net> Make DoubleTournament::parsimonyTournamentSize a double for convenience
2020-06-12 19:08:13 Bruno Mahé <bruno@bmahe.net> Generalize Tournament comparisons.

This provides the genotype to the comparator in addition to the fitness.
This makes it easier to implement some of the flows without going into multi objectives implementations.
For instance, Double or Partial tournaments do use the size of the program as part of the comparisons.
2020-06-10 22:24:56 Bruno Mahé <bruno@bmahe.net> Add support for Double and proportional tournaments
2020-06-06 01:09:55 Bruno Mahé <bruno@bmahe.net> Upgrade Immutables from 2.8.0 to 2.8.2
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-06-01 20:28:36 Bruno Mahé <bruno@bmahe.net> Configure spotbug sast to use java 11 instead of 8
2020-06-01 20:23:11 Bruno Mahé <bruno@bmahe.net> Try out the security and license reports from Gitlab.

See https://gitlab.com/help/user/application_security/index.md
2020-06-01 20:18:54 Bruno Mahé <bruno@bmahe.net> Add mention of the extras module in the doc
2020-06-01 20:13:13 Bruno Mahé <bruno@bmahe.net> Add more tests for core module
2020-06-01 20:12:46 Bruno Mahé <bruno@bmahe.net> Update READMEs for SPEA2
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-12 01:31:41 Bruno Mahé <bruno@bmahe.net> Fix boundary issue in the BitChromosome implementaiton of the MultiPointCrossover
2020-05-12 01:31:17 Bruno Mahé <bruno@bmahe.net> Disable PIT in extras due to lack of tests
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-09 19:07:47 Bruno Mahé <bruno@bmahe.net> Add more doc
2020-05-08 01:51:21 Bruno Mahé <bruno@bmahe.net> Relax the constraint of int chromosome random mutation

We don't have to fail if the mutation wasn't that effective
2020-05-06 22:18:52 Bruno Mahé <bruno@bmahe.net> Multiple points crossover should return both possible combinations
2020-05-06 22:03:19 Bruno Mahé <bruno@bmahe.net> Single point crossover should return all the combinations
2020-05-05 18:52:36 Bruno Mahé <bruno@bmahe.net> Add Delete N Last evolution strategy

Delete N Last replaces the N weakest individuals of the current population with offsprings
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-03 17:21:49 Bruno Mahé <bruno@bmahe.net> Add more documentation
2020-05-02 14:10:35 Bruno Mahé <bruno@bmahe.net> Minor doc update

This reflects the renaming of the last commit and also fixes a few typos encountered along the way.
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-24 01:31:00 Bruno Mahé <bruno@bmahe.net> Reorder the feature list in the README.md
2020-04-24 01:29:25 Bruno Mahé <bruno@bmahe.net> Reword some features listed in the README.md
2020-04-24 01:27:59 Bruno Mahé <bruno@bmahe.net> Add a link to the definition of mutation testing in the README.md
2020-04-24 01:18:12 Bruno Mahé <bruno@bmahe.net> Update README.md
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-12 16:42:59 Bruno Mahé <bruno@bmahe.net> Add the Grow method of program generation
2020-04-10 00:49:33 Bruno Mahé <bruno@bmahe.net> Extract Symbolic Regression sample to the sample module
2020-04-08 20:20:54 Bruno Mahé <bruno@bmahe.net> Split ProgramGenerator interface and add a new Full method of program generation

ProgramGenerator had some utilities functions which got moved out into their own ProgramHelper class.
This enables the introduction of new methods of program generation without copy pasting these helper methods and focuses ProgramGenerator on its responsibility of generating programs.
2020-04-08 01:17:01 Bruno Mahé <bruno@bmahe.net> Misc. refactoring
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-04-01 23:47:32 Bruno Mahé <bruno@bmahe.net> Compute fitness across multiple threads for speedup
2020-04-01 00:06:33 Bruno Mahé <bruno@bmahe.net> Fix JXR dependency and downgrade mvn site at it fails the build
2020-03-31 22:12:06 Bruno Mahé <bruno@bmahe.net> Update some versions
2020-03-31 20:24:31 Bruno Mahé <bruno@bmahe.net> Add more tests to the GP module and include some small refactoring
2020-03-28 14:04:36 Bruno Mahé <bruno@bmahe.net> Since PIT is configured for verify phase, it's control flag should be adjusted to IT tests
2020-03-27 22:43:04 Bruno Mahé <bruno@bmahe.net> Simplify pit configuration in Apache Maven by moving some of it in the parent pom
2020-03-27 19:20:06 Bruno Mahé <bruno@bmahe.net> Update pom.xml for report
2020-03-27 18:31:16 Bruno Mahé <bruno@bmahe.net> Make sure tests are run when building website to that they appear in the report
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-03-26 20:20:04 Bruno Mahé <bruno@bmahe.net> honor maven skipTests flag
2020-03-26 20:03:34 Bruno Mahé <bruno@bmahe.net> Disable manual/example test
2020-03-26 20:02:49 Bruno Mahé <bruno@bmahe.net> Disable manual test/example
2020-03-26 20:00:19 Bruno Mahé <bruno@bmahe.net> Upgrade pitest to 1.5.0 and re-enable jdk14 testing
2020-03-26 19:53:17 Bruno Mahé <bruno@bmahe.net> Enrich Genetic Programming constructs
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
2020-01-04 13:31:45 Bruno Mahé <bruno@bmahe.net> Fix typo in project references
2020-01-04 13:28:20 Bruno Mahé <bruno@bmahe.net> Move the genetic programming related classes to their own brand new module `gp`
2020-01-03 23:21:01 Bruno Mahé <bruno@bmahe.net> Upgrade maven site version
2020-01-03 22:45:31 Bruno Mahé <bruno@bmahe.net> Update doxia module
2020-01-03 22:13:56 Bruno Mahé <bruno@bmahe.net> Override default site and use fluido skin
2020-01-03 19:52:43 Bruno Mahé <bruno@bmahe.net> Add missing ci_settings.xml required for release
2020-01-03 18:23:20 Bruno Mahé <bruno@bmahe.net> Update Gitlab references in the pom.xml
2020-01-03 18:18:56 Bruno Mahé <bruno@bmahe.net> Comment out the build on jdk14 as pitest does not support it yet
2020-01-03 18:11:24 Bruno Mahé <bruno@bmahe.net> Update pitest version
2020-01-03 17:54:29 Bruno Mahé <bruno@bmahe.net> There is no such thing as a JDK 12 anymore
2020-01-03 17:52:54 Bruno Mahé <bruno@bmahe.net> Update the JDK versions on which we test the project
2020-01-03 17:46:57 Bruno Mahé <bruno@bmahe.net> Fix javadoc doclint issue
2020-01-03 11:44:37 Bruno Mahé <bruno@bmahe.net> Genetic Programming implementation
2019-11-13 01:50:31 Bruno Mahé <bruno@bmahe.net> Add exponential function to GP math
2019-11-13 01:45:47 Bruno Mahé <bruno@bmahe.net> Fix typo
2019-11-13 01:43:22 Bruno Mahé <bruno@bmahe.net> Make the input terminal pick only the relevant input and add a new rounded coefficient
2019-11-13 01:10:49 Bruno Mahé <bruno@bmahe.net> Rework GP to extract the relationship into a tree chromosome.

Without it, it would make mutations and combination quite difficult to implement
2019-11-02 21:11:19 Bruno Mahé <bruno@bmahe.net> Initial implementation of GP
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-19 01:13:30 Bruno Mahé <bruno@bmahe.net> Make Mutator a functional interface
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-10-18 19:46:32 Bruno Mahé <bruno@bmahe.net> Add a README as to not forget how to run TSP examples
2019-09-20 21:21:42 Bruno Mahé <bruno@bmahe.net> Refactor how GeneticSystem gets the fitness function
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-19 21:22:37 Bruno Mahé <bruno@bmahe.net> Remove trailing spaces
2019-08-18 22:53:33 Bruno Mahé <bruno@bmahe.net> Remove unusued variable
2019-08-17 23:44:33 Bruno Mahé <bruno@bmahe.net> Fix typo.
Will kill both classes anyway
2019-08-17 23:41:32 Bruno Mahé <bruno@bmahe.net> Add Gitlab CI config
2019-08-17 23:29:57 Bruno Mahé <bruno@bmahe.net> Add license
2019-08-17 23:28:13 Bruno Mahé <bruno@bmahe.net> Initial commit