Skip to content

msadlej/prng-ea-benchmark

Repository files navigation

Comparison of influence of various methods of (pseudo)random sequences on the efficiency of algorithms from DE and CMA-ES family

Porównanie wpływu różnych metod generacji liczb (pseudo)losowych na efektywność algorytmów z rodziny CMA-ES i DE

Requirements

C++ Dependencies

For building the C++ components, you need:

  • C++11 compiler (g++ or clang++)
  • CMake or autotools (autoconf, automake, libtool)
  • Eigen3 - for matrix operations
  • Google glog - for logging (optional but recommended)
  • Google gflags - for command line parsing (optional)

On Debian/Ubuntu systems:

sudo apt-get install autoconf automake libtool libgoogle-glog-dev libgflags-dev libeigen3-dev

Python Dependencies

Install Python dependencies:

pip install -r requirements.txt

Key Python packages include:

  • numpy - numerical computing
  • scipy - scientific computing
  • matplotlib, seaborn - visualization
  • pandas - data analysis
  • jupyter, notebook - interactive notebooks

Building the Project

Quick Start

To build all C++ components at once from the root directory:

make

This will build:

  • Random number generators (linear congruential and Mersenne Twister)
  • CEC-2013 and CEC-2021 benchmark functions
  • L-SHADE algorithm
  • CMA-ES algorithm (including libcmaes if not already installed)

Build Individual Components

You can also build specific components:

make generators   # Build only random number generators
make benchmarks   # Build CEC-2013 and CEC-2021
make algorithms   # Build L-SHADE and CMA-ES

Or build from individual directories:

cd L-SHADE && make
cd CMA-ES && make
cd CEC-2013 && make
cd CEC-2021 && make

Project Structure

Random Number Generators

  • linear_congruential.cpp - Linear congruential generator implementation
  • mersenne_twister.cpp - Mersenne Twister generator implementation
  • true_random.py - True random number generator using RANDOM.ORG API
  • Random-Buffer/ - Random number buffer class implementation
  • Random-Reader/ - Random number reader class implementation
  • generators.ipynb - Jupyter notebook for generator analysis

Optimization Algorithms

  • /CMA-ES - CMA-ES experiments implementation
    • results/ - Experimental results and data
    • notebooks/ - Jupyter notebooks for analysis
  • /L-SHADE - L-SHADE algorithm implementation (downloaded from https://github.com/P-N-Suganthan/2021-SO-BCO/),
    and experiments implementation
    • results/ - Experimental results and data
    • notebooks/ - Jupyter notebooks for analysis

Benchmark Functions

External Dependencies

Data and Results

  • /data - Generated random number data (not included in repository)
  • /imgs - Plots and graphs

Authors

Michał Sadlej [michal.sadlej@gmail.com]

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

We gratefully acknowledge Polish high-performance computing infrastructure PLGrid (HPC Center: CI TASK) for providing computer facilities and support within computational grant no. PLG/2025/018266.

PLGrid

About

Comparison of influence of various methods of (pseudo)random sequences on the efficiency of algorithms from DE and CMA-ES family

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Contributors