Skip to content

Releases: cicirello/Chips-n-Salsa

Chips-n-Salsa, v2.9.0

20 Mar 16:59
49bcba1
Compare
Choose a tag to compare

[2.9.0] - 2021-3-20

Added

  • Added an implementation of the TwoMax problem.
  • Added an implementation of a variation of the TwoMax problem, but
    with two global optima, unlike the original version which has one
    global and one sub-optimal local optima.
  • Added an implementation of Ackley's Trap function, an artificial
    search landscape with one global optima, and one sub-optimal local
    optima, where most of the search space is within the attraction basin
    of the local optima.
  • Added an implementation of Ackley's Porcupine function, an artificial
    search landscape with one global optima, and an exponential number of
    local optima, a very rugged landscape.

Chips-n-Salsa, v2.8.0

05 Mar 19:33
f401011
Compare
Choose a tag to compare

[2.8.0] - 2021-3-5

Added

  • Added AcceptanceTracker, which provides a mechanism for extracting
    information about the behavior of an annealing schedule across a
    set of runs of simulated annealing.
  • Added CostFunctionScaler, which enables scaling the cost function of
    an optimization problem by a positive constant, such as if you want to
    explore the effects of the range of a cost function on a stochastic local
    search algorithm by scaling a cost function with a known range.
  • Added IntegerCostFunctionScaler, which enables scaling the cost function of
    an optimization problem by a positive constant, such as if you want to
    explore the effects of the range of a cost function on a stochastic local
    search algorithm by scaling a cost function with a known range. This class
    is just like CostFunctionScaler but for problems with integer costs.

Chips-n-Salsa, v2.7.0

25 Feb 15:37
2a4af65
Compare
Choose a tag to compare

[2.7.0] - 2021-2-25

Added

  • Added HybridConstructiveHeuristic, which provides the ability
    to use multiple heuristics with a stochastic sampling search,
    where a heuristic is chosen from a set of constructive heuristics
    at the start of each iteration of the stochastic sampler and used
    for all decisions made during that iteration. The class supports the
    following strategies for selecting the next heuristic:
    • Heuristic uniformly at random from among the available heuristics.
    • Heuristic chosen using a round robin strategy that systematically cycles
      over the heuristics.
    • Heuristic chosen via a weighted random selection process.
  • Added versions of a few constructive heuristics for
    scheduling problems that precompute heuristic values
    upon construction of the heuristic. Many of the scheduling
    heuristic implementations already do this, where it is
    possible to do so, provided the memory and time requirements
    for precomputing heuristic values is linear in the number
    of jobs. Some heuristics that consider setup times, however,
    need quadratic memory if the heuristic is precomputed prior
    to running the search. The existing implementations of these
    compute the heuristic as it is needed during the search,
    which means for a stochastic sampler with many iterations
    that the same heuristic values will be computed repeatedly.
    We've added versions of these that precompute the heuristic
    values so that if your problem is small enough to afford the
    quadratic memory, and if you will be running enough iterations
    of the stochastic sampler to afford the quadratic time of
    this precomputation step, then you can choose to use a
    precomputed version.
    • A scheduling heuristic, SmallestSetupPrecompute, which is
      a version of SmallestSetup, but which precomputes a table
      of heuristic values to avoid recomputing the same heuristic
      values repeatedly across multiple iterations of a stochastic
      sampling search.
    • A scheduling heuristic, ShortestProcessingPlusSetupTimePrecompute, which is
      a version of ShortestProcessingPlusSetupTime, but which precomputes a table
      of heuristic values to avoid recomputing the same heuristic
      values repeatedly across multiple iterations of a stochastic
      sampling search.
    • A scheduling heuristic, WeightedShortestProcessingPlusSetupTimePrecompute, which is
      a version of WeightedShortestProcessingPlusSetupTime, but which precomputes a table
      of heuristic values to avoid recomputing the same heuristic
      values repeatedly across multiple iterations of a stochastic
      sampling search.

Changed

  • Dependency updated to JPT v2.4.0.

Chips-n-Salsa, v2.6.0

25 Jan 21:05
b2c2bc6
Compare
Choose a tag to compare

[2.6.0] - 2021-1-25

Added

  • A factory method, ConstantRestartSchedule.createRestartSchedules, for creating multiple restart schedules.
  • Factory methods, VariableAnnealingLength.createRestartSchedules, for creating multiple restart schedules.
  • Factory methods, LubyRestarts.createRestartSchedules, for creating multiple restart schedules.

