Chips N Salsa Versions Save

A Java library of Customizable, Hybridizable, Iterative, Parallel, Stochastic, and Self-Adaptive Local Search Algorithms

v4.8.0

1 year ago

[4.8.0] - 2022-06-02

Added

  • CycleAlphaMutation: an implementation of the Cycle(alpha) form of cycle mutation.

Changed

  • Refactored hierarchy and methods of stochastic sampling classes.
  • Refactored exchangeBits methods and related of the BitVector class.
  • Replaced calls to methods deprecated in jpt-3.2.0.

Fixed

  • Added missing FunctionalInterface annotation on HeuristicBiasedStochasticSampling.BiasFunction.
  • Added missing FunctionalInterface annotation on ValueBiasedStochasticSampling.BiasFunction.

Dependencies

  • Bumped jpt from 3.1.1 to 3.3.0.

v4.7.0

2 years ago

[4.7.0] - 2022-03-16

Added

  • Factory method to LargestCommonSubgraph for creation of instances of the problem with strongly regular graphs, specifically such that the instance created consists of a pair of isomorphic Generalized Petersen Graphs.

v4.6.0

2 years ago

[4.6.0] - 2022-03-14

Added

  • Factory method QuadraticAssignmentProblem.createInstance for creating QAP instances from specified cost and distance matrices.
  • Constructor for LargestCommonSubgraph class for creating instances from lists of the edges of the two graphs.

Changed

  • Migrated all JUnit tests from JUnit 4.13.2 to JUnit Jupiter 5.8.2.

v4.5.0

2 years ago

[4.5.0] - 2022-02-22

Added

  • Implementation of the Largest Common Subgraph problem

Changed

  • Bumped dependency jpt to 3.1.1
  • Bumped dependency rho-mu to 1.2.0

v4.4.0

2 years ago

[4.4.0] - 2022-02-13

Added

  • Quadratic Assignment Problem

v4.3.0

2 years ago

[4.3.0] - 2022-02-11

Added

  • Linear Rank Selection
  • Linear Rank Stochastic Universal Sampling
  • Exponential Rank Selection
  • Exponential Rank Stochastic Universal Sampling
  • Implementation of the Bin Packing Problem, including instance generators

Changed

  • Bumped dependency org.cicirello.core to 1.1.0

v4.2.1

2 years ago

[4.2.1] - 2022-01-27

Fixed

  • Implemented the optional method, minCost, of the OptimizationProblem and IntegerCostOptimizationProblem classes in all of the various TSP implementations to return a simple, extremely loose, lower bound of 0, to enable using the InverseCostFitnessFunction class that require a finite lower bound. The default implementation of that method otherwise returns negative infinity.

v4.2.0

2 years ago

[4.2.0] - 2022-01-24

Added

  • Class RandomTSPMatrix that enables generating random instances of the Traveling Salesperson Problem (TSP) as well as the Asymmetric TSP (ATSP) by generating a random distance matrix. This new class includes the option to generate a random distance matrix that enforces the triangle inequality. The library had previously introduced a TSP class in a prior release that bases the instances on points in 2D space with a user defined metric. This new RandomTSPMatrix class compliments that class by additionally providing the ability to specify arbitrary distance matrices for a TSP instance.

Changed

  • Refactored existing Traveling Salesperson Problem classes (all non-breaking changes) to ease the addition of other variations.

CI/CD

  • Integrated Snyk code scanning on pushes/PRs.

v4.1.0

2 years ago

[4.1.0] - 2022-01-13

Added

  • Transformation between Permutation problem and BitVector problem, enabling using operators for BitVectors when solving Permutation problems.

CI/CD

  • Revised CI/CD workflows to deploy API website changes automatically upon each new release.

v4.0.0

2 years ago

[4.0.0] - 2022-01-05

CONTAINS BREAKING CHANGES

This release contains breaking changes. See the Removed list below for details. The most significant breaking changes relate to functionality initially introduced in v3.1.0, released on 12/21/2021, and thus likely affects very few users. Other breaking changes relate to removal of previously deprecated methods.

Added

  • Added GenerationalMutationOnlyEvolutionaryAlgorithm, moving the mutation-only EA functionality into this new class from the existing GenerationalEvolutionaryAlgorithm class.
  • Added GenerationalNANDOperatorsEvolutionaryAlgorithm, moving the EA functionality related to mutually-exclusive genetic operators (i.e., generation variation where each child is result of either mutation, or crossover, or identical copy of a parent, but never result of both mutation and crossover) into this new class from the existing GenerationalEvolutionaryAlgorithm class.
  • Enhanced all of the following Evolutionary Algorithm and Genetic Algorithm classes with the option to use elitism:
    • GenerationalEvolutionaryAlgorithm
    • GenerationalMutationOnlyEvolutionaryAlgorithm
    • GenerationalNANDOperatorsEvolutionaryAlgorithm
    • GeneticAlgorithm
    • MutationOnlyGeneticAlgorithm
  • Crossover operators for IntegerVector and BoundedIntegerVector classes, including:
    • Single-point crossover
    • Two-point crossover
    • K-point crossover
    • Uniform crossover
  • Crossover operators for RealVector and BoundedRealVector classes, including:
    • Single-point crossover
    • Two-point crossover
    • K-point crossover
    • Uniform crossover
  • Enhancements to IntegerVector and BoundedIntegerVector, including:
    • IntegerVector.exchange method which exchanges a subsequence between two IntegerVectors.
    • BoundedIntegerVector.sameBounds method which checks if two bounded integer vectors are subject to the same min and max values.
  • Enhancements to RealVector and BoundedRealVector, including:
    • RealVector.exchange method which exchanges a subsequence between two RealVectors.
    • BoundedRealVector.sameBounds method which checks if two bounded real vectors are subject to the same min and max values.
  • Added constructors to TSP (traveling salesperson problem) classes to enable specifying problem instance from arrays of x and y coordinates.

Changed

  • Refactored evolutionary algorithm classes to improve maintainability, and ease integration of planned future functionality.
  • Refactored ProgressTracker.update(SolutionCostPair) to simplify logic.

Removed

  • Removed all mutation-only EA functionality from the GenerationalEvolutionaryAlgorithm, moving that functionality into the new GenerationalMutationOnlyEvolutionaryAlgorithm. This was done for maintainability. It is a breaking-change, although it should affect minimal users as the GenerationalEvolutionaryAlgorithm was just introduced in v3.1.0. For those using it simply use the new GenerationalMutationOnlyEvolutionaryAlgorithm class where you will find all the same constructors and methods necessary for mutation-only EAs.
  • Removed all mutually-exclusive genetic operator functionality from the GenerationalEvolutionaryAlgorithm, moving that functionality into the new GenerationalNANDOperatorsEvolutionaryAlgorithm. This was done for maintainability. It is a breaking-change, although it should affect minimal users as the GenerationalEvolutionaryAlgorithm was just introduced in v3.1.0. For those using it simply use the new GenerationalNANDOperatorsEvolutionaryAlgorithm class where you will find that functionality.
  • All methods/constructors that were previously deprecated in earlier releases have now been removed, including:
    • The following deprecated methods of the ProgressTracker class have been removed:
      • update(int, T) in favor of using update(int, T, boolean).
      • update(double, T) in favor of using update(double, T, boolean).
      • setFoundBest() in favor of using either update(int, T, boolean) or update(double, T, boolean).
    • The following deprecated constructors of the SolutionCostPair class have been removed:
      • SolutionCostPair(T, int) in favor of using SolutionCostPair(T, int, boolean)
      • SolutionCostPair(T, double) in favor of using SolutionCostPair(T, double, boolean)