Skip to content

Releases: cicirello/Chips-n-Salsa

Chips-n-Salsa, v7.0.0

01 Aug 18:35
aa684c0
Compare
Choose a tag to compare

[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

28 Jul 19:43
6180887
Compare
Choose a tag to compare

[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

15 May 19:34
a25def6
Compare
Choose a tag to compare

[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

20 Jan 21:50
228d408
Compare
Choose a tag to compare

[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

10 Jan 22:35
e2c4c74
Compare
Choose a tag to compare

[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

17 Nov 22:54
896cd8c
Compare
Choose a tag to compare

[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

Other

Chips-n-Salsa, v6.0.0

02 Sep 19:34
6e297ac
Compare
Choose a tag to compare

[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

01 Aug 16:46
2788039
Compare
Choose a tag to compare

[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

29 Jul 16:18
f7a562a
Compare
Choose a tag to compare

[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

25 Jul 18:19
dedeb0f
Compare
Choose a tag to compare

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