Changed

  • Refactored TimedParallelMultistarter and TimedParallelReoptimizableMultistarter to eliminate redundancy in common with these two classes.
  • Refactored ParallelMultistarter and ParallelReoptimizableMultistarter to eliminate redundancy in common with these two classes.
  • Eliminated code redundancy between ParallelReoptimizableMultistarter and TimedParallelReoptimizableMultistarter.

Removed

  • Javadoc's zipped versions of the api doc search index (and added to gitignore). The search feature on the API website will still be functional as it uses the unzipped versions as a fallback. The web server should compress these anyway. From Java 15 onward, they eliminated the generation of the zipped versions all together. We're removing them here since the api website is hosted from GitHub Pages, and git detects these as changed every time javadoc runs even if the index has not actually changed, and binary files are not efficiently stored in git.

Fixed

  • Minor documentation edits to clarify details of annealing schedules (ModifiedLam, OriginalModifiedLam, and SimulatedAnnealing classes).

Chips-n-Salsa, v2.5.2

11 Nov 20:58
d28d486
Compare
Choose a tag to compare

[2.5.2] - 2020-11-11

Fixed

  • Various minor bug fixes:
    • Fixed bugs in factory methods of the uniform mutation operator, the Cauchy mutation operator, and the Gaussian mutation operator for real-valued representations related to checking for invalid parameters.
    • Fixed bug in toArray method of uniform mutation operator, the Cauchy mutation operator, and the Gaussian mutation operator in case when null passed to method.
    • Fixed bug in IntegerVectorInitializer.split().

Chips-n-Salsa, v2.5.1

05 Nov 17:00
2cffe88
Compare
Choose a tag to compare

[2.5.1] - 2020-11-5

Changed

  • Refactored ParallelVariableAnnealingLength to eliminate redundant code.
  • Refactored constructors of window limited permutation mutation operators to eliminate redundant code.
  • Refactored BlockMoveIterator, WindowLimitedBlockMoveIterator, and BlockInterchangeIterator to remove unnecessary conditions.
  • Refactored internal methods of IntegerVectorInitializer to remove unnecessary checks.

Fixed

  • Various minor bug fixes:
    • Fixed bug in WeightedHybridMutation's and WeightedHybridUndoableMutation's constructors in the check for non-positive weights.
    • Fixed bug in window limited permutation mutation operators in handling of limit greater than or equal to permutation length.
    • Fixed missing parameter bounds check in LubyRestarts constructor.
    • Fixed bugs in factory methods of the uniform mutation operator for integer-valued representations related to checking for invalid parameters.
    • Fixed bugs in equals methods for bounded integer-valued representations in case when vectors contain same elements, but constrained by different bounds.
    • Fixed bug in IntegerVectorInitializer.split().

Chips-n-Salsa, version 2.5.0

02 Nov 19:05
8462ec8
Compare
Choose a tag to compare

[2.5.0] - 2020-11-2

Added

  • EXPET heuristic, a constructive heuristic for common duedate scheduling problems.

Changed

  • Minor optimizations in scheduling problem classes (heuristics and cost functions).

Fixed

  • Fixed bug in parallel searches involving handling exceptions thrown by component searches.
  • Added missing parameter checks in constructors of parallel metaheuristic implementations.
  • Added missing parameter bounds check in LINET scheduling heuristic implementation.
  • Added test cases to improve coverage.

CI/CD

  • Code coverage reporting, via JaCoCo, added to build process.

Chips-n-Salsa, version 2.4.1

15 Oct 17:14
9273eb1
Compare
Choose a tag to compare

[2.4.1] - 2020-10-15

Fixed

  • Bug in release workflow: attaching jars to GitHub Release.

Chips-n-Salsa, version 2.4.0

15 Oct 17:01
8323ff5
Compare
Choose a tag to compare

[2.4.0] - 2020-10-15

Added

  • VBSS support for exponential bias functions.

Changed

  • Build process migrated from Ant to Maven.
  • Improved formatting of description field in pom.xml.

Removed

  • The example programs have been removed from the Chips-n-Salsa repository, and now reside in their own dedicated repository: https://github.com/cicirello/chips-n-salsa-examples
  • Distribution jar files removed from repository. The distribution jars are available via GitHub Releases, GitHub Packages, and Maven Central.

Chips-n-Salsa, version 2.3.0

13 Oct 14:10
f7f1388
Compare
Choose a tag to compare

[2.3.0] - 2020-10-13

Added

  • Problem instance generator for Common Duedate Scheduling, based on the method used to generate the instances from the OR-Lib.
  • Parser for the file format specified in OR-Lib for the Common Duedate Scheduling benchmarks.
  • WLPT heuristic, a constructive heuristic for common duedate scheduling problems.
  • LINET heuristic, a constructive heuristic for common duedate scheduling problems.