Source code for niapy.util.factory

"""Factory functions for getting algorithms and problems by name."""

__all__ = ['get_algorithm', 'get_problem']


[docs]def get_problem(name, *args, **kwargs): r"""Get problem by name. Args: name (str): Name of the problem. Returns: Problem: An instance of Problem, instantiated with \*args and \*\*kwargs. Raises: KeyError: If an invalid name is provided. """ problem = _problem_options().pop(name.lower()) return problem(*args, **kwargs)
[docs]def get_algorithm(name, *args, **kwargs): r"""Get algorithm by name. Args: name (str): Name of the algorithm. Returns: Algorithm: An instance of the algorithm instantiated \*args and \*\*kwargs. Raises: KeyError: If an invalid name is provided. """ algorithm = _algorithm_options().pop(name) return algorithm(*args, **kwargs)
def _problem_options(): import niapy.problems as problems problems_dict = { 'ackley': problems.Ackley, 'alpine1': problems.Alpine1, 'alpine2': problems.Alpine2, 'bent_cigar': problems.BentCigar, 'chung_reynolds': problems.ChungReynolds, 'cosine_mixture': problems.CosineMixture, 'csendes': problems.Csendes, 'discus': problems.Discus, "dixon_price": problems.DixonPrice, "elliptic": problems.Elliptic, "conditioned_elliptic": problems.Elliptic, "expanded_griewank_plus_rosenbrock": problems.ExpandedGriewankPlusRosenbrock, "expanded_schaffer": problems.ExpandedSchaffer, "griewank": problems.Griewank, "happy_cat": problems.HappyCat, "hgbat": problems.HGBat, "katsuura": problems.Katsuura, "levy": problems.Levy, "michalewicz": problems.Michalewicz, "modified_schwefel": problems.ModifiedSchwefel, "perm": problems.Perm, "pinter": problems.Pinter, "powell": problems.Powell, "qing": problems.Qing, "quintic": problems.Quintic, "rastrigin": problems.Rastrigin, "ridge": problems.Ridge, "rosenbrock": problems.Rosenbrock, "salomon": problems.Salomon, "schaffer2": problems.SchafferN2, "schaffer4": problems.SchafferN4, "schumer_steiglitz": problems.SchumerSteiglitz, "schwefel": problems.Schwefel, "schwefel221": problems.Schwefel221, "schwefel222": problems.Schwefel222, "sphere": problems.Sphere, "sphere2": problems.Sphere2, "sphere3": problems.Sphere3, "step": problems.Step, "step2": problems.Step2, "step3": problems.Step3, "stepint": problems.Stepint, "styblinski_tang": problems.StyblinskiTang, "sum_squares": problems.SumSquares, "trid": problems.Trid, "weierstrass": problems.Weierstrass, "whitley": problems.Whitley, "zakharov": problems.Zakharov, } return problems_dict def _algorithm_options(): import niapy.algorithms.basic as basic_algorithms import niapy.algorithms.modified as modified_algorithms import niapy.algorithms.other as other_algorithms algorithms = { "BatAlgorithm": basic_algorithms.BatAlgorithm, "FireflyAlgorithm": basic_algorithms.FireflyAlgorithm, "DifferentialEvolution": basic_algorithms.DifferentialEvolution, "AgingNpDifferentialEvolution": basic_algorithms.AgingNpDifferentialEvolution, "DynNpDifferentialEvolution": basic_algorithms.DynNpDifferentialEvolution, "MultiStrategyDifferentialEvolution": basic_algorithms.MultiStrategyDifferentialEvolution, "DynNpMultiStrategyDifferentialEvolution": basic_algorithms.DynNpMultiStrategyDifferentialEvolution, "FlowerPollinationAlgorithm": basic_algorithms.FlowerPollinationAlgorithm, "GreyWolfOptimizer": basic_algorithms.GreyWolfOptimizer, "GeneticAlgorithm": basic_algorithms.GeneticAlgorithm, "ArtificialBeeColonyAlgorithm": basic_algorithms.ArtificialBeeColonyAlgorithm, "ParticleSwarmAlgorithm": basic_algorithms.ParticleSwarmAlgorithm, "ParticleSwarmOptimization": basic_algorithms.ParticleSwarmOptimization, "CenterParticleSwarmOptimization": basic_algorithms.CenterParticleSwarmOptimization, "MutatedParticleSwarmOptimization": basic_algorithms.MutatedParticleSwarmOptimization, "MutatedCenterParticleSwarmOptimization": basic_algorithms.MutatedCenterParticleSwarmOptimization, "ComprehensiveLearningParticleSwarmOptimizer": basic_algorithms.ComprehensiveLearningParticleSwarmOptimizer, "MutatedCenterUnifiedParticleSwarmOptimization": basic_algorithms.MutatedCenterUnifiedParticleSwarmOptimization, "OppositionVelocityClampingParticleSwarmOptimization": basic_algorithms.OppositionVelocityClampingParticleSwarmOptimization, "BareBonesFireworksAlgorithm": basic_algorithms.BareBonesFireworksAlgorithm, "CamelAlgorithm": basic_algorithms.CamelAlgorithm, "MonkeyKingEvolutionV1": basic_algorithms.MonkeyKingEvolutionV1, "MonkeyKingEvolutionV2": basic_algorithms.MonkeyKingEvolutionV2, "MonkeyKingEvolutionV3": basic_algorithms.MonkeyKingEvolutionV3, "EvolutionStrategy1p1": basic_algorithms.EvolutionStrategy1p1, "EvolutionStrategyMp1": basic_algorithms.EvolutionStrategyMp1, "EvolutionStrategyMpL": basic_algorithms.EvolutionStrategyMpL, "EvolutionStrategyML": basic_algorithms.EvolutionStrategyML, "SineCosineAlgorithm": basic_algorithms.SineCosineAlgorithm, "GlowwormSwarmOptimization": basic_algorithms.GlowwormSwarmOptimization, "GlowwormSwarmOptimizationV1": basic_algorithms.GlowwormSwarmOptimizationV1, "GlowwormSwarmOptimizationV2": basic_algorithms.GlowwormSwarmOptimizationV2, "GlowwormSwarmOptimizationV3": basic_algorithms.GlowwormSwarmOptimizationV3, "HarmonySearch": basic_algorithms.HarmonySearch, "HarmonySearchV1": basic_algorithms.HarmonySearchV1, "KrillHerd": basic_algorithms.KrillHerd, "FireworksAlgorithm": basic_algorithms.FireworksAlgorithm, "EnhancedFireworksAlgorithm": basic_algorithms.EnhancedFireworksAlgorithm, "DynamicFireworksAlgorithm": basic_algorithms.DynamicFireworksAlgorithm, "DynamicFireworksAlgorithmGauss": basic_algorithms.DynamicFireworksAlgorithmGauss, "GravitationalSearchAlgorithm": basic_algorithms.GravitationalSearchAlgorithm, "MothFlameOptimizer": basic_algorithms.MothFlameOptimizer, "FishSchoolSearch": basic_algorithms.FishSchoolSearch, "CuckooSearch": basic_algorithms.CuckooSearch, "CoralReefsOptimization": basic_algorithms.CoralReefsOptimization, "ForestOptimizationAlgorithm": basic_algorithms.ForestOptimizationAlgorithm, "MonarchButterflyOptimization": basic_algorithms.MonarchButterflyOptimization, "BacterialForagingOptimization": basic_algorithms.BacterialForagingOptimization, "BeesAlgorithm": basic_algorithms.BeesAlgorithm, "CatSwarmOptimization": basic_algorithms.CatSwarmOptimization, "HarrisHawksOptimization": basic_algorithms.HarrisHawksOptimization, "ClonalSelectionAlgorithm": basic_algorithms.ClonalSelectionAlgorithm, "LionOptimizationAlgorithm": basic_algorithms.LionOptimizationAlgorithm, "HybridBatAlgorithm": modified_algorithms.HybridBatAlgorithm, "AdaptiveBatAlgorithm": modified_algorithms.AdaptiveBatAlgorithm, "SelfAdaptiveBatAlgorithm": modified_algorithms.SelfAdaptiveBatAlgorithm, "HybridSelfAdaptiveBatAlgorithm": modified_algorithms.HybridSelfAdaptiveBatAlgorithm, "ParameterFreeBatAlgorithm": modified_algorithms.ParameterFreeBatAlgorithm, "DifferentialEvolutionMTS": modified_algorithms.DifferentialEvolutionMTS, "DifferentialEvolutionMTSv1": modified_algorithms.DifferentialEvolutionMTSv1, "DynNpDifferentialEvolutionMTS": modified_algorithms.DynNpDifferentialEvolutionMTS, "DynNpDifferentialEvolutionMTSv1": modified_algorithms.DynNpDifferentialEvolutionMTSv1, "MultiStrategyDifferentialEvolutionMTS": modified_algorithms.MultiStrategyDifferentialEvolutionMTS, "MultiStrategyDifferentialEvolutionMTSv1": modified_algorithms.MultiStrategyDifferentialEvolutionMTSv1, "DynNpMultiStrategyDifferentialEvolutionMTS": modified_algorithms.DynNpMultiStrategyDifferentialEvolutionMTS, "DynNpMultiStrategyDifferentialEvolutionMTSv1": modified_algorithms.DynNpMultiStrategyDifferentialEvolutionMTSv1, "SelfAdaptiveDifferentialEvolution": modified_algorithms.SelfAdaptiveDifferentialEvolution, "MultiStrategySelfAdaptiveDifferentialEvolution": modified_algorithms.MultiStrategySelfAdaptiveDifferentialEvolution, "SuccessHistoryAdaptiveDifferentialEvolution": modified_algorithms.SuccessHistoryAdaptiveDifferentialEvolution, "LpsrSuccessHistoryAdaptiveDifferentialEvolution": modified_algorithms.LpsrSuccessHistoryAdaptiveDifferentialEvolution, "NelderMeadMethod": other_algorithms.NelderMeadMethod, "HillClimbAlgorithm": other_algorithms.HillClimbAlgorithm, "SimulatedAnnealing": other_algorithms.SimulatedAnnealing, "MultipleTrajectorySearch": other_algorithms.MultipleTrajectorySearch, "MultipleTrajectorySearchV1": other_algorithms.MultipleTrajectorySearchV1, "AnarchicSocietyOptimization": other_algorithms.AnarchicSocietyOptimization, "RandomSearch": other_algorithms.RandomSearch, } return algorithms