Skip to content
Surrogate Modeling Toolbox
Jupyter Notebook Python C++
Branch: master
Clone or download
Latest commit 74f2b2f Jan 20, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc bump 0.4.1 Jan 20, 2020
tutorial add SMT tutorial Aug 30, 2019
.gitattributes minor changes for travis ci Sep 13, 2017
LICENSE.txt changes to get ready to publish on pypi Oct 4, 2017 update coveralls badge url Sep 22, 2019
appveyor.yml add EGO optimizer (#168) Sep 16, 2019
setup.cfg improve packaging Sep 5, 2018 add info messages in case of import error Nov 19, 2019

Build Status Build status Coverage Status

Surrogate Modeling Toolbox

The surrogate modeling toolbox (SMT) is a Python package that contains a collection of surrogate modeling methods, sampling techniques, and benchmarking functions. This package provides a library of surrogate models that is simple to use and facilitates the implementation of additional methods. SMT is different from existing surrogate modeling libraries because of its emphasis on derivatives, including training derivatives used for gradient-enhanced modeling, prediction derivatives, and derivatives with respect to the training data. It also includes new surrogate models that are not available elsewhere: kriging by partial-least squares reduction and energy-minimizing spline interpolation. SMT is documented using custom tools for embedding automatically-tested code and dynamically-generated plots to produce high-quality user guides with minimal effort from contributors. SMT is distributed under the New BSD license.

To cite SMT: M. A. Bouhlel and J. T. Hwang and N. Bartoli and R. Lafage and J. Morlier and J. R. R. A. Martins. A Python surrogate modeling framework with derivatives. Advances in Engineering Software, 2019.

	Author = {Mohamed Amine Bouhlel and John T. Hwang and Nathalie Bartoli and Rémi Lafage and Joseph Morlier and Joaquim R. R. A. Martins},
	Journal = {Advances in Engineering Software},
	Title = {A Python surrogate modeling framework with derivatives},
	pages = {102662},
	year = {2019},
	issn = {0965-9978},
	doi = {},
	Year = {2019}}

Required packages

SMT depends on the following modules: numpy, scipy, scikit-learn, pyDOE2 and Cython.


Clone the repository from github then run:

pip install -e <smt_folder>


To run tests, first install the python testing framework using:

pip install testflo

and run



For examples demonstrating how to use SMT, you can take a look at the tutorial notebook or go to the 'smt/examples' folder.



This repository was created by Mohamed Amine Bouhlel and is maintained by the MDOlab and Onera, the French Aerospace Lab.

Email: or

You can’t perform that action at this time.