Skip to content

kdis-lab/LEAC

Repository files navigation

LEAC - Library Evolutionary Algorithms for Clustering

What is LEAC library?

Library Evolutionary Algorithms for Clustering (LEAC) is a library of genetic algorithms to solve the problem of partition clustering. It includes 22 classification genetic algorithms for solving partitional clustering. These are considered the state-of-the-art of mono-objective genetic algorithms in the area.

LEAC is a modular library that facilitates the development of new proposals for evolutionary algorithms to solve partitional clustering. Besides including the most representative proposals of Evolutionary Algorithms for partitional clustering. LEAC allows you to implement easily new evolutionary algorithm proposals for clustering using the classes developed in the library. Thus, new algorithms can use the diversity of proposed strategies, procedures, and genetic operators included in the library to evolve the population according to the flowchart of these algorithms.

LEAC is built in C ++ with the current standards of C++11, C++14. Take advantage of the STL library, through the use of data structures and algorithms, for example, the Numerics library of Pseudo-random number generation which is fundamental in the genetic and evolutionary algorithms. An additional feature that LEAC has is a low-level software layer based on Streaming SIMD Extensions (SSE) and in the OpenBLAS library, in order to increase performance. For now, only for Linux x86_64, for future versions, it is intended to port to other architectures and increase the number of genetic operators implemented with these software layers.

Library description

LEAC library is based on a layered software architecture composed of four layers: algorithms, EA, Clustering, and Performance. Each layer consists of a set of related packets as shown in the image. image

  • Algorithm: It contains the final implementations of several evolutionary algorithms for clustering.
  • EA: It contains several packets with operators and strategies to configure EAs, such as encoding criteria, initialization methods, selection methods, crossover, and mutation operators, and updating and replacement strategies.
  • Clustering: It contains several packets with specific clustering operators, such as supervised and unsupervised performance measures and clustering operators based on centroids, crisp matrix or medoids.
  • Performance: It consists of low-level programmed functions under the current CPU architectures.

Getting the library

The project can be download in this repository. Detailed information about getting and running the library can be consulted in user's manual where all dependencies and libraries necessaries are commented.

Tutorials and documentation

LEAC user's manual can be found in the main directory of this repository and includes:

  • Detailed steps for getting and running the library.
  • A description of LEAC library architecture.
  • Examples for developing a new Evolutionary Algorithm in the library.
  • Examples for running an Evolutionary Algorithm included in the library
  • Examples for carrying out an experimental study with Evolutionary algorithms included in the library.

LEAC API can be found in the docs folder.

Methods included

LEAC includes several implementations of evolutionary algorithms for partitional clustering which are based on state-of-art of evolutionary proposals in this area. Following the taxonomy given by Hruschka et al., a first classification of these algorithms is carried out according to the use of fixed or variable number initial of clusters. Concretely, the algorithms included are:

Library data format

The format of arff data based on the Weka's format

Citation

Robles-Berumen, H., Zafra, A., Fardoun, H. M., & Ventura, S. (2019). LEAC: An efficient library for clustering with evolutionary algorithms. Knowledge-Based Systems, 179, 117-119. https://doi.org/10.1016/j.knosys.2019.05.008

License

The tools is free and open source, under the GNU General Public GPLv3 license [License file], for Windows®, GNU/Linux® and Mac OS X®.

Reporting bugs

Feel free to open an issue at Github if anything is not working as expected. Merge request are also encouraged, it will be carefully reviewed and merged if everything is all right.