Releases: cicirello/Chips-n-Salsa
Releases · cicirello/Chips-n-Salsa
Chips-n-Salsa, v2.9.0
[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
[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
[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.
- A scheduling heuristic, SmallestSetupPrecompute, which is
Changed
- Dependency updated to JPT v2.4.0.
Chips-n-Salsa, v2.6.0
[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
[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
[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
[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
[2.4.1] - 2020-10-15
Fixed
- Bug in release workflow: attaching jars to GitHub Release.
Chips-n-Salsa, version 2.4.0
[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
[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.