Skip to content

Commit

Permalink
Add basic version of parallelized Nelder-Mead (#276)
Browse files Browse the repository at this point in the history
  • Loading branch information
jacekb95 authored Jan 28, 2022
1 parent a9c5c47 commit 916a3f9
Show file tree
Hide file tree
Showing 5 changed files with 578 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,42 @@ noisy criterion functions.
evaluations. Default is 1.


.. dropdown:: neldermead_parallel

Minimize a function using the neldermead_parallel algorithm.

This is a parallel Nelder-Mead algorithm following Lee D., Wiswall M., A parallel
implementation of the simplex function minimization routine,
Computational Economics, 2007.

The algorithm was implemented by Jacek Barszczewski

The algorithm supports the following options:

- **init_simplex_method** (string or callable): Name of the method to create initial
simplex or callable which takes as an argument initial value of parameters
and returns initial simplex as j+1 x j array, where j is length of x.
The default is "gao_han".
- **n_cores** (int): Degree of parallization. The default is 1 (no parallelization).

- **adaptive** (bool): Adjust parameters of Nelder-Mead algorithm to account
for simplex size. The default is True.

- **stopping.max_iterations** (int): Maximum number of algorithm iterations.
The default is STOPPING_MAX_ITERATIONS.

- **convergence.absolute_criterion_tolerance** (float): maximal difference between
function value evaluated on simplex points.
The default is CONVERGENCE_SECOND_BEST_ABSOLUTE_CRITERION_TOLERANCE.

- **convergence.absolute_params_tolerance** (float): maximal distance between points
in the simplex. The default is CONVERGENCE_SECOND_BEST_ABSOLUTE_PARAMS_TOLERANCE.

- **batch_evaluator** (string or callable): See :ref:`batch_evaluators` for
details. Default "joblib".



.. _tao_algorithms:

Optimizers from the Toolkit for Advanced Optimization (TAO)
Expand Down
1 change: 0 additions & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ dependencies:
- numpy
- pandas
- pdbpp
- petsc4py>=3.16.1
- pygmo
- pytest
- pytest-cov
Expand Down
7 changes: 6 additions & 1 deletion src/estimagic/optimization/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from estimagic.optimization import pygmo_optimizers
from estimagic.optimization import scipy_optimizers
from estimagic.optimization import tao_optimizers
from estimagic.optimization.neldermead import neldermead_parallel
from estimagic.optimization.pounders import pounders


Expand All @@ -32,7 +33,11 @@
)

# drop private and helper functions
AVAILABLE_ALGORITHMS = {"pounders": pounders}
AVAILABLE_ALGORITHMS = {
"pounders": pounders,
"neldermead_parallel": neldermead_parallel,
}

PUBLIC_HELPERS = [
"calculate_trustregion_initial_radius",
"get_scipy_bounds",
Expand Down
Loading

0 comments on commit 916a3f9

Please sign in to comment.