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.
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.
- 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.
We recommend the use of uv python package manager. Install all required libraries with:
uv sync
source .venv/bin/activate
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.iniRun the complete local postprocessing workflow:
uv run run_experiment_workflow.py \
--config configs/config_NSGA2MOCPOMOEATS_codeA.ini \
--allRun standalone GA executions with the same config:
./run_single_new_alg.sh configs/config_NSGA2MOCPOMOEATS_codeA.iniRun hybrid GA executions with the same config:
./run_hybrids_deep_new_alg.sh configs/config_NSGA2MOCPOMOEATS_codeA.iniRun 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-metricsList available workflow steps:
uv run run_experiment_workflow.py --list-stepsThe available steps are (best keep the order):
normalize->normalize_standard_traces.pyunified-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.pymetrics-hybridization->compute_metrics_hybridization.pymetrics-standard->compute_metrics_standard.pyplot-metrics->do_algorithms_plot_with_replicates.pywilcoxon->wilcoxon_statistical_analysis.pyfriedman->friedman_statistical_analysis.pyplot-genetic-crossing->do_plot_genetical_crossing.pyplot-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.iniIf you need the raw bash variables in an interactive shell, use:
source ./load_experiment_config.sh configs/config_NSGA2MOCPOMOEATS_codeA.ini- 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.
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.}
}
HIDDEMS – PID2021-128071OB-I00 MICIU/AEI/10.13039/501100011033 and FEDER,UE (HIDDEMs)[https://hiddems.uib.cat]
This project and repository are under continuous development.