RumorFlow is a population-based metaheuristic inspired by rumor propagation in social networks. It models candidate solutions as "rumors" that spread and evolve on a (possibly dynamic) communication graph. The project includes a full C++ implementation, laboratory scripts, the research paper and presentation slides used in the original evaluation.
Why you might care:
- Designed for high-dimensional continuous optimization.
- Novel asymmetric propagation operator that favors high-quality solutions while keeping diversity via mutation and reinitialization strategies.
- Multi-population variant (GroupsRumorFlow) to enhance exploration and avoid premature convergence.
- Paper:
latex/RumorFlow.pdforRumorFlow.pdfin repo root - Slides:
DiapositivasRumorflow.pdf - Example entry point:
main.cpp
- Socially-inspired propagation and mutation operators
- Population represented as a graph (static or dynamic topology)
- GroupsRumorFlow: multi-population extension
- Benchmarking setup against CEC functions (in
code/)
Top-level files and folders you'll likely use:
CMakeLists.txt # CMake project file
main.cpp # example runner / entry point
code/ # CEC benchmark wrappers and tests
common/ # utilities, random, helpers
inc/ # headers for RumorFlow classes
src/ # implementation files
latex/ # paper sources
DiapositivasRumorflow.pdf
RumorFlow.pdf
input_data/ # sample datasets used in experiments
results_RumorFlow/ # output from runs and experiments
Requirements: a C++17-capable compiler (g++/clang++), CMake >= 3.10, make or ninja.
Build with CMake (recommended):
git clone https://github.com/GabrielFranciscoSM/RumorFlow.git
cd RumorFlow
mkdir -p build && cd build
cmake ..
cmake --build . -- -jRun the produced executable (from build/):
./main # may accept command-line options; see code/main.cppIf the project generated a build/ from a previous run, you can also use the included build/ artifacts during development.
- The
main.cppfile demonstrates how to configure and run the algorithm. Inspectinc/andsrc/for configurable parameters: population size, number of iterations, problem dimension and benchmark selection. - Input data for experiments is under
input_data/and random seeds are indatos/seeds.txt.
- Prepare the benchmark configuration (CEC functions are in
code/). - Build the project as shown above.
- Run
./mainand direct outputs intoresults_RumorFlow/.
For plotting and post-processing, scripts plot_divergence.py and grid_search.py are available in the repo root.
See RumorFlow.pdf for full details. Short summary:
- RF shows strong exploitation capabilities which can lead to fast convergence.
- Pure RF can lose diversity; RF-R (reinitialization) and GroupsRumorFlow (multi-population) were developed to mitigate this.
- The final GRF variant demonstrates a good trade-off between exploration and exploitation and achieves competitive results on CEC benchmarks.
If you use RumorFlow, please cite:
@misc{SanchezMunoz2025,
author = {Gabriel Francisco Sánchez Muñoz},
title = {RumorFlow (RF): Una Metaheurística de Inteligencia Colectiva Inspirada en la Dinámica Social},
year = {2025},
publisher = {GitHub},
howpublished = {\url{https://github.com/GabrielFranciscoSM/RumorFlow}}
}
This project is licensed under the GNU General Public License v3.0 — see LICENSE.
If you find issues, have suggestions or want to contribute, please open an issue or a pull request on the GitHub repository. For direct contact, check the GitHub profile of the repository owner.