GALib-Parallel
Header-only C++ library for parallel evolutionary algorithms
Loading...
Searching...
No Matches
Classes | Static Public Member Functions | List of all members
galib::utils::AlgorithmBuilder< GeneType > Class Template Reference

A high-level factory for instantiating GA algorithms from YAML configurations. More...

#include <AlgorithmBuilder.h>

Static Public Member Functions

static std::unique_ptr< Algorithm< GeneType > > build (const std::string &config_path, FitnessFunction< GeneType > &ff, MPI_Comm mpi_comm=MPI_COMM_NULL)
 Unified entry point to build an algorithm from a config file.
 
static std::unique_ptr< Algorithm< GeneType > > buildStandardGA (const YAML::Node &config, FitnessFunction< GeneType > &ff)
 Builds a StandardGA instance.
 
static std::unique_ptr< Algorithm< GeneType > > buildCellularGA (const YAML::Node &config, FitnessFunction< GeneType > &ff)
 Builds a CellularGA instance.
 
static std::unique_ptr< Algorithm< GeneType > > buildDifferentialEvolutionGA (const YAML::Node &config, FitnessFunction< GeneType > &ff)
 Builds a DifferentialEvolutionGA instance.
 
static std::unique_ptr< Algorithm< GeneType > > buildIslandGA (const YAML::Node &config, FitnessFunction< GeneType > &ff, MPI_Comm mpi_comm)
 Builds an IslandGA instance.
 

Detailed Description

template<typename GeneType>
class galib::utils::AlgorithmBuilder< GeneType >

A high-level factory for instantiating GA algorithms from YAML configurations.

AlgorithmBuilder simplifies the setup process by parsing a YAML file and automatically assembling the requested algorithm with its corresponding operators, parameters, and logging observers.

Template Parameters
GeneTypeThe numeric type of each gene (default: double).

Definition at line 54 of file AlgorithmBuilder.h.

Member Function Documentation

◆ build()

template<typename GeneType >
static std::unique_ptr< Algorithm< GeneType > > galib::utils::AlgorithmBuilder< GeneType >::build ( const std::string &  config_path,
FitnessFunction< GeneType > &  ff,
MPI_Comm  mpi_comm = MPI_COMM_NULL 
)
inlinestatic

Unified entry point to build an algorithm from a config file.

Automatically detects the algorithm type (standard, cellular, island, etc.) and configures it with the provided fitness function.

Parameters
config_pathPath to the YAML configuration file.
ffThe fitness function to optimize.
mpi_comm(Optional) MPI communicator for Island model.
Returns
A unique_ptr to the constructed Algorithm.
Exceptions
std::invalid_argumentif the config is missing required sections or uses unknown types.

Definition at line 102 of file AlgorithmBuilder.h.

References galib::utils::AlgorithmBuilder< GeneType >::build(), galib::utils::AlgorithmBuilder< GeneType >::buildCellularGA(), galib::utils::AlgorithmBuilder< GeneType >::buildDifferentialEvolutionGA(), galib::utils::AlgorithmBuilder< GeneType >::buildIslandGA(), and galib::utils::AlgorithmBuilder< GeneType >::buildStandardGA().

Referenced by galib::utils::AlgorithmBuilder< GeneType >::build().

◆ buildCellularGA()

template<typename GeneType >
static std::unique_ptr< Algorithm< GeneType > > galib::utils::AlgorithmBuilder< GeneType >::buildCellularGA ( const YAML::Node &  config,
FitnessFunction< GeneType > &  ff 
)
inlinestatic

◆ buildDifferentialEvolutionGA()

template<typename GeneType >
static std::unique_ptr< Algorithm< GeneType > > galib::utils::AlgorithmBuilder< GeneType >::buildDifferentialEvolutionGA ( const YAML::Node &  config,
FitnessFunction< GeneType > &  ff 
)
inlinestatic

◆ buildIslandGA()

template<typename GeneType >
static std::unique_ptr< Algorithm< GeneType > > galib::utils::AlgorithmBuilder< GeneType >::buildIslandGA ( const YAML::Node &  config,
FitnessFunction< GeneType > &  ff,
MPI_Comm  mpi_comm 
)
inlinestatic

Builds an IslandGA instance.

Parameters
configFull YAML configuration node.
ffFitness function.
mpi_commMPI communicator.
Returns
unique_ptr to IslandGA.

Definition at line 294 of file AlgorithmBuilder.h.

References galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::BUFFER_CAPACITY, galib::internal::OperatorBuilder< GeneType >::buildCrossover(), galib::internal::OperatorBuilder< GeneType >::buildDemeReplacer(), galib::internal::OperatorBuilder< GeneType >::buildDemeSelector(), galib::internal::OperatorBuilder< GeneType >::buildMutation(), galib::internal::OperatorBuilder< GeneType >::buildSelection(), galib::AlgorithmConfig::crossover_rate, galib::FitnessFunction< GeneType >::getLowerBound(), galib::FitnessFunction< GeneType >::getUpperBound(), galib::IslandGAParams::immigration_quota, galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::IMMIGRATION_QUOTA, galib::AlgorithmConfig::max_generations, galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::MAX_GENERATIONS, galib::IslandGAParams::migration_interval, galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::MIGRATION_INTERVAL, galib::IslandGAParams::migration_size, galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::MIGRATION_SIZE, galib::AlgorithmConfig::mutation_rate, galib::AlgorithmConfig::num_threads, galib::FitnessFunction< GeneType >::size(), and galib::utils::AlgorithmBuilder< GeneType >::Defaults::Island::TOPOLOGY.

Referenced by galib::utils::AlgorithmBuilder< GeneType >::build().

◆ buildStandardGA()

template<typename GeneType >
static std::unique_ptr< Algorithm< GeneType > > galib::utils::AlgorithmBuilder< GeneType >::buildStandardGA ( const YAML::Node &  config,
FitnessFunction< GeneType > &  ff 
)
inlinestatic

The documentation for this class was generated from the following file: