Skip to content

GabrielFranciscoSM/RumorFlow

Repository files navigation

RumorFlow (RF)

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.

Quick links

  • Paper: latex/RumorFlow.pdf or RumorFlow.pdf in repo root
  • Slides: DiapositivasRumorflow.pdf
  • Example entry point: main.cpp

Features

  • 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/)

Repository layout

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

Quickstart (build & run)

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 . -- -j

Run the produced executable (from build/):

./main          # may accept command-line options; see code/main.cpp

If the project generated a build/ from a previous run, you can also use the included build/ artifacts during development.

How to use

  • The main.cpp file demonstrates how to configure and run the algorithm. Inspect inc/ and src/ 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 in datos/seeds.txt.

Reproducing experiments

  1. Prepare the benchmark configuration (CEC functions are in code/).
  2. Build the project as shown above.
  3. Run ./main and direct outputs into results_RumorFlow/.

For plotting and post-processing, scripts plot_divergence.py and grid_search.py are available in the repo root.

Research summary

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.

Citation

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}}
}

License

This project is licensed under the GNU General Public License v3.0 — see LICENSE.

Contact / Contributing

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors