Releases: cicirello/Chips-n-Salsa
Releases · cicirello/Chips-n-Salsa
Chips-n-Salsa, v7.0.0
[7.0.0] - 2024-08-01
Changed (BREAKING)
- Replaced public constructors of HeuristicSolutionGenerator with factory methods (BREAKING CHANGE).
- Replaced public constructors of HeuristicPermutationGenerator with factory methods (BREAKING CHANGE).
Changed (non-breaking)
- Refactored and improved the following classes to utilize new functionality from the dependencies on core and rho-mu:
- BinPacking
- CycleAlphaMutation
- CycleMutation
- ScrambleMutation
- StochasticUniversalSampling
- TwoPointCrossover (versions for BitVectors, IntegerVectors, and RealVectors)
- UndoableScrambleMutation
- UndoableUniformScrambleMutation
- UniformScrambleMutation
- WindowLimitedScrambleMutation
- WindowLimitedUndoableScrambleMutation
- Refactored null reference checks.
Fixed
- Fixed double comparison in SolutionCostPair.compareTo(SolutionCostPair).
- Added missing equals and hashCode methods to SolutionCostPair.
- Fixed end of line characters when writing weighted static scheduling instances to file.
- WeightedStaticScheduling: fixed constants that should be static fields.
- Fixed potential int overflow in average computation in AbstractWeightedSelection.
- Fixed potential int overflow in average computation in AbstractStochasticSampler.
- Improved BlockInterchangeIterator.rollback().
- Performance improvement to LargestCommonSubgraph.
- Removed unnecessary equals() and hashCode() methods from evolutionary operators.
- Return a copy from TimedParallelMultistarter.getSearchHistory() rather than reference to field.
- Fixed potential finalizer vulnerability (exceptions thrown from constructors) in the following classes (detected by SpotBugs):
- AbstractHillClimber
- AbstractStochasticSampler
- BinPacking
- HeuristicSolutionGenerator
- IntegerVectorInitializer
- OnePlusOneEvolutionaryAlgorithm
- ParallelMetaheuristic
- PermutationToBitVectorProblem
- RandomValueChangeMutation
- TimedParallelMultistarter
- TSP
Dependencies
- Bumped org.cicirello:rho-mu from 3.1.1 to 4.1.0
- Bump org.cicirello:core from 2.5.0 to 2.7.0
- Bump org.cicirello:jpt from 5.1.0 to 6.0.0
CI/CD
- Integrated SpotBugs into build process.
- Integrated Find Security Bugs into build process.
- Removed support for JitPack builds, include removing JitPack configuration, workflow steps, etc.
- Discontinued publishing a
jar-with-dependencies
(only a breaking change for those manually downloading library).
Chips-n-Salsa, v6.4.0
[6.4.0] - 2023-07-28
Added
- Added configurable source of randomness (#638).
- Added Position Based Crossover (PBX), a crossover operator for permutations (#642).
- New constructors in BitVector class enabling specifying source of randomness for random BitVectors (#638).
Dependencies
- Bump jpt from 5.0.4 to 5.1.0
- Bump rho-mu from 3.1.0 to 3.1.1
Chips-n-Salsa, v6.3.0
[6.3.0] - 2023-05-15
Added
- NaiveGenerationalEvolutionaryAlgorithm: This is the typical implementation of a generational EA. It is temporarily added to the library in this release for a specific research purpose. You should instead use the existing GenerationalEvolutionaryAlgorithm class, which is logically and statistically equivalent, as well as highly optimized.
Changed
- Refactored and optimized:
- NonWrappingOrderCrossover
- OrderCrossover
- OrderCrossoverTwo
- PartiallyMatchedCrossover
- TwoChangeMutation
- UniformOrderBasedCrossover
- UniformPartiallyMatchedCrossover
Deprecated
- The new NaiveGenerationalEvolutionaryAlgorithm class is deprecated upon introduction. It is temporarily added to the library in this release for a specific research purpose. Once that research purpose is served, it will be removed from the library with no further notice. That future removal will not be considered a breaking change due to the prominent notice in the class's documentation upon introduction. You should instead use the existing GenerationalEvolutionaryAlgorithm class, which is logically and statistically equivalent, but is highly optimized.
Dependencies
- Bump core from 2.4.4 to 2.5.0
- Bump rho-mu from 3.0.2 to 3.1.0
- Bump jpt from 5.0.1 to 5.0.4
Chips-n-Salsa, v6.2.1
[6.2.1] - 2023-01-20
Changed
- Refactored WeightedStaticScheduling to extract internal package-access classes for reading and writing instances to and from OR-library formatted files.
- Refactored WeightedStaticSchedulingWithSetups to extract internal package-access classes for reading and writing instances to and from the format of Cicirello (2003).
- Refactored CommonDuedateScheduling to extract internal package-access classes for reading and writing instances to and from OR-library formatted files.
Fixed
- Refactored several classes based on RefactorFirst scan, including the following:
- Test cases for all of the numeric representations
- Test cases for ValueBiasedStochasticSampling
- Test cases for HeuristicBiasedStochasticSampling
- Test cases for HeuristicSolutionGenerator
- Test cases for HeuristicPermutationGenerator
- Test cases for AcceptanceBandSampling
- Test cases for all of the iterable mutation operators
- Test cases for all of the mutation operators for permutations
- Test cases for UniformMutation for integer representations
- Test cases for all of the classic annealing schedules (linear, exponential, and logarithmic)
- Test cases for all of the restart schedules
- Test cases for all constructive heuristics for scheduling problems
- Test cases for the BitVector class
- Test cases for CommonDuedateScheduling
- Test cases for WeightedStaticSchedulingWithSetups
- Test cases for the parallel metaheuristic and parallel multistarter classes
- Test cases for the timed parallel multistarters
Dependencies
- Bump core from 2.4.3 to 2.4.4
- Bump rho-mu from 3.0.1 to 3.0.2
- Bump jpt from 5.0.0 to 5.0.1
Chips-n-Salsa, v6.2.0
[6.2.0] - 2023-01-10
Added
- AdaptiveMutationOnlyEvolutionaryAlgorithm: Implementation of a mutation-only evolutionary algorithm with mutation rates that evolve during the search.
- Extracted a EuclideanDistance class from the TSP (previously default and only edge distance) to enable easily introducing additional TSP edge distance functions.
Changed
- Refactored several classes to improve performance and/or maintainability, including the following:
- Several permutation crossover and mutation operators for improved performance
- All real-valued mutation operators
- SimulatedAnnealing
- Stochastic samplers
- Hill climbers
- Evolutionary algorithms
- Parallel metaheuristic and parallel multistarter classes
- Refactored test cases for the LargestCommonSubgraph class (based on RefactorFirst scan).
- Refactored test cases for the hill climber classes (based on RefactorFirst scan).
- Refactored test cases for the TSP class (based on RefactorFirst scan).
- Refactored test cases for BoltzmannSelection and BoltzmannStochasticUniversalSampling (based on RefactorFirst scan).
Dependencies
- Bump jpt from 4.3.1 to 5.0.0
- Bump rho-mu from 2.5.0 to 3.0.1
Chips-n-Salsa, v6.1.0
[6.1.0] - 2022-11-17
Added
- AdaptiveEvolutionaryAlgorithm class: An implementation of an evolutionary algorithm with control
parameters (crossover and mutation rates) that evolve during the search. - Option to constrain the result of a mutation on a real-valued representation to an interval (e.g., such
as relevant if mutating a crossover or mutation rate since such rates constrained in [0.0, 1.0]). - A set(int[]) method to the IntegerValued interface along with implementations in corresponding classes.
- A set(double[]) method to the RealValued interface along with implementations in corresponding classes.
Changed
- Reformatted all sourcecode to Google Java Style.
- Refactored evolutionary algorithm classes to improve maintainability, as well as a few minor optimizations.
- Refactored mutation classes for real-valued representations, including:
- Extracted an internal abstract base class for common functionality.
- Refactored Gaussian mutation classes to use new abstract base class.
- Refactored Cauchy mutation classes to use new abstract base class.
- Refactored uniform mutation classes to use new abstract base class.
- Refactored several test classes based on suggestions by Sonatype Lift's new technical debt scan.
Fixed
- Configuration of maven-shade-plugin fixed to suppress generation of dependency-reduced pom to avoid
breaking transitive dependencies for the regular jar of the library.
Dependencies
- Bump core from 2.2.2 to 2.4.3
- Bump rho-mu from 2.4.2 to 2.5.0
- Bump jpt from 4.2.0 to 4.3.1
CI/CD
- Configured the refactor-first-maven-plugin within a profile in the pom.xml.
- Configured Spotify's fmt-maven-plugin to format to Google Java Style during builds.
Other
- Adopted Google Java Style.
Chips-n-Salsa, v6.0.0
[6.0.0] - 2022-09-02
BREAKING CHANGES: This release includes breaking changes (see Removed and Changed sections).
Added
- Crossover operators for permutations:
- Cycle Crossover (CX)
- Order Crossover (OX)
- Non-Wrapping Order Crossover (NWOX)
- Uniform Order-Based Crossover (UOBX)
- Order Crossover 2 (OX2)
- Partially Matched Crossover (PMX)
- Uniform Partially Matched Crossover (UPMX)
- Precedence Preservative Crossover (PPX): two-point version
- Precedence Preservative Crossover (PPX): uniform version
- Edge Recombination
- Enhanced Edge Recombination
- Additional selection operators for use in evolutionary algorithms, including:
- Boltzmann selection with 3 temperature schedules: constant, linear cooling, exponential cooling
- Boltzmann selection with Stochastic Universal Sampling with 3 temperature schedules: constant, linear cooling, exponential cooling
Changed
- For clarity, renamed GenerationalNANDOperatorsEvolutionaryAlgorithm to
GenerationalEvolutionaryAlgorithmMutuallyExclusiveOperators (BREAKING CHANGE).
Removed
- The following classes, previously deprecated in 5.1.0:
- ShiftedFitnessProportionalSelection, replaced by combination of FitnessShifter with FitnessProportionalSelection.
- ShiftedStochasticUniversalSampling, replaced by combination of FitnessShifter with StochasticUniversalSampling.
- BiasedShiftedFitnessProportionalSelection, replaced by combination of FitnessShifter with BiasedFitnessProportionalSelection.
- BiasedShiftedStochasticUniversalSampling, replaced by combination of FitnessShifter with BiasedStochasticUniversalSampling.
Dependencies
- Bump jpt from 4.0.0 to 4.2.0
- Bump rho-mu from 2.3.2 to 2.4.2
Chips-n-Salsa, v5.2.0
[5.2.0] - 2022-08-01
Added
- OnePlusOneEvolutionaryAlgorithm, an implementation of a (1+1)-EA.
- OnePlusOneGeneticAlgorithm, an implementation of a (1+1)-GA, a subclass of OnePlusOneEvolutionaryAlgorithm for the special case of optimizing a BitVector representation.
Chips-n-Salsa, v5.1.0
[5.1.0] - 2022-07-29
Added
- SigmaScaling class, implementing sigma scaling.
- FitnessShifter class for use in combination with fitness-weighted selection operators to shift all fitnesses
such that minimum fitness is 1 at the time of selection (e.g., deals with negative fitnesses, etc).
Deprecated
- ShiftedFitnessProportionalSelection, replaced by combination of FitnessShifter with FitnessProportionalSelection.
- ShiftedStochasticUniversalSampling, replaced by combination of FitnessShifter with StochasticUniversalSampling.
- BiasedShiftedFitnessProportionalSelection, replaced by combination of FitnessShifter with BiasedFitnessProportionalSelection.
- BiasedShiftedStochasticUniversalSampling, replaced by combination of FitnessShifter with BiasedStochasticUniversalSampling.
Chips-n-Salsa, v5.0.1
[5.0.1] - 2022-07-25
Dependencies
- Bump core from 2.1.0 to 2.2.2
- Bump rho-mu from 2.3.0 to 2.3.2
Other
- First release available via JitPack after configuring builds. In addition to Maven Central and GitHub Packages, the library can now be imported from JitPack as a fall-back option, as well as a source of snapshot artifacts built from the current default branch or specific commit hashes.