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.
© Copyright 2024