Building surrogate model by using SUMO toolbox on Matlab

Building surrogate model by using SUMO toolbox on Matlab
In this brief report, a couple of approaches were used to build a surrogate model for the given
data train. With a fixed accuracy, this report compares different results.
1. Using “kriging” approach, all the detailed explanation can be found from the documentation
of SUMO toolbox.
<Adapti veModelBuil der type="AdaptiveModelBuilder" combineOutputs="false">
<Option key="nBestModels" value="1"/>
<!-- See the documentation for possible regression and correlation functions -->
<ModelFactory type="KrigingFactory">
<Option key="regressionMetric" value=""/>
<Option key="regressionFunction" value="regpoly0"/>
<Option key="multipleBasisFunctionsAllowed" value="false"/>
<Option key="initialHp" value="0.5"/>
<BasisFunction>corrgauss</BasisFunction>
<Optimizer>fminconWithDerivatives</Optimizer>
</ModelFactory>
</AdaptiveModelBuilder>
Then, the model can be plot as followed. (The black line is the reference, and the red dash line is
the surrogate model.)
0.15
0.1
current
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
time
0.6
0.7
0.8
1
0.9
-7
x 10
2. Using “dace” approach.
<Adapti veModelBuil der type="SequentialModelBuilder" combineOutputs="false">
<!-- Maximum number of models built before selecting new samples -->
<Option key="maximu mRun Length" value="20"/>
<!-- Degeneration of score if a model gets older -->
<Option key="decay" value=".9"/>
<!-- Size of the best model history -->
<Option key="historySize" value="15"/>
<!-- One of best, last. When set to best the best `historySize' models are kept,
- - when set to last, the last `historySize' models are kept -->
<Option key="strategy" value="best"/>
<!-- <Option key="strategy" value="window"/>
-->
<ModelFactory type="BFFactory">
<Option key="type" value="DACE"/>
<BasisFunction name="gaussian" min=".1" max="5" scale="ln"/>
<BasisFunction name="multiquadric" min=".1" max="5" scale="ln"/>
<!--<BasisFunction name="biharmonic" min=".1" max="5" scale="ln"/>
-->
<BasisFunction name="exponential" min=".1,.5" max="5,2" scale="ln,lin"/>
<Option key="regression" value="-1,0,1,2"/>
<Option key="backend" value="AP"/>
</ModelFactory>
</Adapti veModelBuil der>
The result is followed (The black line is the reference, and the red dash line is the surrogate
model.):
0.15
0.1
current
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
time
0.6
0.7
0.8
0.9
1
-7
x 10
3. Taking the “Radial basis function” approach.
<Adapti veModelBuil der type="SequentialModelBuilder" combineOutputs="false">
<!-- Maximum number of models built before selecting new samples -->
<Option key="maximu mRun Length" value="20"/>
<!-- Degeneration of score if a model gets older -->
<Option key="decay" value=".9"/>
<!-- Size of the best model history -->
<Option key="historySize" value="15"/>
<!-- One of best, last. When set to best the best `historySize' models are kept,
- - when set to last, the last `historySize' models are kept -->
<Option key="strategy" value="best"/>
<!-- <Option key="strategy" value="window"/>
-->
<ModelFactory type="BFFactory">
<Option key="type" value="RBF"/>
<BasisFunction name="gaussian" min=".1" max="5" scale="ln"/>
<BasisFunction name="multiquadric" min=".1" max="5" scale="ln"/>
<!--<BasisFunction name="biharmonic" min=".1" max="5" scale="ln"/>
-->
<BasisFunction name="exponential" min=".1,.5" max="5,2" scale="ln,lin"/>
<Option key="regression" value="-1,0,1,2"/>
<Option key="backend" value="AP"/>
</ModelFactory>
</AdaptiveModelBuilder>
The model is plotted (The black line is the reference, and the red dash line is the surrogate model.)
0.15
0.1
current
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
time
0.6
0.7
0.8
1
0.9
-7
x 10
4. Taking the “blindkriging” method,
<Adapti veModelBuil der type="AdaptiveModelBuilder" combineOutputs="false">
<Option key="nBestModels" value="1"/>
<!-- See the documentation for possible regression and correlation functions -->
<ModelFactory type="KrigingFactory">
<Option key="regressionMetric" value="cvpe"/>
<Option key="regressionFunction" value="regpoly0"/>
<Option key="multipleBasisFunctionsAllowed" value="false"/>
<Option key="initialHp" value="0.5"/>
<BasisFunction>corrgauss</BasisFunction>
<Optimizer>fminconWithDerivatives</Optimizer>
</ModelFactory>
</AdaptiveModelBuilder>
The result is (The black line is the reference, and the red dash line is the surrogate model.):
0.15
0.1
current
0.05
0
-0.05
-0.1
0
0.1
0.2
0.3
0.4
0.5
time
0.6
0.7
0.8
1
0.9
-7
x 10
Comparing the above figures, it can be conclude that in our case, the “dace” approach builds a
better surrogate model. Since, the “dace” result shows a better match between the reference data
and the model.