Skip to content

Pygad optimizer #616

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 20 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 @@ -28,6 +28,7 @@ dependencies:
- jinja2 # dev, tests
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # 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 @@ -26,6 +26,7 @@ dependencies:
- jinja2 # dev, tests
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # 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 @@ -26,6 +26,7 @@ dependencies:
- jinja2 # dev, tests
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # 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 @@ -26,6 +26,7 @@ dependencies:
- jinja2 # dev, tests
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # dev, tests
Expand Down
1 change: 1 addition & 0 deletions .tools/envs/testenv-plotly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ dependencies:
- jinja2 # dev, tests
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # dev, tests
Expand Down
57 changes: 57 additions & 0 deletions docs/source/algorithms.md
Original file line number Diff line number Diff line change
Expand Up @@ -4043,6 +4043,63 @@ these optimizers, you need to have
initialization for speed. Default is False.
```

## PyGAD Optimizer

optimagic supports the [PyGAD](https://github.com/ahmedfgad/GeneticAlgorithmPython)
genetic algorithm optimizer. To use PyGAD, you need to have
[the pygad package](https://github.com/ahmedfgad/GeneticAlgorithmPython) installed
(`pip install pygad`).

```{eval-rst}
.. dropdown:: pygad

.. code-block::

"pygad"

Minimize a scalar function using the PyGAD genetic algorithm.

PyGAD is a Python library for building genetic algorithms and training machine learning algorithms.
Genetic algorithms are metaheuristics inspired by the process of natural selection that belong to
the larger class of evolutionary algorithms. These algorithms apply biologically inspired
operators such as mutation, crossover, and selection to optimization problems.

The algorithm maintains a population of candidate solutions and iteratively improves them
through genetic operations, making it ideal for global optimization problems with complex
search spaces that may contain multiple local optima.

The algorithm supports the following options:

- **population_size** (int): Number of solutions in each generation. Default is None.
- **num_parents_mating** (int): Number of parents selected for mating in each generation. Default is None.
- **num_generations** (int): Number of generations. Default is None.
- **initial_population** (array-like): initial population is a 2D array where
each row represents a solution and each column represents a parameter (gene) value.
The number of rows must equal population_size, and the number of columns must
match the length of the initial parameters (x0).
When None, the population is randomly generated within the parameter bounds using
the specified population_size and the dimensionality from x0.
- **parent_selection_type** (str or callable): Method for selecting parents. Can be a string ("sss", "rws", "sus", "rank", "random", "tournament") or a custom function with signature ``parent_selection_func(fitness, num_parents, ga_instance) -> tuple[NDArray, NDArray]``. Default is "sss".
- **keep_parents** (int): Number of best parents to keep in the next generation. Only has effect when keep_elitism is 0. Default is -1.
- **keep_elitism** (int): Number of best solutions to preserve across generations. If non-zero, keep_parents has no effect. Default is 1.
- **K_tournament** (int): Tournament size for tournament selection. Only used when parent_selection_type is "tournament". Default is 3.
- **crossover_type** (str, callable, or None): Crossover method. Can be a string ("single_point", "two_points", "uniform", "scattered"), a custom function with signature ``crossover_func(parents, offspring_size, ga_instance) -> NDArray``, or None to disable crossover. Default is "single_point".
- **crossover_probability** (float): Probability of applying crossover. Range [0, 1]. Default is None.
- **mutation_type** (str, callable, or None): Mutation method. Can be a string ("random", "swap", "inversion", "scramble", "adaptive"), a custom function with signature ``mutation_func(offspring, ga_instance) -> NDArray``, or None to disable mutation. Default is "random".
- **mutation_probability** (float/list/tuple/array): Probability of mutation. Range [0, 1]. If specified, mutation_percent_genes and mutation_num_genes are ignored. Default is None.
- **mutation_percent_genes** (float/str/list/tuple/array): Percentage of genes to mutate. Default is "default" (equivalent to 10%). Ignored if mutation_probability or mutation_num_genes are specified.
- **mutation_num_genes** (int/list/tuple/array): Exact number of genes to mutate. Ignored if mutation_probability is specified. Default is None.
- **mutation_by_replacement** (bool): Whether to replace gene values during mutation. Only works with mutation_type="random". Default is False.
- **random_mutation_min_val** (float/list/array): Minimum value for random mutation. Only used with mutation_type="random". Default is -1.0.
- **random_mutation_max_val** (float/list/array): Maximum value for random mutation. Only used with mutation_type="random". Default is 1.0.
- **allow_duplicate_genes** (bool): Whether to allow duplicate gene values within a solution. Default is True.
- **fitness_batch_size** (int): Number of solutions to evaluate in parallel batches. When None and n_cores > 1, automatically set to n_cores for optimal parallelization. Default is None.
- **stop_criteria** (str/list): Early stopping criteria. Format: "reach_value" or "saturate_N". Default is None.
- **n_cores** (int): Number of cores for parallel fitness evaluation. Default is 1.
- **random_seed** (int): Random seed for reproducibility. Default is None.

