- Added public method
init()toSearchto perform initialization. This method is called from withinsearchStarted()but may also be called prior to execution. - Updated
LocalSearch,LRsubsetSearch,NeighbourhoodSearchandBasicParallelSearchto use the newinit()method for initialization and validation. - When initializing a
ParallelTemperingorBasicParallelSearchalgorithm all subsearches are now initialized as well. - Added public method
setCurrentSolution(solution, evaluation, validationtoSearchto set a new current solution with known evaluation and validation. - Avoid full re-evaluation and re-validation when swapping solutions between replicas in
ParallelTempering. [#18] - Benefit from delta evaluation and validation when shaking in
VariableNeighbourhoodSearch. [#17] - Added methods to clear all stop criteria and search listeners.
- Indicative error message when
copy()yieldsnullinSolution.checkedCopy(solution). [#32]
- Replaced abstract class
AbstractProblemwith concrete classGenericProblem. The former class had a single abstract method, responsible for generating random solutions. This has been replaced with delegation through a newly definedRandomSolutionGeneratorinterface. It is now possible (and preferred) to model custom problems by plugging in the data, objective, constraints (if any) and random solution generator in aGenericProblem, avoiding the need to extend and abstract problem class. The predefinedSubsetProblemincludes a default, but now easily customizable, random subset solution generator. - Added a constructor to
SubsetProblemthat allows to easily create a subset problem without subset size limits. - Reordered arguments in
SubsetProblemconstructors. - Various improvements.
- Dedicated customizable random generator per search.
- Reduced overhead of checking stop criteria.
- Various improvements and minor bug fixes.
- Improved test coverage.
- Cleaned up log messages.
- Moved SearchFactory interface from extensions to core module. Grouped various factory interfaces in package org.jamesframework.core.factory.
- Moved to SLF4J API 1.7.12.
- Added support for efficient delta evaluations and validations.
- Provided additional subset neighbourhoods.
- Added option to sort IDs of selected items in a subset solution using a custom comparator.
- Renamed SubsetData to IntegerIdentifiedData.
- Renamed ProblemWithData to AbstractProblem.
- Refactored abstract Solution class.
- Reorganized package structure.
- Removed SubsetProblem interface and renamed SubsetProblemWithData to SubsetProblem.
- Removed MinMaxObjective.
- Removed EmptySearchListener, LocalSearchListener and EmptyLocalSearchListener. Default empty implementations of all callbacks are now directly provided in the SearchListener interface.
- Various code simplifications and optimizations (e.g. using functional operations).
- Minor bug fixes and improvements.
- Moved to SLF4J API 1.7.7.
- Moved to Java 8.
- First stable release of the JAMES Core Module.