Source code for f3dasm_optimize._src.nevergrad_optimizers

#                                                                       Modules
# =============================================================================

# Standard
from typing import Optional

# Third-party
import nevergrad as ng
from f3dasm import Block

# Local
from .adapters.nevergrad_implementations import NeverGradOptimizer

#                                                          Authorship & Credits
# =============================================================================
__author__ = 'Martin van der Schelling (M.P.vanderSchelling@tudelft.nl)'
__credits__ = ['Martin van der Schelling']
__status__ = 'Stable'
# =============================================================================
#
# =============================================================================


[docs]def de_nevergrad(population: int = 30, initialization: str = 'parametrization', scale: float = 1.0, recommendation: str = 'optimistic', crossover: float = 0.5, F1: float = 0.8, F2: float = 0.8, seed: Optional[int] = None, **kwargs) -> Block: """ Nevergrad Differential Evolution (DE) optimizer. Parameters ---------- population : int, optional The number of individuals in the population, by default 30 initialization : str, optional Initialization strategy, by default 'parametrization' scale : float, optional Scale factor, by default 1.0 recommendation : str, optional Recommendation strategy, by default 'optimistic' crossover : float, optional Crossover probability, by default 0.5 F1 : float, optional First differential weight, by default 0.8 F2 : float, optional Second differential weight, by default 0.8 seed : Optional[int], optional The seed for the random number generator, by default None Returns ------- Optimizer Optimizer object. """ return NeverGradOptimizer( algorithm_cls=ng.optimizers.DifferentialEvolution, population=population, seed=seed, initialization=initialization, scale=scale, recommendation=recommendation, crossover=crossover, F1=F1, F2=F2, **kwargs )
# =============================================================================
[docs]def pso_nevergrad( population: int = 30, transform: str = 'identity', omega: float = 0.7213475204444817, phip: float = 1.1931471805599454, phig: float = 1.1931471805599454, qo: bool = False, sqo: bool = False, seed: Optional[int] = None, so: bool = False, **kwargs) -> Block: """ Nevergrad Particle Swarm Optimization (PSO) optimizer. Parameters ---------- population : int, optional The number of individuals in the population, by default 30 transform : str, optional Transform strategy, by default 'identity' omega : float, optional Inertia weight, by default 0.7213475204444817 phip : float, optional Personal attraction coefficient, by default 1.1931471805599454 phig : float, optional Global attraction coefficient, by default 1.1931471805599454 qo : bool, optional Use quasi-opposition, by default False sqo : bool, optional Use stochastic quasi-opposition, by default False so : bool, optional Use space opposition, by default False seed : Optional[int], optional The seed for the random number generator, by default None Returns ------- Optimizer Optimizer object. """ return NeverGradOptimizer( algorithm_cls=ng.optimizers.ConfPSO, population=population, seed=seed, transform=transform, omega=omega, phip=phip, phig=phig, qo=qo, sqo=sqo, so=so, **kwargs )