https://github.com/SciML/Surrogates.jl
Surrogate modeling and optimization for scientific machine learning (SciML)
https://github.com/SciML/Surrogates.jl
automatic-differentiation differential-equations high-performance-computing julia optimization scientific-machine-learning sciml surrogate surrogate-based-optimization surrogate-models surrogates
Last synced: 2 months ago
JSON representation
Surrogate modeling and optimization for scientific machine learning (SciML)
- Host: GitHub
- URL: https://github.com/SciML/Surrogates.jl
- Owner: SciML
- License: other
- Created: 2019-05-08T18:27:16.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-20T08:37:02.000Z (9 months ago)
- Last Synced: 2024-11-02T18:31:02.616Z (8 months ago)
- Topics: automatic-differentiation, differential-equations, high-performance-computing, julia, optimization, scientific-machine-learning, sciml, surrogate, surrogate-based-optimization, surrogate-models, surrogates
- Language: Julia
- Homepage: https://docs.sciml.ai/Surrogates/stable/
- Size: 261 MB
- Stars: 335
- Watchers: 13
- Forks: 69
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-sciml - SciML/Surrogates.jl: Surrogate modeling and optimization for scientific machine learning (SciML)
README
## Surrogates.jl
[](https://julialang.zulipchat.com/#narrow/stream/279055-sciml-bridged)
[](https://docs.sciml.ai/Surrogates/stable/)[](https://codecov.io/gh/SciML/Surrogates.jl)
[](https://github.com/SciML/Surrogates.jl/actions?query=workflow%3ACI)[](https://github.com/SciML/ColPrac)
[](https://github.com/SciML/SciMLStyle)[](https://doi.org/10.5281/zenodo.12571718)
A surrogate model is an approximation method that mimics the behavior of a computationally
expensive simulation. In more mathematical terms: suppose we are attempting to optimize a function
`f(p)`, but each calculation of `f` is very expensive. It may be the case we need to solve a PDE for each point or use advanced numerical linear algebra machinery, which is usually costly. The idea is then to develop a surrogate model `g` which approximates `f` by training on previous data collected from evaluations of `f`.
The construction of a surrogate model can be seen as a three-step process:1. Sample selection
2. Construction of the surrogate model
3. Surrogate optimizationSampling can be done through [QuasiMonteCarlo.jl](https://github.com/SciML/QuasiMonteCarlo.jl), all the functions available there can be used in Surrogates.jl.
## ALL the currently available surrogate models:
- Kriging
- Kriging using Stheno
- Radial Basis
- Wendland
- Linear
- Second Order Polynomial
- Support Vector Machines (Wait for LIBSVM resolution)
- Neural Networks
- Random Forests
- Lobachevsky
- Inverse-distance
- Polynomial expansions
- Variable fidelity
- Mixture of experts (Waiting GaussianMixtures package to work on v1.5)
- Earth
- Gradient Enhanced Kriging## ALL the currently available optimization methods:
- SRBF
- LCBS
- DYCORS
- EI
- SOP
- Multi-optimization: SMB and RTEA## Installing Surrogates package
```julia
using Pkg
Pkg.add("Surrogates")
```