The Optimization Algorithm Toolkit (OAT) is a workbench and toolkit for developing, evaluating,
experimenting, and playing with classical and state-of-the-art optimization algorithms on standard
benchmark problem domains. The software includes reference algorithm implementations, graphing, visualizations, and much more.
OAT provides a functional computational intelligence library for investigating existing algorithms and problems,
as well as implementing new problems and algorithms. Built on top of this library is a simple explorer and
experimenter graphical user interface to provide a basic understanding of the functionality in the library.
The goal of the library is to facilitate best practice of algorithm, problem, and experiment design and implementation,
as well as software engineering principles. The graphical user interface provide non-technical access for configuring
and visualizing existing techniques on standard benchmark problem instances.
As such, OAT may be considered from three core perspectives: Domains that support reference algorithm and problem
instance implementations, Explorer that provides a simple interface for configuring problem and algorithm instances
for domains and exploring behaviors via general and domain-specific visualizations, and the Experimenter that provides
a simple interface for configuring sets of algorithms and problem instances for execution and statistical analysis.
OAT is designed for three core classes of user:
Interested Amateurs that may, or may not have training in
artificial intelligence and computer science, and that are interested in playing with algorithms and problems in the
explorer and experimenter graphical user interfaces.
Software Developers that may be interested in integrating
the algorithms and problems into their own software, implementing their own techniques, or exploiting the framework
and tools for new domains.
Research Scientists that may use both the graphical user interfaces and
application programming interfaces toward research ends.
Algorithms are focused on computational intelligence optimisation algorithms
(a.k.a. machine learning, metaheuristics, or artificial intelligence). These include but are not limited to: evolutionary computation, evolutionary programming,
genetic algorithms, niching genetic algorithm (crowding and fitness sharing), evolution strategies, differential evolution, clonal selection, immune algorithm, simulated annealing,
particle swarm optimization, hill climbing algorithm, ant colony optimization, ant system, ant colony system,
greedy search, random search, and extremal optimization.
Problems are focused on optimisation including but not limited to: continuous function optimization
(non-linear programming), combinatorial optimization, traveling salesman problem, protein folding (protein structure prediction),
binary function optimization, graph coloring problem, binary character recognition. Each general class of problem
has many standard benchmark problem instances.
Statistical Tools are provided for statistical hypothesis testing including:
normality tests (such as the anderson-darling test, cramer-von-mises criterion, and the kolmogorov-smirnov test),
and population comparison tests (such as one-way analysis of variance (ANOVA), kruskal-wallis test, independant
student's t-test and the mann-whitney u-test).
Interfaces include a fully feature application programming interface as well as graphical
user interfaces for both exploring and experimenting with algorithms and problems. Also included are unit tests and
example code for developers.
Licensing is open source under the GNU
Lesser General Public License (LGPL) version 3.