Chips-n-Salsa is a Java library that provides customizable, hybridizable, iterative, parallel, stochastic, and self-adaptive local search algorithms. It includes various stochastic local search algorithms like simulated annealing, hill climbers, and constructive search algorithms such as stochastic sampling. The library also supports genetic algorithms and evolutionary algorithms. It extensively supports simulated annealing and provides classes for representing solutions to optimization problems. The library offers mutation operators and crossover operators for generating random neighbors and use with evolutionary algorithms. It supports permutation optimization problems and utilizes the Permutation class from the JavaPermutationTools (JPT) library.
Chips-n-Salsa requires Java 17 or later versions. The library's versioning scheme follows Semantic Versioning.
The Chips-n-Salsa library is built using Maven. Use the provided Maven pom.xml file to build the library. Running
mvn package at the root of the repository will compile all classes, run tests, generate jar files,
and produce build outputs in the target directory. To enable a code coverage report, use
mvn package -Pcoverage.
Static analysis tools can be executed with
mvn package -Panalysis.
Example programs demonstrating library usage are available in a separate repository named cicirello/chips-n-salsa-examples. The examples provide detailed comments within the source code.
Chips-n-Salsa provides a Java module, org.cicirello.chips_n_salsa. If your project uses modules, you can add this module to your module-info.java file. Additionally, the chips_n_salsa module requires the org.cicirello.jpt module for permutational problems optimization.
Prebuilt artifacts are regularly published to Maven Central, GitHub Packages, and JitPack. To import from Maven Central, add the dependency to your pom.xml file. If importing from GitHub Packages or JitPack, follow the instructions provided and adjust your repositories section accordingly. Jar files can also be downloaded manually from GitHub Releases.
The Chips-n-Salsa library is licensed under the GNU General Public License 3.0.
If you would like to contribute to Chips-n-Salsa, please refer to the contribution guidelines and the Contributor Covenant Code of Conduct.