Skip to content
Jasmin Leveille edited this page Jul 7, 2014 · 15 revisions

Adaptics

Adaptics is a family of applications and libraries related to machine learning, computer vision and artificial evolution. Most of the code base is in C++, although additional tools are provided that are written in other languages, and a number of third party libraries are written in C. Since this project is somewhat explorative in nature, the API for the various libraries is kept as open as possible.

Contributing

Email me if you are interested in contributing (Jasmin Leveille at jalev51@gmail.com).

Documentation

DOxygen documentation for all three libraries is available on the associated gh-page.

Requirements

The software is developed and tested only on Ubuntu 12.04. The following packages need to be installed on the system:

  • Linux OS
  • FFTW, necessary to compute convolution filters via the FFT.
  • Boost C++ Libraries v1.37+ [HEADERS and LIBRARIES], used mainly for argument parsing and unit testing.
  • log4cxx used for logging
  • Cross-platform Make (CMake) v2.6.2+
  • GNU Make or equivalent
  • GCC or an alternative, reasonably conformant C++ compiler

Project template adapted from Michael Safyan's cpp-project-template (http://code.google.com/p/cpp-project-template/). Unlike the original template, boost's unit test framework is used instead of UnitTest++, QT is not necessary, and the project can be used to build a family of both libraries and applications.

Building

  • Clone the repository (see github page for link)
  • Move into build directory (type 'cd build')
  • Source environment file (type 'source ../tools/share/adaptics.env')
  • Build makefiles for all libraries and applications (type 'cmake ..')
  • Build all libraries and applications (type 'make')

This project uses the Cross-platform Make (CMake) build system. However, we have conveniently provided a wrapper configure script and Makefile so that the typical build invocation of "./configure" followed by "make" will work. For a list of all possible build targets, use the command "make help".

NOTE: Users of CMake may believe that the top-level Makefile has been generated by CMake; it hasn't, so please do not delete that file.

Tools

The following useful scripts are included in the tools folder:

  • run_unit_test A Python script that runs unit tests across all libraries and applications.
  • adaptics.env Contains necessary environment definitions for building. Source this file prior to building.

Applications

  • abamapp demonstrates the use of a stackable, dynamical, continuous-time, bipartite neural network, according to Kosko, B. (1987). Adaptive bidirectional associative memories. Applied Optics, 26, 4947-4960. The network supports correlational learning.

  • formotionapp implements the model in Grossberg et al. (2011). How do object reference frames and motion vector decomposition emerge in laminar cortical circuits? Attention, Perception and Psychophysics, 73, 1147-1170.

  • RoyalRoadapp demonstrates the use of Royal Road functions to study evolution. Royal Road functions were first introduced in Mitchell et al. (1992). The royal road for genetic algorithms: Fitness landscapes and GA performance. in F.J Varela and P. Bourgine (eds), Toward a Practice of Autonomous Systems: Proceedings of the First European Conference on Artificial Life, 245-254. Cambridge, MA: MIT Press.

  • graycodeapp demonstrates the use of Gray coding (in which consecutive numbers are encoded in bit sequences with minimal number of bits that differ). Gray coding can be useful in artificial evolution where, for example, real-valued numbers are to be encoded in bit sequences such that mutating bits at different locations in a sequence would have led to uneven changes in the encoded number.

Libraries

The software includes three libraries: learn, vision and evo.

learn

This library contains various pieces of code related to learning.

vision

This library contains code for visual processing.

evo

This library contains code for artificial evolution.

Included third party packages

A number of third party packages are included as part of the distribution:

  • Template Numerical Toolkit (TNT) A low-level container library developed at NIST.
  • JAMA/C++ A linear algebra package also developed at NIST.
  • tinyxml A simple XML parser, available here.
  • boxmuller A piece of code that implements the polar form of the Box-Muller transformation to generate Gaussian random numbers, written by Everett F. Carter Jr., and described here.
  • mt An implementation of the Mersenne-Twister random number generator by M. Matsumoto and T. Nishimura.