Skip to main content

Surrogate-based 0-th Order Global Optimization for black-box problems

Project description

Python39 Python310 Python311 Python312

soogo

Surrogate-based 0-th Order Global Optimization for black-box problems.

Current functionality

Optimization algorithm Description Tags
surrogate_optimization() Minimize a scalar function using a surrogate and an acquisition function based on (Björkman & Holmström; 2000) and (Müller; 2016). mixed-integer
multistart_msrs() Multistart Local Metric Stochastic Response Surface (LMSRS) (Regis & Shoemaker; 2007). Applies a derivative-free local search algorithm to obtain new samples. Restarts the surrogate model with new design points whenever the local search has converged. multi-start, RBF
dycors() Dynamic Coordinate Search (DYCORS) (Regis & Shoemaker; 2012). Acquisition cycles between global and local search. Uses the DDS search from (Tolson & Shoemaker; 2007) to generate pools of candidates. mixed-integer, RBF
cptv() Minimize a scalar function using rounds of coordinate perturbation (CP) and target value (TV) acquisition functions (Müller; 2016). Derivative-free local search is used to improve a prospective global minimum mixed-integer, RBF
socemo() Surrogate-based optimization of computationally expensive multiobjective problems (SOCEMO) (Müller; 2017a). multi-objective, mixed-integer, RBF
gosac() Global optimization with surrogate approximation of constraints (GOSAC) (Müller; 2017b). mixed-integer, black-box-constraint, RBF
bayesian_optimization() Bayesian optimization with dispersion-enhanced expected improvement acquisition (Müller; 2024). GP, batch
shebo() Surrogate optimization of problems with hidden constraints and expensive black-box objectives (SHEBO) (Müller & Day; 2019). hidden-constraint, expensive-objective, RBF
fsapso() Fast Surrogate Assisted Particle Swarm Optimization (Li et al.; 2020). RBF, PSO
Acquisition function Description
WeightedAcquisition Weighted acquisition function based on the predicted value and distance to the nearest sample (Regis & Shoemaker; 2012). Used in multistart_msrs(), dycors(), and in the CP step from cptv(). It uses average values for the multi-objective scenario (Müller; 2017a).
TargetValueAcquisition Target value acquisition based from (Gutmann; 2001). Used in the TV step from cptv(). Cycles through target values as in (Björkman & Holmström; 2000). For batched acquisition, uses the strategy from (Müller; 2016) to avoid duplicates.
MinimizeSurrogate Sample at the local minimum of the surrogate model (Müller; 2016). The original method, Multi-Level Single-Linkage (MLSL), is described in (Rinnooy Kan & Timmer; 1987).
MaximizeEI Maximize the expected improvement acquisition function for Gaussian processes. Use the dispersion-enhanced strategy from (Müller; 2024) for batch sampling.
ParetoFront Sample at the Pareto front of the multi-objective surrogate model to fill gaps in the surface (Müller; 2017a).
MinimizeMOSurrogate Obtain pareto-optimal sample points for the multi-objective surrogate model (Müller; 2017a).
GosacSample Minimize a function with surrogate constraints to obtain a single new sample point (Müller; 2017b).
TransitionSearch Weighted acquisition function that balances local and global search using a weighted score. Filters candidate points using evaluability surrogate. (Müller & Day; 2019).
MaximizeDistance Maximizes the minimum distance to the set of current points. Used in shebo() and as a fallback in EndPointsParetoFront and GosacSample (Müller & Day; 2019).

Installation

Use PyPI to install this package:

pip install soogo

See other installation methods below.

Binaries

The binaries for the latest version are available at https://github.com/NREL/soogo/releases/latest. They can be installed through standard installation, e.g.,

using pip (https://pip.pypa.io/en/stable/cli/pip_install/):

pip install git+https://github.com/NREL/soogo.git#egg=soogo

From source

This package contains a pyproject.toml with the list of requirements and dependencies (More about pyproject.toml at https://packaging.python.org/en/latest/specifications/pyproject-toml/). With the source downloaded to your local machine, use pip install [soogo/source/directory].

For developers

This project is configured to use the package manager pdm. With pdm installed, run pdm install at the root of this repository to install the dependencies. The file pyproject.toml has the list of dependencies and configurations for the project.

Documentation

This project uses Sphinx to generate the documentation. The latest documentation is available at https://nrel.github.io/soogo. To generate the documentation locally, run make html in the docs directory. The homepage of the documentation will then be found at docs/_build/html/index.html.

Testing

This project uses pytest to run the tests. To run the tests, run pytest at the root of this repository. Run pytest --help to see the available options.

Contributing

Please, read the contributing guidelines before contributing to this project.

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.


NLR Software Record number: SWR-24-57

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soogo-2.0.0.tar.gz (101.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soogo-2.0.0-py3-none-any.whl (117.6 kB view details)

Uploaded Python 3

File details

Details for the file soogo-2.0.0.tar.gz.

File metadata

  • Download URL: soogo-2.0.0.tar.gz
  • Upload date:
  • Size: 101.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for soogo-2.0.0.tar.gz
Algorithm Hash digest
SHA256 a354d59a64ee7ac2a1996571d8e9d50120b88d0a2e50b7e3b2c92e6ebac956d4
MD5 b9b8e77c0f2555c1c8ecc368db2c32a7
BLAKE2b-256 6dfa6122a12f50d525b8f11eb8cc844f2c14287cfaa7685b558506ee75b0e32d

See more details on using hashes here.

Provenance

The following attestation bundles were made for soogo-2.0.0.tar.gz:

Publisher: python-publish.yml on NREL/soogo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soogo-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: soogo-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 117.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for soogo-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 675ad4eaf7605917b10731738770058aa1ec6621524206d843ef5d309593a209
MD5 01008bebf6449821a55da0f0f36f1301
BLAKE2b-256 76b63c52ee248cc8c3cb47226d815849de2ee8f118317095e85917e4264c5cbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for soogo-2.0.0-py3-none-any.whl:

Publisher: python-publish.yml on NREL/soogo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page