Skip to content

Chips-n-Salsa, v3.0.0

Compare
Choose a tag to compare
@cicirello cicirello released this 25 Oct 20:04
· 1210 commits to master since this release
da5035f

[3.0.0] - 2021-10-25

Added

  • Implementation of the Traveling Salesperson Problem (class TSP), with the following features:
    • Generates random instances with cities distributed uniformly at random within a square.
    • Defaults to Euclidean distance, but also supports specifying a function for edge distance.
    • Two variations with a precomputed matrix of edge costs: floating-point costs, and integer costs,
      where the integer cost version by default rounds each edge cost to nearest int, but which can be
      customized. These use quadratic memory.
    • Two variations where edge costs are computed as needed: floating-point costs, and integer costs,
      where the integer cost version by default rounds each edge cost to nearest int, but which can be
      customized. These use linear memory.

Changed

  • Beginning with release 3.0.0, the minimum supported Java version is now Java 11+.
  • The randomization utilities for generating Gaussian-distributed random numbers, previously
    contained in the package org.cicirello.math.rand has been moved to a new
    library ρμ, which is a transitive dependency (via
    our dependency on JPT).
  • Refactored GaussianMutation to improve maintainability by eliminating dependence upon a
    specific algorithm for generating Gaussian distributed random numbers.
  • The library now uses Java modules, providing the module org.cicirello.chips_n_salsa, which
    includes the package org.cicirello.search and all of its very many subpackages.
    • The required dependent module org.cicirello.jpt is declared with requires transitive
      because the Permutation class from one of the packages of that module is a parameter
      and/or returned by a variety of methods such as operators that manipulate permutations.
      As a consequence, projects that include Chips-n-Salsa as a dependency will also include JPT
      and its dependencies. User's dependency manager should handle this.
  • Changed the default annealing schedule in the SimulatedAnnealing class to the Self-Tuning Lam
    adaptive schedule of Cicirello (2021), which is implemented in class SelfTuningLam.

Other

  • Reorganized directory hierarchy to the Maven default (we had been using a custom directory
    hierarchy for quite some time from before we switched to Maven).