```

## References

```{eval-rst}
Expand Down
1 change: 1 addition & 0 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ dependencies:
- furo # dev, docs
- annotated-types # dev, tests
- iminuit # dev, tests
- pygad # dev, tests
- pip: # dev, tests, docs
- nevergrad # dev, tests
- DFO-LS>=1.5.3 # dev, tests
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -381,5 +381,6 @@ module = [
"pdbp",
"iminuit",
"nevergrad",
"pygad",
]
ignore_missing_imports = true
33 changes: 33 additions & 0 deletions src/optimagic/algorithms.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
NloptVAR,
)
from optimagic.optimizers.pounders import Pounders
from optimagic.optimizers.pygad_optimizer import Pygad
from optimagic.optimizers.pygmo_optimizers import (
PygmoBeeColony,
PygmoCmaes,
Expand Down Expand Up @@ -173,6 +174,7 @@ def Scalar(
@dataclass(frozen=True)
class BoundedGlobalGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -371,6 +373,7 @@ class BoundedGlobalGradientFreeScalarAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -407,6 +410,7 @@ def Parallel(self) -> BoundedGlobalGradientFreeParallelScalarAlgorithms:
@dataclass(frozen=True)
class BoundedGlobalGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -463,6 +467,7 @@ def Scalar(self) -> GlobalGradientFreeNonlinearConstrainedParallelScalarAlgorith
@dataclass(frozen=True)
class GlobalGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -611,6 +616,7 @@ def Scalar(self) -> BoundedGradientFreeNonlinearConstrainedParallelScalarAlgorit
@dataclass(frozen=True)
class BoundedGradientFreeParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -706,6 +712,7 @@ def Scalar(self) -> BoundedGlobalNonlinearConstrainedParallelScalarAlgorithms:
@dataclass(frozen=True)
class BoundedGlobalParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1037,6 +1044,7 @@ class BoundedGlobalGradientFreeAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -1101,6 +1109,7 @@ class GlobalGradientFreeScalarAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -1141,6 +1150,7 @@ def Parallel(self) -> GlobalGradientFreeParallelScalarAlgorithms:
@dataclass(frozen=True)
class GlobalGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1316,6 +1326,7 @@ class BoundedGradientFreeScalarAlgorithms(AlgoSelection):
nlopt_newuoa: Type[NloptNEWUOA] = NloptNEWUOA
nlopt_neldermead: Type[NloptNelderMead] = NloptNelderMead
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -1380,6 +1391,7 @@ def Parallel(self) -> BoundedGradientFreeLeastSquaresParallelAlgorithms:
class BoundedGradientFreeParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1461,6 +1473,7 @@ def Scalar(self) -> GradientFreeNonlinearConstrainedParallelScalarAlgorithms:
class GradientFreeParallelScalarAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1534,6 +1547,7 @@ class BoundedGlobalScalarAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -1579,6 +1593,7 @@ def Parallel(self) -> BoundedGlobalParallelScalarAlgorithms:
@dataclass(frozen=True)
class BoundedGlobalParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1648,6 +1663,7 @@ def Scalar(self) -> GlobalNonlinearConstrainedParallelScalarAlgorithms:
@dataclass(frozen=True)
class GlobalParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -1883,6 +1899,7 @@ def Scalar(self) -> BoundedNonlinearConstrainedParallelScalarAlgorithms:
@dataclass(frozen=True)
class BoundedParallelScalarAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -2146,6 +2163,7 @@ class GlobalGradientFreeAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2240,6 +2258,7 @@ class BoundedGradientFreeAlgorithms(AlgoSelection):
nlopt_neldermead: Type[NloptNelderMead] = NloptNelderMead
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2337,6 +2356,7 @@ class GradientFreeScalarAlgorithms(AlgoSelection):
nlopt_neldermead: Type[NloptNelderMead] = NloptNelderMead
nlopt_praxis: Type[NloptPRAXIS] = NloptPRAXIS
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2409,6 +2429,7 @@ class GradientFreeParallelAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -2452,6 +2473,7 @@ class BoundedGlobalAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2534,6 +2556,7 @@ class GlobalScalarAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2583,6 +2606,7 @@ def Parallel(self) -> GlobalParallelScalarAlgorithms:
@dataclass(frozen=True)
class GlobalParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -2863,6 +2887,7 @@ class BoundedScalarAlgorithms(AlgoSelection):
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
nlopt_tnewton: Type[NloptTNewton] = NloptTNewton
nlopt_var: Type[NloptVAR] = NloptVAR
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -2950,6 +2975,7 @@ def Parallel(self) -> BoundedLeastSquaresParallelAlgorithms:
class BoundedParallelAlgorithms(AlgoSelection):
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -3051,6 +3077,7 @@ def Scalar(self) -> NonlinearConstrainedParallelScalarAlgorithms:
class ParallelScalarAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -3170,6 +3197,7 @@ class GradientFreeAlgorithms(AlgoSelection):
nlopt_praxis: Type[NloptPRAXIS] = NloptPRAXIS
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -3234,6 +3262,7 @@ class GlobalAlgorithms(AlgoSelection):
nlopt_direct: Type[NloptDirect] = NloptDirect
nlopt_esch: Type[NloptESCH] = NloptESCH
nlopt_isres: Type[NloptISRES] = NloptISRES
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -3380,6 +3409,7 @@ class BoundedAlgorithms(AlgoSelection):
nlopt_tnewton: Type[NloptTNewton] = NloptTNewton
nlopt_var: Type[NloptVAR] = NloptVAR
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -3517,6 +3547,7 @@ class ScalarAlgorithms(AlgoSelection):
nlopt_sbplx: Type[NloptSbplx] = NloptSbplx
nlopt_tnewton: Type[NloptTNewton] = NloptTNewton
nlopt_var: Type[NloptVAR] = NloptVAR
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down Expand Up @@ -3631,6 +3662,7 @@ class ParallelAlgorithms(AlgoSelection):
neldermead_parallel: Type[NelderMeadParallel] = NelderMeadParallel
nevergrad_pso: Type[NevergradPSO] = NevergradPSO
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_gaco: Type[PygmoGaco] = PygmoGaco
pygmo_pso_gen: Type[PygmoPsoGen] = PygmoPsoGen
scipy_brute: Type[ScipyBrute] = ScipyBrute
Expand Down Expand Up @@ -3696,6 +3728,7 @@ class Algorithms(AlgoSelection):
nlopt_tnewton: Type[NloptTNewton] = NloptTNewton
nlopt_var: Type[NloptVAR] = NloptVAR
pounders: Type[Pounders] = Pounders
pygad: Type[Pygad] = Pygad
pygmo_bee_colony: Type[PygmoBeeColony] = PygmoBeeColony
pygmo_cmaes: Type[PygmoCmaes] = PygmoCmaes
pygmo_compass_search: Type[PygmoCompassSearch] = PygmoCompassSearch
Expand Down
Loading
Loading