Skip to content

Add CMAES optimizer from nevergrad #591

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .tools/envs/testenv-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies:
- pybaum>=0.1.2 # run, tests
- scipy>=1.2.1 # run, tests
- sqlalchemy # run, tests
- nevergrad # run, tests
- seaborn # dev, tests
- mypy=1.14.1 # dev, tests
- pyyaml # dev, tests
Expand Down
1 change: 1 addition & 0 deletions .tools/envs/testenv-numpy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ dependencies:
- pybaum>=0.1.2 # run, tests
- scipy>=1.2.1 # run, tests
- sqlalchemy # run, tests
- nevergrad # run, tests
- seaborn # dev, tests
- mypy=1.14.1 # dev, tests
- pyyaml # dev, tests
Expand Down
1 change: 1 addition & 0 deletions .tools/envs/testenv-others.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ dependencies:
- pybaum>=0.1.2 # run, tests
- scipy>=1.2.1 # run, tests
- sqlalchemy # run, tests
- nevergrad # run, tests
- seaborn # dev, tests
- mypy=1.14.1 # dev, tests
- pyyaml # dev, tests
Expand Down
1 change: 1 addition & 0 deletions .tools/envs/testenv-pandas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ dependencies:
- pybaum>=0.1.2 # run, tests
- scipy>=1.2.1 # run, tests
- sqlalchemy # run, tests
- nevergrad # run, tests
- seaborn # dev, tests
- mypy=1.14.1 # dev, tests
- pyyaml # dev, tests
Expand Down
1 change: 1 addition & 0 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ dependencies:
- scipy>=1.2.1 # run, tests
- sqlalchemy # run, tests
- myst-nb # docs
- nevergrad # run, tests
- sphinx # docs
- sphinx-copybutton # docs
- sphinx-design # docs
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ dependencies = [
"sqlalchemy>=1.3",
"annotated-types",
"typing-extensions",
"nevergrad",
]
dynamic = ["version"]
keywords = [
Expand Down Expand Up @@ -349,6 +350,7 @@ module = [
"cyipopt",
"nlopt",
"bokeh",
"nevergrad",
"bokeh.layouts",
"bokeh.models",
"bokeh.plotting",
Expand Down
33 changes: 33 additions & 0 deletions src/optimagic/algorithms.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,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 NevergradCMAES
from optimagic.optimizers.nlopt_optimizers import (
NloptBOBYQA,
NloptCCSAQ,
Expand Down Expand Up @@ -170,6 +171,7 @@ def Scalar(

@dataclass(frozen=True)
class BoundedGlobalGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -362,6 +364,7 @@ def Scalar(self) -> BoundedGlobalGradientFreeNonlinearConstrainedScalarAlgorithm

@dataclass(frozen=True)
class BoundedGlobalGradientFreeScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -401,6 +404,7 @@ def Parallel(self) -> BoundedGlobalGradientFreeParallelScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -456,6 +460,7 @@ def Scalar(self) -> GlobalGradientFreeNonlinearConstrainedParallelScalarAlgorith

@dataclass(frozen=True)
class GlobalGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -603,6 +608,7 @@ def Scalar(self) -> BoundedGradientFreeNonlinearConstrainedParallelScalarAlgorit

@dataclass(frozen=True)
class BoundedGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -697,6 +703,7 @@ def Scalar(self) -> BoundedGlobalNonlinearConstrainedParallelScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1020,6 +1027,7 @@ def Local(self) -> GradientBasedLocalNonlinearConstrainedScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalGradientFreeAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -1083,6 +1091,7 @@ def Scalar(self) -> GlobalGradientFreeNonlinearConstrainedScalarAlgorithms:

@dataclass(frozen=True)
class GlobalGradientFreeScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -1126,6 +1135,7 @@ def Parallel(self) -> GlobalGradientFreeParallelScalarAlgorithms:

@dataclass(frozen=True)
class GlobalGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1291,6 +1301,7 @@ def Scalar(self) -> BoundedGradientFreeNonlinearConstrainedScalarAlgorithms:
@dataclass(frozen=True)
class BoundedGradientFreeScalarAlgorithms(AlgoSelection):
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
Expand Down Expand Up @@ -1362,6 +1373,7 @@ def Parallel(self) -> BoundedGradientFreeLeastSquaresParallelAlgorithms:

@dataclass(frozen=True)
class BoundedGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pounders: Type[Pounders] = Pounders
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
Expand Down Expand Up @@ -1443,6 +1455,7 @@ def Scalar(self) -> GradientFreeNonlinearConstrainedParallelScalarAlgorithms:
@dataclass(frozen=True)
class GradientFreeParallelScalarAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1511,6 +1524,7 @@ def Scalar(self) -> BoundedGlobalNonlinearConstrainedScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -1559,6 +1573,7 @@ def Parallel(self) -> BoundedGlobalParallelScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1627,6 +1642,7 @@ def Scalar(self) -> GlobalNonlinearConstrainedParallelScalarAlgorithms:

@dataclass(frozen=True)
class GlobalParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1860,6 +1876,7 @@ def Scalar(self) -> BoundedNonlinearConstrainedParallelScalarAlgorithms:

@dataclass(frozen=True)
class BoundedParallelScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -2115,6 +2132,7 @@ def Local(self) -> GradientBasedLikelihoodLocalAlgorithms:

@dataclass(frozen=True)
class GlobalGradientFreeAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -2202,6 +2220,7 @@ def Scalar(self) -> GradientFreeLocalScalarAlgorithms:
class BoundedGradientFreeAlgorithms(AlgoSelection):
nag_dfols: Type[NagDFOLS] = NagDFOLS
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
Expand Down Expand Up @@ -2298,6 +2317,7 @@ def Scalar(self) -> GradientFreeNonlinearConstrainedScalarAlgorithms:
class GradientFreeScalarAlgorithms(AlgoSelection):
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
Expand Down Expand Up @@ -2378,6 +2398,7 @@ def Parallel(self) -> GradientFreeLeastSquaresParallelAlgorithms:
@dataclass(frozen=True)
class GradientFreeParallelAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pounders: Type[Pounders] = Pounders
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
Expand Down Expand Up @@ -2417,6 +2438,7 @@ def Scalar(self) -> GradientFreeParallelScalarAlgorithms:

@dataclass(frozen=True)
class BoundedGlobalAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -2498,6 +2520,7 @@ def Scalar(self) -> GlobalNonlinearConstrainedScalarAlgorithms:

@dataclass(frozen=True)
class GlobalScalarAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -2550,6 +2573,7 @@ def Parallel(self) -> GlobalParallelScalarAlgorithms:

@dataclass(frozen=True)
class GlobalParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -2811,6 +2835,7 @@ class BoundedScalarAlgorithms(AlgoSelection):
fides: Type[Fides] = Fides
ipopt: Type[Ipopt] = Ipopt
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
Expand Down Expand Up @@ -2911,6 +2936,7 @@ def Parallel(self) -> BoundedLeastSquaresParallelAlgorithms:

@dataclass(frozen=True)
class BoundedParallelAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pounders: Type[Pounders] = Pounders
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
Expand Down Expand Up @@ -3012,6 +3038,7 @@ def Scalar(self) -> NonlinearConstrainedParallelScalarAlgorithms:
@dataclass(frozen=True)
class ParallelScalarAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -3118,6 +3145,7 @@ class GradientFreeAlgorithms(AlgoSelection):
nag_dfols: Type[NagDFOLS] = NagDFOLS
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
Expand Down Expand Up @@ -3188,6 +3216,7 @@ def Scalar(self) -> GradientFreeScalarAlgorithms:

@dataclass(frozen=True)
class GlobalAlgorithms(AlgoSelection):
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_crs2_lm: Type[NloptCRS2LM] = NloptCRS2LM
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
Expand Down Expand Up @@ -3319,6 +3348,7 @@ class BoundedAlgorithms(AlgoSelection):
ipopt: Type[Ipopt] = Ipopt
nag_dfols: Type[NagDFOLS] = NagDFOLS
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
Expand Down Expand Up @@ -3454,6 +3484,7 @@ class ScalarAlgorithms(AlgoSelection):
ipopt: Type[Ipopt] = Ipopt
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
Expand Down Expand Up @@ -3582,6 +3613,7 @@ def Local(self) -> LikelihoodLocalAlgorithms:
@dataclass(frozen=True)
class ParallelAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
pounders: Type[Pounders] = Pounders
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
Expand Down Expand Up @@ -3629,6 +3661,7 @@ class Algorithms(AlgoSelection):
nag_dfols: Type[NagDFOLS] = NagDFOLS
nag_pybobyqa: Type[NagPyBOBYQA] = NagPyBOBYQA
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_cmaes: Type[NevergradCMAES] = NevergradCMAES
nlopt_bobyqa: Type[NloptBOBYQA] = NloptBOBYQA
nlopt_ccsaq: Type[NloptCCSAQ] = NloptCCSAQ
nlopt_cobyla: Type[NloptCOBYLA] = NloptCOBYLA
Expand Down
7 changes: 7 additions & 0 deletions src/optimagic/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@
else:
IS_PYGMO_INSTALLED = True

try:
import nevergrad as ng # noqa: F401
except ImportError:
IS_NEVERGRAD_INSTALLED = False
else:
IS_NEVERGRAD_INSTALLED = True

try:
import cyipopt # noqa: F401
except ImportError:
Expand Down
Loading
Loading