Open Source Research Software
On this page, you will find information about my open source research software. This includes software implemented as part of my research on evolutionary computation, artificial intelligence, machine learning, and algorithms, including Java libraries for evolutionary computation and other metaheuristics, and code to reproduce experimental results from my published papers. It is organized into the following sections:
You can find my research software at the following sites:
Research Software Libraries
The following is a list of my research software that I have released in the form of libraries and frameworks to enable ease of reuse by others.
- Chips-n-Salsa - 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. The library most 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. 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.
- JavaPermutationTools: A Java library for computation on permutations and sequences: The JavaPermutationTools (JPT) library provides Java classes that enable representing and generating permutations and sequences, as well as performing computation on permutations and sequences, such as implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types).
- ρμ: A Java library of Randomization enHancements and Other Math Utilities: ρμ includes implementations of various algorithms for efficiently randomly sampling combinations of indexes into arrays and other sequential structures. 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 which are needed by some of our other projects.
- org.cicirello.core: A Java library of utilities and data structures: This library provides some of the core utilities and data structures used in several of our other libraries and projects, including but not limited to Chips-n-Salsa and JavaPermutationTools, as well as various projects that use those libraries.
- Ziggurat Gaussian: Java implementation of the Ziggurat algorithm for generating Gaussian distributed random numbers.
- Performance Tests for Small Clusters: Code developed to test the performance of a small 8 node cluster of raspberry pis. Implementations of a few simple parallel algorithms for testing the performance of a small cluster. Uses Java RMI for communication between master node and the worker nodes. Also includes useful bash scripts such as for starting the RMI servers on the worker nodes, shutting down and rebooting worker nodes from the master node, etc.
Top of the page
Reproducible Research Results
The following is a list of software that can be used to reproduce the experimental results from some of my published journal articles and conference papers.
- cycle-mutation-experiments: Experiments with the new cycle mutation operator.
- self-tuning-lam-experiments: Experiments with simulated annealing using the Self-Tuning Lam annealing schedule, comparing its behavior and performance with that of the Modified Lam annealing schedule.
- modified-lam-experiments: Experiments with simulated annealing and an optimized version of the modified lam adaptive annealing schedule.
Top of the page