Chips-n-Salsa · Chips-n-Salsa is a Java library of customizable, hybridizable, iterative, parallel, stochastic, and self-adaptive local search algorithms. The library includes implementations of several stochastic local search algorithms, including simulated annealing, hill climbers, as well as constructive search algorithms such as stochastic sampling. Chips-n-Salsa now also includes genetic algorithms as well as evolutionary algorithms more generally. The library very extensively supports simulated annealing. It includes several classes for representing solutions to a variety of optimization problems. For example, the library includes a BitVector class that implements vectors of bits, as well as classes for representing solutions to problems where we are searching for an optimal vector of integers or reals. For each of the built-in representations, the library provides the most common mutation operators for generating random neighbors of candidate solutions, as well as common crossover operators for use with evolutionary algorithms. Additionally, the library provides extensive support for permutation optimization problems, including implementations of many different mutation operators for permutations, and utilizing the efficiently implemented Permutation class of the JavaPermutationTools (JPT) library. Chips-n-Salsa is customizable, making extensive use of Java's generic types, enabling using the library to optimize other types of representations beyond what is provided in the library. It is hybridizable, providing support for integrating multiple forms of local search (e.g., using a hill climber on a solution generated by simulated annealing), creating hybrid mutation operators (e.g., local search using multiple mutation operators), as well as support for running more than one type of search for the same problem concurrently using multiple threads as a form of algorithm portfolio. Chips-n-Salsa is iterative, with support for multistart metaheuristics, including implementations of several restart schedules for varying the run lengths across the restarts. It also supports parallel execution of multiple instances of the same, or different, stochastic local search algorithms for an instance of a problem to accelerate the search process. The library supports self-adaptive search in a variety of ways, such as including implementations of adaptive annealing schedules for simulated annealing, such as the Modified Lam schedule, implementations of the simpler annealing schedules but which self-tune the initial temperature and other parameters, and restart schedules that adapt to run length.
Group: org.cicirello - All Dependencies
JavaPermutationTools · JavaPermutationTools (JPT) is a library for computation on permutations and sequences. JPT provides Java classes that enable representing and generating permutations and sequences, as well as performing computation on permutations and sequences. It includes implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types).
rho mu · The rho mu library is a library of Randomization enHancements and Other Math Utilities. It includes implementations of various algorithms for randomly sampling indexes into arrays and other sequential structures, randomly sampling pairs and triples of unique indexes, randomly sampling k indexes, etc. It also includes efficient implementations of random number generation from distributions other than uniform, such as Gaussian, Cauchy, etc. Additionally, it includes implementations of other math functions that are either needed by the randomization utilities, or needed by some of our other projects.
core · This library provides some of the core utilities and data structures used in several of our other libraries and projects.
Chips-n-Salsa Example Programs · This package contains several example programs of the usage of the Chips-n-Salsa library. Chips-n-Salsa is a Java library of customizable, hybridizable, iterative, parallel, stochastic, and self-adaptive local search algorithms. Chips-n-Salsa's source code is maintained on GitHub, and the prebuilt jars of the library can be imported from Maven Central using maven or other build tools. The purpose of the package chips-n-salsa-examples is to demonstrate usage of the major functionality of the Chips-n-Salsa library. You can find out more about the Chips-n-Salsa library itself from its website: https://chips-n-salsa.cicirello.org/.
Ziggurat Gaussian · Java implementation of the Ziggurat algorithm for generating Gaussian distributed pseudorandom numbers. The Ziggurat algorithm is significantly faster than the more commonly encountered Polar method, and has some other desirable statistical properties. The ZigguratGaussian class is a Java port of the GNU Scientific Library's C implementation (Voss, 2005) of the Ziggurat method. In porting to Java, we have made several optimizations, the details of which can be found in the source code comments, which highlights any differences between this Java implementation and the C implementation on which it is based. This package also includes an implementation of the Polar Method, included to enable comparing speed advantage of the Ziggurat algorithm.
modified-lam-experiments · This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following journal article: Vincent A. Cicirello. 2020. Optimizing the Modified Lam Annealing Schedule. Industrial Networks and Intelligent Systems, 7(25), Article e1 (December 2020). https://doi.org/10.4108/eai.16-12-2020.167653. The full text of this article is also available at: https://www.cicirello.org/publications/eai.16-12-2020.167653.pdf.
JavaPermutationTools (JPT) Example Programs · This package contains several example programs of the usage of the JavaPermutationTools (JPT) library. JPT is a Java library that enables representing and generating permutations and sequences, as well as performing computation on permutations and sequences. It includes implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types). In addition to programs demonstrating the usage of the JPT library, the jpt-examples package also contains programs for replicating the experiments from a few published papers that utilized the library or implementations on which the library is based. JPT's source code is maintained on GitHub, and the prebuilt jars of the library can be imported from Maven Central using maven or other build tools. The purpose of the package jpt-examples is to demonstrate usage of the major functionality of the JPT library. You can find out more about the JPT library itself from its website: https://jpt.cicirello.org/.
Interactive Bin Packing Application · The Interactive Bin Packing Application provides a self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics for bin packing. It also enables the user to interact with bin packing instances to explore their own problem solving strategies, or to test their knowledge of the various constructive heuristics covered by the tutorial. The application is not a solver for bin packing. The Interactive Bin Packing Application is a tool for learning about the bin packing problem, as well as for learning about heuristic techniques for solving instances of the problem.
Experiments with the Self-Tuning Lam Annealing Schedule · This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following article: Vincent A. Cicirello. 2021. Self-Tuning Lam Annealing: Learning Hyperparameters While Problem Solving. Applied Sciences, 11, 21, Article 9828 (November 2021). https://doi.org/10.3390/app11219828. Also available at: https://www.cicirello.org/publications/applsci-11-09828.pdf
Experiments with the new cycle mutation operator · This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following article: Vincent A. Cicirello. 2022. Cycle Mutation: Evolving Permutations via Cycle Induction. Applied Sciences, 12, 11, Article 5506 (June 2022). https://doi.org/10.3390/app12115506. Also available at: https://www.cicirello.org/publications/applsci-12-05506.pdf
Experiments for article in the journal MONE 2022 · This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following article: Cicirello, V.A. On Fitness Landscape Analysis of Permutation Problems: From Distance Metrics to Mutation Operator Selection. Mobile Networks and Applications (2022). https://doi.org/10.1007/s11036-022-02060-z.
An Analysis of an Open Source Binomial Random Variate Generation Algorithm · This package contains Java code to reproduce the experiments of the following article: Vincent A. Cicirello. 2023. An Analysis of an Open Source Binomial Random Variate Generation Algorithm, Engineering Proceedings, 56(1), Article 86, October 2023. doi:10.3390/ASEC2023-15349.
Experiments for: A Survey and Analysis of Evolutionary Operators for Permutations (Vincent A. Cicirello, 2023) · This package contains Java code to reproduce the experiments of the following conference paper: Vincent A. Cicirello. 2023. A Survey and Analysis of Evolutionary Operators for Permutations. Proceedings of the 15th International Joint Conference on Computational Intelligence, pages 288-299. https://doi.org/10.5220/0012204900003595.