First, install dependencies: pip install -r requirements.txt
Datasets are .json files, described at: https://doi.org/10.5281/zenodo.7247877
All algorithms inherit the base class:
Algorithm(dataset_name:str="1", random_seed:int=None, debug_mode:bool=False, tackle_dependencies:bool=False)Common parameters for all algorithms are:
dataset_name: for the specific dataset to be loadedrandom_seed: for deterministic executionsdebug_mode: to allow the algorithm to save intermediate results for further debugging of the executiontackle_dependencies: to solve the problem taking into account interactions between requirements.
Common methods for all algorithms are:
set_seed(seed): for setting random seedreset(): for clearing algorithm values after executionrun(): for running the algorithmget_name(): to obtain its descriptive namestop_criterion(): defines when the execution should stop
Current algorithm families are the following:
Implements common operators of genetic algorithms, such as initialization, basic selection, crossover, mutation and replacement operators. Specific implementations may override or use new operators.
Specific parameters for genetic algorithms are the following:
population_length: int,
max_generations: int,
max_evaluations: int,
selection: str,
selection_candidates: int,
crossover: str,
crossover_prob: float,
mutation: str,
mutation_prob: float,
replacement: str,Single-Objective genetic algorithm that updates a set of nondominated solutions after each generation.
Estimation of Distribution Algorithms.
Specific parameters for EDA are the following:
population_length: int,
max_generations: int,
max_evaluations: int,Common methods for EDAs are:
generate_initial_population()select_individuals():learn_probability_model():sample_new_population():
Univariate Marginal Distribution Algorithm.
Specific implementations for UDMA are:
learn_probability_model():sample_new_population():
Univariate Marginal Distribution Algorithm.
Specific implementations for FEDA are:
learn_probability_model():sample_new_population():
Population Based Incremental Learning
Specific implementations for PBIL are:
select_individuals():learn_probability_model():sample_new_population():
Specific methods for PBIL are:
initialize_probability_vector():
Visual indicators (scatter plots) of experiments with 12 datasets and 4 algorithms (GA, UMDA, PBIL and FEDA)
Dataset a1
Dataset a2
Dataset a3
Dataset a4
Dataset c1
Dataset c2
Dataset c3
Dataset c4