/TensorCRO

TensorCRO: A Tensorflow-based implementation of the Coral Reef Optimization algorithm.

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

TensorCRO: A Tensorflow-based implementation of the Coral Reef Optimization algorithm.

Table of contents

  1. About
  2. What's new?
  3. Install
  4. Usage

About

Implementation author:     A.Palomo-Alonso (alberto.palomo@uah.es) 
Original Algorithm author: S.Salcedo-Sanz  (sancho.salcedo@uah.es)
Universidad de Alcalá (Madrid - Spain). Escuela Politécnica Superior
Signal Processing and Communications Department (TDSC)

This is a Tensorflow-based implementation of the Coral Reef Optimization algorithm. The algorithm is implemented as a Tensorflow graph, which allows to run it in GPU and TPU. The algorithm is implemented as a set of substrate layers that can be combined with other algorithms such as Differential Evolution, Harmony Search and Random Search. The framework also allows to implement crossover operators as blxalpha, gaussian, uniform, masked and multipoint.

The framework also includes a Jupyter Notebook with an example of use of the algorithm.

What's new?

1.0.0

  1. First release.
  2. CRO-SL: Coral Reef Optimization algorithm with substrate layers.
  3. GPU runnable: The algorithm can be run in GPU and TPU as a graph, with +``x2` speed-up over the conventional implementations.
  4. Substrate crossovers: The framework allows to implement crossover operators as blxalpha, gaussian, uniform, masked and multipoint.
  5. Algorithms: The framework allows to implement algorithms as substrate layers such as Differential Evolution, Harmony Search and Random Search.
  6. Watch Replay: The algorithm also allows to watch the replay of the solutions found in the training process, with an interactive GUI.
  7. Jupyter Notebook: The framework includes a Jupyter Notebook with example of use for the Max-Ones-From-Zeros problem.

1.2.0

  1. Progress bar: The framework now also includes a progress bar to monitor the training process.
  2. Minor bug fixing.
  3. Jupyter Notebook: The framework includes a Jupyter Notebook with example of use for the Max-Ones-From-Zeros problem.

1.2.1

  1. Major bug fixing.
  2. Auto-format of parameter specs.

1.3.0

  1. Major bug fixing.
  2. Now the fitness function can be a non-compilable function.
  3. Now you can watch the training process while running.
  4. The initialization of the reef now only take alive corals as inputs. (Major bug)

2.0.0

  1. Major bug fixing.
  2. Added new optimization algorithms as substrates: PSO and SA.
  3. Now TensorCRO can implement any stateful optimization algorithm as a substrate as long as it does not require fitness evaluations.
  4. Sharding rework: Now shards parameter in fit() method is the number of divisions of the optimization method.
  5. Implemented callbacks feature: callable after each shard.
  6. Minimization bug fix.
  7. Optional compilation of fitness function.
  8. Notebook tutorial update.
  9. Added autoclip after calling substrates.

2.1.0

  1. Implemented SlackBot, a real-time monitoring tool for TensorCRO and backup tool for the results.

2.2.0

  1. Now Mutation is normalized to the range of the parameter specs.
  2. Installation bug fixing (tmp not included for warch replay)

2.2.2

  1. Solved fig bug for slackbot.

2.3.0

  • Adding new algorithms as substrates:
  1. EDA substrate added.
  2. Energy reduction substrate added.
  3. Energy augmentation substrate added.
  4. Piece loss substrate added.
  5. Piece gain substrate added.
  6. Coordinate descent substrate added.
  7. Added permutation crossover substrate.
  • Added new callback for fitness tracing.

3.2.1

  1. Major bug fixing.
  2. Module access bug fixing.
  3. Updated to stable version.
  4. Permutation not working on compile, set up as experimental.
  5. Mutation bug fix, clipping output.

Install

To install it you must install the dependencies. Then, you can install the package with the following command using PIP:

pip install tensorcro

Or you can clone the repository and install it with the following commands using Git:

git clone https://github.com.iTzAlver/TensorCRO.git
cd TensorCRO/dist/
pip install ./tensorcro-1.2.0-py3-none-any.whl

Requirements

  • Python 3.6 or higher
  • Tensorflow 2.0 or higher
  • Numpy 1.18.1 or higher
  • Matplotlib 3.1.3 or higher
  • Pandas 1.0.1 or higher
  • CUDA for GPU support (optional but strongly recommended)

Usage:

We have a JuPyter Notebook with an example of use of the algorithm. You can find it in the folder /multimedia/notebooks of the repository.

Cite:

If you use this code, please cite the following paper:

@article{https://doi.org/10.1111/exsy.13713,
author = {Palomo-Alonso, A. and Costa, V. G. and Moreno-Saavedra, L. M. and Lorente-Ramos, E. and Pérez-Aracil, J. and Pedreira, C. E. and Salcedo-Sanz, S.},
title = {TensorCRO: A TensorFlow-based implementation of a multi-method ensemble for optimization},
journal = {Expert Systems},
volume = {n/a},
number = {n/a},
pages = {e13713},
keywords = {GPU, meta-heuristics, multi-method ensembles, optimization, TensorFlow},
doi = {https://doi.org/10.1111/exsy.13713},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1111/exsy.13713},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1111/exsy.13713}
}