From f92fd3f9c1303d2c2b2a24149ab57160b91753fa Mon Sep 17 00:00:00 2001 From: Gulshan Kumar Date: Tue, 6 May 2025 08:17:38 +0530 Subject: [PATCH 1/3] Inspiration from merged commit --- src/optimagic/algorithms.py | 34 ++++- .../optimizers/nevergrad_optimizers.py | 126 +++++++++++++++++- 2 files changed, 158 insertions(+), 2 deletions(-) diff --git a/src/optimagic/algorithms.py b/src/optimagic/algorithms.py index 588514e95..3dec5cd63 100644 --- a/src/optimagic/algorithms.py +++ b/src/optimagic/algorithms.py @@ -18,7 +18,7 @@ from optimagic.optimizers.ipopt import Ipopt from optimagic.optimizers.nag_optimizers import NagDFOLS, NagPyBOBYQA from optimagic.optimizers.neldermead import NelderMeadParallel -from optimagic.optimizers.nevergrad_optimizers import NevergradPSO +from optimagic.optimizers.nevergrad_optimizers import NevergradOnePlusOne, NevergradPSO from optimagic.optimizers.nlopt_optimizers import ( NloptBOBYQA, NloptCCSAQ, @@ -207,6 +207,7 @@ class BoundedGradientFreeLocalNonlinearConstrainedScalarAlgorithms(AlgoSelection @dataclass(frozen=True) class BoundedGradientFreeLocalParallelScalarAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne tranquilo: Type[Tranquilo] = Tranquilo @@ -493,6 +494,7 @@ def Scalar(self) -> BoundedGradientFreeLocalNonlinearConstrainedScalarAlgorithms @dataclass(frozen=True) class BoundedGradientFreeLocalScalarAlgorithms(AlgoSelection): nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA nlopt_newuoa: Type[NloptNEWUOA] = NloptNEWUOA @@ -527,6 +529,7 @@ def Parallel(self) -> BoundedGradientFreeLeastSquaresLocalParallelAlgorithms: @dataclass(frozen=True) class BoundedGradientFreeLocalParallelAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne pounders: Type[Pounders] = Pounders tranquilo: Type[Tranquilo] = Tranquilo tranquilo_ls: Type[TranquiloLS] = TranquiloLS @@ -553,6 +556,7 @@ def Bounded(self) -> BoundedGradientFreeLocalNonlinearConstrainedScalarAlgorithm @dataclass(frozen=True) class GradientFreeLocalParallelScalarAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne tranquilo: Type[Tranquilo] = Tranquilo @property @@ -610,6 +614,7 @@ def Scalar(self) -> BoundedGradientFreeNonlinearConstrainedParallelScalarAlgorit @dataclass(frozen=True) class BoundedGradientFreeParallelScalarAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pygmo_gaco: Type[PygmoGaco] = PygmoGaco pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen @@ -765,6 +770,7 @@ def GradientFree( @dataclass(frozen=True) class BoundedLocalParallelScalarAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne tranquilo: Type[Tranquilo] = Tranquilo @property @@ -1167,6 +1173,7 @@ def Scalar(self) -> GlobalGradientFreeParallelScalarAlgorithms: class BoundedGradientFreeLocalAlgorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA nlopt_newuoa: Type[NloptNEWUOA] = NloptNEWUOA @@ -1216,6 +1223,7 @@ def Scalar(self) -> GradientFreeLocalNonlinearConstrainedScalarAlgorithms: class GradientFreeLocalScalarAlgorithms(AlgoSelection): nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA nlopt_newuoa: Type[NloptNEWUOA] = NloptNEWUOA @@ -1261,6 +1269,7 @@ def Parallel(self) -> GradientFreeLeastSquaresLocalParallelAlgorithms: @dataclass(frozen=True) class GradientFreeLocalParallelAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne pounders: Type[Pounders] = Pounders tranquilo: Type[Tranquilo] = Tranquilo tranquilo_ls: Type[TranquiloLS] = TranquiloLS @@ -1306,6 +1315,7 @@ def Scalar(self) -> BoundedGradientFreeNonlinearConstrainedScalarAlgorithms: @dataclass(frozen=True) class BoundedGradientFreeScalarAlgorithms(AlgoSelection): nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -1378,6 +1388,7 @@ def Parallel(self) -> BoundedGradientFreeLeastSquaresParallelAlgorithms: @dataclass(frozen=True) class BoundedGradientFreeParallelAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pounders: Type[Pounders] = Pounders pygmo_gaco: Type[PygmoGaco] = PygmoGaco @@ -1460,6 +1471,7 @@ def Scalar(self) -> GradientFreeNonlinearConstrainedParallelScalarAlgorithms: @dataclass(frozen=True) class GradientFreeParallelScalarAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pygmo_gaco: Type[PygmoGaco] = PygmoGaco pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen @@ -1698,6 +1710,7 @@ class BoundedLocalScalarAlgorithms(AlgoSelection): iminuit_migrad: Type[IminuitMigrad] = IminuitMigrad ipopt: Type[Ipopt] = Ipopt nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -1758,6 +1771,7 @@ def Parallel(self) -> BoundedLeastSquaresLocalParallelAlgorithms: @dataclass(frozen=True) class BoundedLocalParallelAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne pounders: Type[Pounders] = Pounders tranquilo: Type[Tranquilo] = Tranquilo tranquilo_ls: Type[TranquiloLS] = TranquiloLS @@ -1801,6 +1815,7 @@ def GradientFree(self) -> GradientFreeLocalNonlinearConstrainedScalarAlgorithms: @dataclass(frozen=True) class LocalParallelScalarAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne tranquilo: Type[Tranquilo] = Tranquilo @property @@ -1882,6 +1897,7 @@ def Scalar(self) -> BoundedNonlinearConstrainedParallelScalarAlgorithms: @dataclass(frozen=True) class BoundedParallelScalarAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pygmo_gaco: Type[PygmoGaco] = PygmoGaco pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen @@ -2190,6 +2206,7 @@ class GradientFreeLocalAlgorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA nlopt_newuoa: Type[NloptNEWUOA] = NloptNEWUOA @@ -2229,6 +2246,7 @@ def Scalar(self) -> GradientFreeLocalScalarAlgorithms: class BoundedGradientFreeAlgorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -2326,6 +2344,7 @@ def Scalar(self) -> GradientFreeNonlinearConstrainedScalarAlgorithms: class GradientFreeScalarAlgorithms(AlgoSelection): nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -2407,6 +2426,7 @@ def Parallel(self) -> GradientFreeLeastSquaresParallelAlgorithms: @dataclass(frozen=True) class GradientFreeParallelAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pounders: Type[Pounders] = Pounders pygmo_gaco: Type[PygmoGaco] = PygmoGaco @@ -2614,6 +2634,7 @@ class BoundedLocalAlgorithms(AlgoSelection): ipopt: Type[Ipopt] = Ipopt nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -2697,6 +2718,7 @@ class LocalScalarAlgorithms(AlgoSelection): ipopt: Type[Ipopt] = Ipopt nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -2781,6 +2803,7 @@ def GradientBased(self) -> GradientBasedLikelihoodLocalAlgorithms: @dataclass(frozen=True) class LocalParallelAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne pounders: Type[Pounders] = Pounders tranquilo: Type[Tranquilo] = Tranquilo tranquilo_ls: Type[TranquiloLS] = TranquiloLS @@ -2847,6 +2870,7 @@ class BoundedScalarAlgorithms(AlgoSelection): iminuit_migrad: Type[IminuitMigrad] = IminuitMigrad ipopt: Type[Ipopt] = Ipopt nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ @@ -2948,6 +2972,7 @@ def Parallel(self) -> BoundedLeastSquaresParallelAlgorithms: @dataclass(frozen=True) class BoundedParallelAlgorithms(AlgoSelection): + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pounders: Type[Pounders] = Pounders pygmo_gaco: Type[PygmoGaco] = PygmoGaco @@ -3050,6 +3075,7 @@ def Scalar(self) -> NonlinearConstrainedParallelScalarAlgorithms: @dataclass(frozen=True) class ParallelScalarAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pygmo_gaco: Type[PygmoGaco] = PygmoGaco pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen @@ -3158,6 +3184,7 @@ class GradientFreeAlgorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -3293,6 +3320,7 @@ class LocalAlgorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA @@ -3363,6 +3391,7 @@ class BoundedAlgorithms(AlgoSelection): ipopt: Type[Ipopt] = Ipopt nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ @@ -3500,6 +3529,7 @@ class ScalarAlgorithms(AlgoSelection): ipopt: Type[Ipopt] = Ipopt nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ @@ -3629,6 +3659,7 @@ def Local(self) -> LikelihoodLocalAlgorithms: @dataclass(frozen=True) class ParallelAlgorithms(AlgoSelection): neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO pounders: Type[Pounders] = Pounders pygmo_gaco: Type[PygmoGaco] = PygmoGaco @@ -3678,6 +3709,7 @@ class Algorithms(AlgoSelection): nag_dfols: Type[NagDFOLS] = NagDFOLS nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel + nevergrad_oneplusone: Type[NevergradOnePlusOne] = NevergradOnePlusOne nevergrad_pso: Type[NevergradPSO] = NevergradPSO nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ diff --git a/src/optimagic/optimizers/nevergrad_optimizers.py b/src/optimagic/optimizers/nevergrad_optimizers.py index 5ec0023bf..5b73fa31f 100644 --- a/src/optimagic/optimizers/nevergrad_optimizers.py +++ b/src/optimagic/optimizers/nevergrad_optimizers.py @@ -2,7 +2,7 @@ import math from dataclasses import dataclass -from typing import Literal +from typing import Literal, Tuple import numpy as np from numpy.typing import NDArray @@ -108,3 +108,127 @@ def _solve_internal_problem( ) return result + + +@mark.minimizer( + name="nevergrad_oneplusone", + solver_type=AggregationLevel.SCALAR, + is_available=IS_NEVERGRAD_INSTALLED, + is_global=False, + needs_jac=False, + needs_hess=False, + supports_parallelism=True, + supports_bounds=True, + supports_linear_constraints=False, + supports_nonlinear_constraints=False, + disable_history=False, +) +@dataclass(frozen=True) +class NevergradOnePlusOne(Algorithm): + noise_handling: str | Tuple[str, float] | None = None + mutation: Literal[ + "gaussian", + "cauchy", + "discrete", + "fastga", + "rls", + "doublefastga", + "adaptive", + "coordinatewise_adaptive", + "portfolio", + "discreteBSO", + "lengler", + "lengler2", + "lengler3", + "lenglerhalf", + "lenglerfourth", + "doerr", + "lognormal", + "xlognormal", + "xsmalllognormal", + "tinylognormal", + "lognormal", + "smalllognormal", + "biglognormal", + "hugelognormal", + ] = "gaussian" + annealing: Literal[ + "none", "Exp0.9", "Exp0.99", "Exp0.9Auto", "Lin100.0", "Lin1.0", "LinAuto" + ] = "none" + sparse: bool | int = False + super_radii: bool = False + smoother: bool = False + roulette_size: int = 2 + antismooth: int = 55 + crossover: bool = False + crossover_type: Literal["none", "rand", "max", "min", "onepoint", "twopoint"] = ( + "none" + ) + tabu_length: int = 0 + rotation: bool = False + seed: int | None = None + + stopping_maxfun: PositiveInt = STOPPING_MAXFUN_GLOBAL + n_cores: PositiveInt = 1 + + def _solve_internal_problem( + self, problem: InternalOptimizationProblem, x0: NDArray[np.float64] + ) -> InternalOptimizeResult: + if not IS_NEVERGRAD_INSTALLED: + raise NotInstalledError( + "The nevergrad_pso optimizer requires the 'nevergrad' package to be " + "installed. You can install it with `pip install nevergrad`. " + "Visit https://facebookresearch.github.io/nevergrad/getting_started.html" + " for more detailed installation instructions." + ) + + instrum = ng.p.Instrumentation( + ng.p.Array(init=x0, lower=problem.bounds.lower, upper=problem.bounds.upper) + ) + if self.seed is not None: + instrum.random_state.seed(self.seed) + + optimizer = ng.optimizers.ParametrizedOnePlusOne( + noise_handling=self.noise_handling, + tabu_length=self.tabu_length, + mutation=self.mutation, + crossover=self.crossover, + rotation=self.rotation, + annealing=self.annealing, + sparse=self.sparse, + smoother=self.smoother, + super_radii=self.super_radii, + roulette_size=self.roulette_size, + antismooth=self.antismooth, + crossover_type=self.crossover_type, + )( + parametrization=instrum, + budget=self.stopping_maxfun, + num_workers=self.n_cores, + ) + + while optimizer.num_ask < self.stopping_maxfun: + x_list = [ + optimizer.ask() + for _ in range( + min(self.n_cores, self.stopping_maxfun - optimizer.num_ask) + ) + ] + losses = problem.batch_fun( + [x.value[0][0] for x in x_list], n_cores=self.n_cores + ) + for x, loss in zip(x_list, losses, strict=True): + optimizer.tell(x, loss) + + recommendation = optimizer.provide_recommendation() + + result = InternalOptimizeResult( + x=recommendation.value[0][0], + fun=recommendation.loss, + success=True, + n_fun_evals=optimizer.num_ask, + n_jac_evals=0, + n_hess_evals=0, + ) + + return result From 7c9e0ab1ea131fc38756eb7fedec8275c28a4e98 Mon Sep 17 00:00:00 2001 From: Gulshan Kumar Date: Tue, 6 May 2025 08:37:34 +0530 Subject: [PATCH 2/3] changed bound setting method to avoid nan and inf --- src/optimagic/optimizers/nevergrad_optimizers.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/optimagic/optimizers/nevergrad_optimizers.py b/src/optimagic/optimizers/nevergrad_optimizers.py index 5b73fa31f..90d28a4bd 100644 --- a/src/optimagic/optimizers/nevergrad_optimizers.py +++ b/src/optimagic/optimizers/nevergrad_optimizers.py @@ -182,9 +182,11 @@ def _solve_internal_problem( " for more detailed installation instructions." ) - instrum = ng.p.Instrumentation( - ng.p.Array(init=x0, lower=problem.bounds.lower, upper=problem.bounds.upper) + instrum = ng.p.Array(init=x0).set_bounds( + lower=problem.bounds.lower, upper=problem.bounds.upper ) + instrum = ng.p.Instrumentation(instrum) + if self.seed is not None: instrum.random_state.seed(self.seed) From 940f18f60f2165052420f7cf0acbea3452c05081 Mon Sep 17 00:00:00 2001 From: Gulshan Kumar Date: Tue, 6 May 2025 10:30:10 +0530 Subject: [PATCH 3/3] Mutation added to avoid looking at inf, some parameter tuning --- src/optimagic/optimizers/nevergrad_optimizers.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/optimagic/optimizers/nevergrad_optimizers.py b/src/optimagic/optimizers/nevergrad_optimizers.py index 90d28a4bd..ace9552e5 100644 --- a/src/optimagic/optimizers/nevergrad_optimizers.py +++ b/src/optimagic/optimizers/nevergrad_optimizers.py @@ -151,20 +151,20 @@ class NevergradOnePlusOne(Algorithm): "smalllognormal", "biglognormal", "hugelognormal", - ] = "gaussian" + ] = "cauchy" annealing: Literal[ "none", "Exp0.9", "Exp0.99", "Exp0.9Auto", "Lin100.0", "Lin1.0", "LinAuto" ] = "none" sparse: bool | int = False super_radii: bool = False smoother: bool = False - roulette_size: int = 2 - antismooth: int = 55 + roulette_size: int = 64 + antismooth: int = 10 crossover: bool = False crossover_type: Literal["none", "rand", "max", "min", "onepoint", "twopoint"] = ( "none" ) - tabu_length: int = 0 + tabu_length: int = 10000 rotation: bool = False seed: int | None = None @@ -182,9 +182,10 @@ def _solve_internal_problem( " for more detailed installation instructions." ) - instrum = ng.p.Array(init=x0).set_bounds( - lower=problem.bounds.lower, upper=problem.bounds.upper - ) + instrum = ng.p.Array( + init=x0, lower=problem.bounds.lower, upper=problem.bounds.upper + ).set_mutation(sigma=1.0 + 1e-7) + instrum.specify_tabu_length(tabu_length=self.tabu_length) instrum = ng.p.Instrumentation(instrum) if self.seed is not None: @@ -192,7 +193,6 @@ def _solve_internal_problem( optimizer = ng.optimizers.ParametrizedOnePlusOne( noise_handling=self.noise_handling, - tabu_length=self.tabu_length, mutation=self.mutation, crossover=self.crossover, rotation=self.rotation,