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.
- Project page, including API documentation.
- Source code: GitHub Repository
- Latest release:
- Repository of example programs illustrating usage of the library.
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- 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).
- Project page, including API documentation.
- Source code: GitHub Repository
- Latest release:
- Repository of example programs illustrating usage of the library.
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- ρμ: 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.
- Project page, including API documentation.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- 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.
- Project page, including API documentation.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- Ziggurat Gaussian: Java implementation of the
Ziggurat algorithm for generating Gaussian distributed random numbers.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- 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.
- Source code: GitHub Repository
- Zip of Java source.
- License: GNU General Public License Version 3 (GPLv3).
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.
- Code to reproduce the experiments of:
.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- Code to reproduce the experiments of:
- 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.
- Code to reproduce the experiments of:
.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- Code to reproduce the experiments of:
- modified-lam-experiments: Experiments with
simulated annealing and an optimized version of the modified
lam adaptive annealing schedule.
- Code to reproduce the experiments of:
.
- Source code: GitHub Repository
- Latest release:
- Language: Java
- License: GNU General Public License Version 3 (GPLv3).
- Code to reproduce the experiments of: