<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>modeling assistant software</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anastasia V. Demidova</string-name>
          <email>demidova-av@rudn.ru</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tatyana R. Velieva</string-name>
          <email>velieva-tr@rudn.ru</email>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anna V. Korolkova</string-name>
          <email>korolkova-av@rudn.ru</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dmitry S. Kulyabov</string-name>
          <email>kulyabov-ds@rudn.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Laboratory of Information Technologies, Joint Institute for Nuclear Research</institution>
          ,
          <addr-line>6 Joliot-Curie St., Dubna, Moscow region</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Peoples' Friendship University of Russia (RUDN University)</institution>
          ,
          <addr-line>6 Miklukho-Maklaya St, Moscow, 117198, Russian</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Plekhanov Russian University of Economics</institution>
          ,
          <addr-line>36 Stremyanny lane, Moscow, 117997, Russian Federation</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <fpage>19</fpage>
      <lpage>23</lpage>
      <abstract>
        <p>Computer modeling is designed to predict the behavior of complex systems by solving the corresponding mathematical equations of the physical process. The simulation requires a huge number of parameters to be found, and they all require a large number of simulation runs, where each run takes a diferent combination of design parameters as input. Computer simulations tend to be expensive. Research that requires a large number of computer calculations will lead to exorbitant computational costs, which will make them practically impracticable. This is what surrogate modeling is for. Surrogate modeling builds a statistical model to accurately approximate the simulation result. Subsequently, this trained model can replace the original computer simulation when performing system analysis.</p>
      </abstract>
      <kwd-group>
        <kwd>surrogate modeling</kwd>
        <kwd>Julia language</kwd>
        <kwd>Python language</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Recently, statistical modeling, a subsection of mathematical modeling that uses the mathematical
apparatus of machine learning [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ], has been intensively developing. Surrogate modeling is a
subsection of statistical modeling. When building a surrogate model, a so-called surrogate is
built, a substitute for a computationally complex mathematical model for a simpler one that
imitates the behavior of the main model. Such a model should satisfy the requirement of fast
computation at arbitrary points. Surrogate modeling is the replacement of a computationally
complex function with a computationally simpler function.
      </p>
      <p>Surrogate modeling builds a statistical model to accurately approximate the simulation
result. Subsequently, this trained model can replace the original computer simulation when
performing system analysis. Surrogate modeling methods make a resource-intensive analysis
Workshop on information technology and scientific computing in the framework of the XI International Conference
LGOBE</p>
      <p>CEUR
of a computational model more accessible, since evaluating the trained statistical model is much
faster than evaluating the original simulation, performing many experiments with various
combinations of design parameters.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Surrogate modeling</title>
      <p>The process of building a surrogate model can be divided into three main stages, which can be
alternated iteratively:
• Receiving and preprocessing data. As data can be used as data obtained as a result of tests
and computational experiments or an analytical method. In addition, this stage involves
reducing the dimension of the data by removing unnecessary or redundant parameters
from the dataset and forming a training sample.
• Construction of a surrogate model and optimization of model parameters. At this stage,
the method for implementing the model should be chosen. The most common methods
include models such as Kriging, Artificial Neural Networks, Support Vector Regression,
Multivariate Nonparametric Regression, Polynomial Regression, etc. The model allows
constructing an approximation based on the selected training sample. For best results,
you can plot multiple approximation curves.
• Estimating the accuracy of the surrogate model. The accuracy of the surrogate model
depends on the quantity and quality of the data. In addition, a poor fit can arise from
noise in the data or from poorly chosen surrogate model building techniques.</p>
      <sec id="sec-2-1">
        <title>2.1. Data collection methods</title>
        <p>The first step in building a surrogate model is collecting training data. After collecting the input
data and the corresponding output data into a training set, we can build a statistical model
based on this set.</p>
        <p>Let’s list the main methods of data selection when building surrogate models:
• random selection;
• Latin sample of the hypercube;
• factorial sampling;
• low discrepancy sequences.</p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Methods of construction of surrogates</title>
        <p>After collecting the data, we build the model. Now there are many surrogate models, and the
choice of model depends on the task: classification, approximation, forecast, etc.</p>
        <p>Let’s list the main methods for constructing and training surrogate models:
• linear models;
• radially basic models;
• kriging;
• inverse distance weighted method;
• spline method;
• 2nd order polynomial method.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Surrogate modeling toolkits</title>
      <p>
        Let’s list the most popular general-purpose surrogate modeling packages.
• Matlab toolbox SUrrogate MOdeling (SUMO) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is an extremely powerful package that
is widely used in scientific research.
• A specialized library named SMT [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ] has been developed for the Python language,
which supports many surrogate modeling methods, such as kriging, linear methods, radial
basis method, etc.
• The machine learning library scikit-learn [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] has several methods for constructing
surrogates, including kriging and linear methods.
• SciML/Surrogates.jl library [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ] is implemented for Julia programming language. It is
ideologically similar to the SMT library. This package supports many necessary methods
for working with surrogate models: linear models, kriging, splines, etc.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Surrogate modeling package on Julia SciML/Surrogates.jl</title>
      <p>SciML/Surrogates.jl package is for surrogate modeling and optimization for scientific machine
learning. To install the package, just run the commands as follows:
using Pkg
Pkg.add("Surrogates")</p>
      <p>The SciML/Surrogates.jl package provides all the necessary tools for the complete process of
creating a surrogate model. We will build a surrogate model in three stages.
• Sample selection. The following methods are implemented for sampling:
– Grid sample;
– Uniform sample;
– Sobol sample;
– Latin Hypercube sample;
– Low discrepancy sample.
– Linear;
– Radial Basis;
– Kriging;
– Neural Network;
– Support Vector Machine;
– Random Forest;
– Second Order Polynomial;
– Inverse Distance.
• Building a surrogate model. The following surrogates are available:
• Optimization. After the surrogate is built, it needs to be optimized for some objective
function. The following optimization methods are available:
– Stochastic RBF (SRBF);
– Lower confidence bound strategy (LCBS);
– Expected improvement (EI);
– Dynamic coordinate search (DYCORS).</p>
    </sec>
    <sec id="sec-5">
      <title>5. Surrogate modeling package on Python SMT</title>
      <p>
        Surrogate Modeling Toolkit (SMT) [
        <xref ref-type="bibr" rid="ref4 ref5">5, 4</xref>
        ] is an open-source Python package consisting of libraries
of surrogate modeling techniques (e.g. radial basis functions, kriging), sampling techniques,
and the tasks of comparative analysis. SMT is designed to make it easy to develop new test
models on a well-tested and well-documented platform.
      </p>
      <p>SMT consists of three main modules that implement a set of sampling methods, benchmarking
functions, and surrogate modeling methods, respectively. Each module contains a common
interface inherited by the corresponding methods, and each method implements the functionality
required by the interface.</p>
      <p>There are two main steps required to build a surrogate model. First, we generate a set of
training points from the input space. This step can be done using one of the sampling methods
implemented in SMT, or by loading an existing training dataset. Second, we train the desired
surrogate model at these points and make a prediction of the outputs and derivatives.</p>
      <p>SMT contains a library of sampling techniques used to generate sets of points in the input
space for both training and prediction.</p>
    </sec>
    <sec id="sec-6">
      <title>6. An example of surrogates construction</title>
      <p>Let’s consider the construction of surrogates using the SciML/Surrogates.jl library as an example.</p>
      <p>Let us consider various methods using the example of collecting samples to build a surrogate
model for the simplest function as follows
 () =
sin .</p>
      <p>(1)</p>
      <sec id="sec-6-1">
        <title>6.1. Sample selection</title>
        <p>To generate samples by various methods for the function under consideration on the interval
[0, 30] at 15 points using the built-in functions of the SciML/Surrogates.jl package:
# Grid method
x_grid = sample(n_samples, lower_bound, upper_bound, GridSample(0.2))
y_grid = f.(x_grid)
# Uniform method
x_uniform = sample(n_samples, lower_bound, upper_bound, UniformSample())
y_uniform = f.(x_uniform)
# Sobol method
x_sobol = sample(n_samples, lower_bound, upper_bound, SobolSample())
y_sobol = f.(x_sobol)
# Latin hypercube method
x_lh = sample(n_samples, lower_bound, upper_bound, LatinHypercubeSample())
y_lh = f.(x_lh)</p>
        <p>The graphic 1 shows the results of generating samples. It can be seen from the graph that
for this example, the best examples are provided by the Sobol sequence methods and the Latin
hypercube method.</p>
      </sec>
      <sec id="sec-6-2">
        <title>6.2. Construction of surrogates</title>
        <p>To construct a surrogate model of the (1) function, we use various methods implemented in the
SciML/Surrogates.jl library:
# Radial basis method
RBF_surrogate = RadialBasis(x, y, lower_bound, upper_bound)
# Kriging
kriging_surrogate = Kriging(x, y, lower_bound, upper_bound, p=1.9)
# Lobachesky method
lobachevsky_surrogate = LobacheskySurrogate(x, y, lower_bound, upper_bound,
↪ alpha = 2.0, n = 6)
# Inverse distance method
InverseDistance = InverseDistanceSurrogate(x, y, lower_bound, upper_bound)</p>
        <p>The simulation results using these methods for the sequences obtained by the Sobol selection
method and the Latin Hypercube selection method are presented in the graphics 2 and 3.</p>
        <p>It can be concluded that for the studied example for constructing a surrogate model, the
radially basic method gives the worst of the presented results. While kriging and Lobachevsky’s
method give approximately the same picture.</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>7. Conclusion</title>
      <p>In this article, we reviewed the main opensource surrogate modeling toolkits. To study the
features of software implementations, a simple surrogate model was built. The Surrogates.jl
and SMT libraries are given as examples of surrogate modeling implementation. From the point
of view of the authors, the Python SMT library is currently slightly superior to the Julia library
Surrogates.jl.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgments</title>
      <p>This paper has been supported by the RUDN University Strategic Academic Leadership Program
(Anastasia V. Demidova), by the Russian Science Foundation grant No. 19-71-30008 (Tatyana R.
Velieva) by the Russian Foundation for Basic Research (RFBR) according to the research project
No 19-01-00645 (Anna V. Korolkova, Dmitry S. Kulyabov).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L. A.</given-names>
            <surname>Sevastianov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. L.</given-names>
            <surname>Sevastianov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. A.</given-names>
            <surname>Ayrjan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Korolkova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kulyabov</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Pokorny</surname>
          </string-name>
          ,
          <article-title>Structural approach to the deep learning method</article-title>
          , in: V.
          <string-name>
            <surname>Korenkov</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Strizh</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Nechaevskiy</surname>
          </string-name>
          , T. Zaikina (Eds.),
          <source>Proceedings of the 27th Symposium on Nuclear Electronics and Computing (NEC-2019)</source>
          , volume
          <volume>2507</volume>
          <source>of CEUR Workshop Proceedings</source>
          , Budva,
          <year>2019</year>
          , pp.
          <fpage>272</fpage>
          -
          <lpage>275</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M. N.</given-names>
            <surname>Gevorkyan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Demidova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kulyabov</surname>
          </string-name>
          ,
          <article-title>Comparative analysis of machine learning methods by the example of the problem of determining muon decay</article-title>
          ,
          <source>Discrete and Continuous Models and Applied Computational Science</source>
          <volume>28</volume>
          (
          <year>2020</year>
          )
          <fpage>105</fpage>
          -
          <lpage>119</lpage>
          . doi:
          <volume>10</volume>
          .22363/
          <fpage>2658</fpage>
          - 4670- 2020- 28- 2-
          <fpage>105</fpage>
          - 119.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>SUrrogate</given-names>
            <surname>MOdeling (SUMO) Toolbox</surname>
          </string-name>
          ,
          <year>2021</year>
          . URL: http://www.sumo.intec.ugent.be/SUMO_ toolbox.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Smt</surname>
          </string-name>
          : Surrogate modeling toolbox,
          <year>2021</year>
          . URL: https://github.com/SMTorg/SMT.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Bouhlel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. T.</given-names>
            <surname>Hwang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Bartoli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lafage</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Morlier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Martins</surname>
          </string-name>
          ,
          <article-title>A python surrogate modeling framework with derivatives</article-title>
          ,
          <source>Advances in Engineering Software</source>
          <volume>135</volume>
          (
          <year>2019</year>
          )
          <article-title>102662</article-title>
          . doi:
          <volume>10</volume>
          .1016/j.advengsoft.
          <year>2019</year>
          .
          <volume>03</volume>
          .005.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>[6] scikit-learn: Machine learning in python, 2021</article-title>
          . URL: https://scikit-learn.org/stable/index. html.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] Surrogate modeling and optimization for scientific machine learning (sciml</article-title>
          ),
          <year>2021</year>
          . URL: https://github.com/SciML/Surrogates.jl.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8] Surrogates.jl,
          <year>2021</year>
          . URL: https://surrogates.sciml.ai/latest/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>