Skip to content

About

Framework for the optimization of resource placement using Genetic Algorithms and Hybrid-algorithms strategies

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

91 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Genetic Hybridization Placement

GeneticHybridizationPlacement is a Python-based ecosystem for the optimization of resource placement in fog computing environments using Genetic Algorithms (GAs). The framework supports both single-algorithm and hybrid-algorithm evolutionary strategies, enabling comprehensive experimentation and benchmarking.

Project Overview

This project provides a flexible environment to:

  • Run single GA algorithms (e.g., NSGA2, NSGA3, UNSGA3, SMSEMOA) independently on resource placement problems.
  • Run hybrid GAs, where multiple algorithms cooperate or compete within the same evolutionary process, allowing for hybridization strategies and advanced metaheuristics.
  • Analyze and compare the performance of single and hybrid approaches using a unified set of metrics and statistical tools.
  • Automate experiments across different network topologies, objective combinations, and random seeds, with support for parallel execution and reproducibility.

Key Features

  • Single Mode: Execute and analyze standard GAs individually for baseline performance.
  • Hybrid Mode: Combine several GAs in a single run, leveraging their strengths for improved optimization.
  • Experiment Automation: Shell scripts and Python tools for batch runs, normalization, and result aggregation.
  • Statistical Analysis: Built-in scripts for statistical comparison, Pareto front computation, and visualization.

Getting Started

Dependencies

We recommend the use of uv python package manager. Install all required libraries with:

uv sync
source .venv/bin/activate

Experiment running

The main single-run, hybrid-run, download, and postprocessing workflow can now be configured from a single INI file.

Default example:

configs/config_NSGA2MOCPOMOEATS_codeA.ini

Run the complete local postprocessing workflow:

uv run run_experiment_workflow.py \
  --config configs/config_NSGA2MOCPOMOEATS_codeA.ini \
  --all

Run standalone GA executions with the same config:

./run_single_new_alg.sh configs/config_NSGA2MOCPOMOEATS_codeA.ini

Run hybrid GA executions with the same config:

./run_hybrids_deep_new_alg.sh configs/config_NSGA2MOCPOMOEATS_codeA.ini

Run only one step:

uv run run_experiment_workflow.py  --config configs/config_NSGA2MOCPOMOEATS_codeA.ini --step unified-single
uv run run_experiment_workflow.py  --config configs/config_NSGA2MOCPOMOEATS_codeA.ini --step metrics-hybridization
uv run run_experiment_workflow.py  --config configs/config_NSGA2MOCPOMOEATS_codeA.ini --step plot-metrics

List available workflow steps:

uv run run_experiment_workflow.py --list-steps

The available steps are (best keep the order):

  • normalize -> normalize_standard_traces.py
  • unified-single -> compute_unified_PF.py (compute_single_pareto_front)
  • unified-hybrids -> compute_unified_PF.py (compute_hybrid_pareto_front)
  • unified-merge -> compute_unified_PF.py (merge_pareto_fronts)
  • merge-hybridization -> merge_hybridization_cases.py
  • metrics-hybridization -> compute_metrics_hybridization.py
  • metrics-standard -> compute_metrics_standard.py
  • plot-metrics -> do_algorithms_plot_with_replicates.py
  • wilcoxon -> wilcoxon_statistical_analysis.py
  • friedman -> friedman_statistical_analysis.py
  • plot-genetic-crossing -> do_plot_genetical_crossing.py
  • plot-genetic-crossing-line -> do_plot_genetical_crossing_line.py

If you still want to reuse the same experiment definition from bash scripts on the server, you can export the main values like this:

eval "$(uv run export_experiment_env.py --config configs/config_NSGA2MOCPOMOEATS_codeA.ini)"

The remote download helper also accepts the same config:

./download_remote_solutions.sh configs/config_NSGA2MOCPOMOEATS_codeA.ini

If you need the raw bash variables in an interactive shell, use:

source ./load_experiment_config.sh configs/config_NSGA2MOCPOMOEATS_codeA.ini

Directory Structure

  • resopt/ – Core optimization, problem definitions, and plotting modules.
  • data/ – Output directories for experiment results.
  • scripts/ – Shell scripts for running and managing experiments.
  • test/ – Unit and integration tests.

Citation

If you use this ecosystem in your research, please cite the corresponding paper or contact the authors for more information.

@article{Vivo2026,
  author    = {Vivo, Sergi and Guerrero, Carlos and Lera, Isaac},
  title     = {Hybrid multi-objective evolutionary algorithms for service placement in the computing continuum: a comparative study with genetic traceability},
  journal   = {Cluster Computing},
  year      = {2026},
  volume    = {29},
  number    = {7},
  pages     = {456},
  month     = jul,
  doi       = {10.1007/s10586-026-06273-9},
  issn      = {1573-7543},
  url       = {https://doi.org/10.1007/s10586-026-06273-9},
  abstract  = {This paper addresses multi-objective service placement in computing continuum environments through a collaborative hybrid island-model MOEA. The key innovation is not the design of a new general hybrid algorithm, but the systematic application and analysis of heterogeneous hybridization for this specific optimization domain through two independent experimental campaigns: a first one with four state-of-the-art MOEAs (NSGA-II, NSGA-III, U-NSGA-III, and SMS-EMOA), and a second one with a complementary hybrid configuration based on NSGA-II, MOEA/TS, and MOCPO, both co-evolving and periodically exchanging solutions. These designs enable complementary search behaviors across islands and are naturally aligned with the distributed edge-fog-cloud architecture of the computing continuum, facilitating scalable parallel execution. To evaluate the approach, we define two research hypotheses: (i) whether hybrid cooperation yields significant performance gains over standalone algorithms, and (ii) whether all constituent algorithms contribute equally to the final outcomes. We combine standard Pareto-front quality indicators (GD, IGD, HV, S, and STE) with a traceability-oriented analysis based on genetic load, which quantifies the contribution of each island to the evolved solutions. Across 30 independent runs, the hybrid method outperforms most of the standalone baselines, and statistical tests confirm significant improvements. Results also show non-uniform contributions among islands, providing interpretable evidence of effective hybrid cooperation.}
}

Project

HIDDEMS – PID2021-128071OB-I00 MICIU/AEI/10.13039/501100011033 and FEDER,UE (HIDDEMs)[https://hiddems.uib.cat]

Note

This project and repository are under continuous development.

About

Framework for the optimization of resource placement using Genetic Algorithms and Hybrid-algorithms strategies

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages