From e1c32b78c62b86a68f68f5e0fbe9d4c61cf34851 Mon Sep 17 00:00:00 2001
From: Clara Witte <clara.witte@avt.rwth-aachen.de>
Date: Thu, 23 Jan 2025 10:57:03 +0100
Subject: [PATCH] Release version v0.8.2

---
 .gitignore                                    |    2 +
 .gitmodules                                   |    6 +-
 AUTHORS                                       |   13 +-
 ReleaseNotes.txt                              |   18 +-
 cmake/MAiNGOversion.cmake                     |    2 +-
 dep/babbase                                   |    2 +-
 dep/melon                                     |    2 +-
 dep/nlopt                                     |    2 +-
 doc/manual.dox                                |   17 +-
 .../09_MultifidelityGaussianProcess/README.md |    4 +
 .../modelData/highGpData.json                 |  686 +++++
 .../modelData/lowGpData.json                  | 2366 +++++++++++++++++
 .../modelData/rho.json                        |    3 +
 .../multifidelityGP.py                        |   41 +
 .../problemMulfilGpReducedSpace.h             |   93 +
 examples/MAiNGOSettings.txt                   |    2 +-
 examples/mainCppApi.cpp                       |    2 +
 inc/TwoStageModel.h                           |    2 +-
 inc/bab.h                                     |   96 +-
 inc/settings.h                                |    6 +-
 maingopy/_maingopy.cpp                        |    4 +-
 .../tests/individualPythonTests/testSolver.py |    4 +-
 pyproject.toml                                |    7 +
 setup.py                                      |   16 +-
 src/MAiNGO.cpp                                |   10 +-
 src/MAiNGOsetOption.cpp                       |    6 +-
 src/MAiNGOwritingFunctions.cpp                |   49 +-
 src/bab.cpp                                   |   67 +-
 src/lbpLinearizationStrats.cpp                |    2 +-
 src/pointIsWithinNodeBounds.cpp               |    1 +
 src/ubp.cpp                                   |    7 +-
 31 files changed, 3389 insertions(+), 149 deletions(-)
 create mode 100644 examples/09_MultifidelityGaussianProcess/README.md
 create mode 100644 examples/09_MultifidelityGaussianProcess/modelData/highGpData.json
 create mode 100644 examples/09_MultifidelityGaussianProcess/modelData/lowGpData.json
 create mode 100644 examples/09_MultifidelityGaussianProcess/modelData/rho.json
 create mode 100644 examples/09_MultifidelityGaussianProcess/multifidelityGP.py
 create mode 100644 examples/09_MultifidelityGaussianProcess/problemMulfilGpReducedSpace.h
 create mode 100644 pyproject.toml

diff --git a/.gitignore b/.gitignore
index 314b5d5..99f5bcf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+.venv/
+.vs/
 build/
 Build/
 _skbuild/
diff --git a/.gitmodules b/.gitmodules
index 6fad4ae..284cd62 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
 [submodule "dep/filib"]
 	path = dep/filib
 	url = ../../public/thirdparty/filib.git
-[submodule "dep/nlopt"]
-	path = dep/nlopt
-	url = ../../public/thirdparty/nlopt.git
 [submodule "dep/fadbad"]
 	path = dep/fadbad
 	url = ../../public/thirdparty/fadbad.git
@@ -52,3 +49,6 @@
 [submodule "dep/melon"]
 	path = dep/melon
 	url = ../../public/melon.git
+[submodule "dep/nlopt"]
+	path = dep/nlopt
+	url = ../../public/thirdparty/nlopt.git
diff --git a/AUTHORS b/AUTHORS
index 6013fd2..c4c3beb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -31,9 +31,18 @@ Contributors:
     CI/CD & unit testing
     Refactoring
     Python parallelization
-  
+
+- Susanne Sass (AVT.SVT, RWTH Aachen University)
+    Algorithm for large parameter estimation problems
+
+- Marco Langiu (IEK-10, Forschungszentrum Jülich / AVT.SVT, RWTH Aachen University)
+    Two-Stage Stochastic Programming problem class and algorithm
+
+- Rene Görgen (AVT.SVT, RWTH Aachen University)
+    Python build & CI/CD
+
 - Jannik Burre          (AVT.SVT, RWTH Aachen University)
   Wolfgang R. Huster    (AVT.SVT, RWTH Aachen University)
   Kaan Karacasulu       (AVT.SVT, RWTH Aachen University)
-  Marco Langiu          (IEK-10, Forschungszentrum Jülich)
+  Marco Langiu          (IEK-10, Forschungszentrum Jülich / AVT.SVT, RWTH Aachen University)
     Testing and bug reports
\ No newline at end of file
diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt
index bdc0afd..447ad83 100644
--- a/ReleaseNotes.txt
+++ b/ReleaseNotes.txt
@@ -1,6 +1,16 @@
+Release version 0.8.2 (January 23th, 2025):
+    - New features:
+	- Added example for optimization of multifidelity Gaussian processes using MeLOn
+	- Added compliance with PEP 517: python wheels are now installable with Poetry, Pixi, etc.
+    - Bugfixes:
+	- Minor bug fixes
+	- Bug fixes in extension for handling parameter estimation problems
+    - Third-party libraries:
+	- Upgraded to Nlopt version 2.9.1
+
 Release version 0.8.1 (July 23th, 2024):
     - Bugfixes:
-	-Add missing commit in babbase
+	- Added missing commit in babbase
 
 Release version 0.8.0 (July 23th, 2024):
     - New features & extensions: 
@@ -29,15 +39,15 @@ Release version 0.7.2 (October 31th, 2023):
 
 Release version 0.7.1 (July 26th, 2023):
     - Bugfixes:
-        - Add missing commmit in babbase
+        - Added missing commmit in babbase
 
 Release version 0.7.0 (July 26th, 2023):
     - New features & interfaces:
         - MAiNGO can also be used in parallel in python (requires package mpi4py)
         - MAiNGO is now also available in JuMP
     - Bugfixes:
-        - in Utility MAiNGOReaderWriter
-	- in writing into ALE syntax
+        - In Utility MAiNGOReaderWriter
+	- In writing into ALE syntax
 
 Release version 0.6.0 (May 26th, 2023):
     - New features & interfaces:
diff --git a/cmake/MAiNGOversion.cmake b/cmake/MAiNGOversion.cmake
index 9ef9bf5..9c429ec 100644
--- a/cmake/MAiNGOversion.cmake
+++ b/cmake/MAiNGOversion.cmake
@@ -1,3 +1,3 @@
 set(MAiNGO_VERSION
-0.8.1
+0.8.2
 )
diff --git a/dep/babbase b/dep/babbase
index b6f4cc8..e18df0d 160000
--- a/dep/babbase
+++ b/dep/babbase
@@ -1 +1 @@
-Subproject commit b6f4cc80d26e4ce7377f0c30ae19acfa2c82a3ea
+Subproject commit e18df0d087a150ffa6f4cbaee2a9ffeb46ab11ae
diff --git a/dep/melon b/dep/melon
index f81eca7..9ee5621 160000
--- a/dep/melon
+++ b/dep/melon
@@ -1 +1 @@
-Subproject commit f81eca75e67c88be3cdc5c30844f95be9a58d6e9
+Subproject commit 9ee56216a07f211ac405fb1a4a40764de9ac32f6
diff --git a/dep/nlopt b/dep/nlopt
index 798f331..63e6075 160000
--- a/dep/nlopt
+++ b/dep/nlopt
@@ -1 +1 @@
-Subproject commit 798f331644352daaeedc4cea0e8ca67bba2328f3
+Subproject commit 63e60751cb36031b2d7008a3456896c5a77c7143
diff --git a/doc/manual.dox b/doc/manual.dox
index 7e6ab38..93d943a 100644
--- a/doc/manual.dox
+++ b/doc/manual.dox
@@ -1895,10 +1895,9 @@ In this case you can reset it via <tt>\<mpiexec\> -remove</tt>.
 @section growing_datasets MAiNGO - Parameter estimation
 
 MAiNGO implements the extension for handling parameter estimation problems considering large datasets proposed in
-
-S. Sass, A. Mitsos, D. Bongartz, I. H. Bell, N. I. Nikolov, A. Tsoukalas (2024): (<a href="https://doi.org/10.1016/j.ejor.2024.02.020">A branch-and-bound algorithm with growing datasets for large-scale parameter estimation</a>), <b>European Journal of Operational Research</b>, 316(1), 36-35
-
-Sass, S., Mitsos, A., Nikolov, N. I., & Tsoukalas, A. (Submitted 2024):  Out-of-sample estimation for a branch-and-bound algorithm with growing datasets.
+    - S. Sass, A. Mitsos, D. Bongartz, I. H. Bell, N. I. Nikolov, A. Tsoukalas (2024): <a href="https://doi.org/10.1016/j.ejor.2024.02.020">A branch-and-bound algorithm with growing datasets for large-scale parameter estimation</a>, <b>European Journal of Operational Research</b>, 316(1), 36-35
+    - S. Sass, A. Mitsos, N. I. Nikolov, A. Tsoukalas (Submitted 2024):  Out-of-sample estimation for a branch-and-bound algorithm with growing datasets
+    - S. Sass (2024): <a href="https://doi.org/10.18154/RWTH-2024-11336">Global parameter estimation for the efficient optimization of real-world applications</a>, Ph.D. Thesis, RWTH Aachen University.
 
 This approach focuses on general nonconvex optimization problems of the form
 \htmlonly <style>div.image img[src="ParamEstProblem.PNG"]{width:6cm;align:left}</style> \endhtmlonly
@@ -1931,7 +1930,7 @@ It may look like this:
 
 Additional settings allow to adapt this extension to the needs of the specific model solved, cf. settings with prefix <tt>growing</tt> in <tt>MAiNGOSettings.txt</tt>.
 These include, e.g., the choice when and how many data points to augment as well as the size of the initial dataset.
-For more details please refer to (<a href="https://doi.org/10.1016/j.ejor.2024.02.020">Sass et al. (2024)</a>) and Sass et al. (Submitted 2024) referenced above.
+For more details please refer to <a href="https://doi.org/10.18154/RWTH-2024-11336">Sass (2024)</a> referenced above.
 
 @section two_stage MAiNGO - Two-Stage Stochastic Programming
 
@@ -1953,7 +1952,6 @@ Note that above we used \f$\boldsymbol{y} = (\boldsymbol{y}_1, \cdots, \boldsymb
 The first-stage objective and constraints \f$f_\mathrm{I}\f$, and \f$\boldsymbol{g}_\mathrm{I}\f$ are functions of \f$\boldsymbol{x}\f$ only and the second-stage objective and constraints \f$f_\mathrm{II}\f$, and \f$\boldsymbol{g}_\mathrm{II}\f$ are functions of both \f$\boldsymbol{x}\f$ and \f$\boldsymbol{y}_s\f$, as well as the parameters \f$\boldsymbol{p}_s\f$
 (Note that in the above representation all constraints are assumed to be inequality constraints for ease of exposition). 
 
-
 Problems of this type can be specified via the \ref maingo::TwoStageModel class which is a specialization of the standard \ref maingo::MAiNGOmodel.
 Initializing a \ref maingo::TwoStageModel requires:
 
@@ -2000,6 +1998,10 @@ In the python interface this class is available as maingopy.TwoStageModel.
 Also see the examples in `examples/08_TwoStage`.
 
 The resulting problems are solved via a specialized variant of the default branch-and-bound algorithm, which exploits the problem structure for efficiency.
+The algorithm is presented in:
+
+M. Langiu, M. Dahmen, D. Bongartz, A. Mitsos (2024). MUSE-BB: A Decomposition Algorithm for Nonconvex Two-Stage Problems using Strong Multisection Branching, Submitted to Journal of Global Optimization. (Preprint available at <a href="https://optimization-online.org/?p=26862">https://optimization-online.org/?p=26862</a>)
+
 In particular, the algorithm bounds the optimal solution value from above and below by solving separate subproblems for each scenario.
 As part of this algorithm, second-stage variables to be branched are selected via a variant of strong-branching that makes use of these separate subproblems.
 Additionally, the independence of subproblems allows to branch on multiple second-stage variables simultaneously, and create a combinatorial number of nodes from the results from strong-branching.
@@ -2259,4 +2261,7 @@ Examples of MAiNGO applications with machine-learning models using the "MeLOn" t
 MAiNGO with extension for handling parameter estimation problems considering large datasets:
     - S. Sass, A. Tsoukalas, I.H. Bell, D. Bongartz, J. Najman and A. Mitsos, Towards global parameter estimation exploiting reduced data sets, Optimization Methods and Software 38 (2023) 1129-1141.
     - S. Sass, A. Mitsos, D. Bongartz, I.H. Bell, N.I. Nikolov and A. Tsoukalas, A branch-and-bound algorithm with growing datasets for large-scale parameter estimation, European Journal of Operational Research 316 (2024) 36-45.
+
+MAiNGO for solving TSSP (Two-Stage Stochastic Programming) problems:
+    - M. Langiu, M. Dahmen, D. Bongartz, A. Mitsos (2024). MUSE-BB: A Decomposition Algorithm for Nonconvex Two-Stage Problems using Strong Multisection Branching, Submitted to Journal of Global Optimization. (Preprint available at <a href="https://optimization-online.org/?p=26862">https://optimization-online.org/?p=26862</a>).
  */
diff --git a/examples/09_MultifidelityGaussianProcess/README.md b/examples/09_MultifidelityGaussianProcess/README.md
new file mode 100644
index 0000000..852b1a7
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/README.md
@@ -0,0 +1,4 @@
+# Example Problem Number 09 - Optimization with Multifidelity Gaussian processes embedded
+
+First have a look at example '05_GaussianProcess', then come back here
+Please copy the folder 'modelData' into the folder where your MAiNGO executable is in order to run the problem. If you are using Visual Studio, this should be the Release folder containing MAiNGO.exe.
\ No newline at end of file
diff --git a/examples/09_MultifidelityGaussianProcess/modelData/highGpData.json b/examples/09_MultifidelityGaussianProcess/modelData/highGpData.json
new file mode 100644
index 0000000..eef5157
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/modelData/highGpData.json
@@ -0,0 +1,686 @@
+{
+  "nX": 16,
+  "DX": 2,
+  "DY": 1,
+  "X": [
+    [
+      0.5466506078116019,
+      0.7405379033951585
+    ],
+    [
+      0.6022928936278866,
+      0.5479804433818865
+    ],
+    [
+      0.41756566031672404,
+      0.6621889104046206
+    ],
+    [
+      0.4319351335992524,
+      0.9401929919415408
+    ],
+    [
+      0.9745137331068474,
+      0.3654456922826828
+    ],
+    [
+      0.7971823046317001,
+      0.5299032409029939
+    ],
+    [
+      0.566484945445456,
+      0.9784358413693042
+    ],
+    [
+      0.053885228855070605,
+      0.030418935446443793
+    ],
+    [
+      0.0014734122557061372,
+      0.8733112082159229
+    ],
+    [
+      0.783188378776568,
+      0.9155889851529335
+    ],
+    [
+      0.989938473151456,
+      0.8354780584487125
+    ],
+    [
+      0.4565767841041593,
+      0.8144146563434316
+    ],
+    [
+      0.1026054695335997,
+      0.655435407091253
+    ],
+    [
+      0.1284710578343302,
+      1.0
+    ],
+    [
+      0.5188395247791672,
+      0.40074520332141184
+    ],
+    [
+      0.25347551334571866,
+      0.8072966355306401
+    ]
+  ],
+  "Y": [
+    0.12198073608210651,
+    -0.22867625110123513,
+    -0.38675281141320234,
+    0.484069683952157,
+    0.6567210343443561,
+    0.3216000797167893,
+    0.8493142982777245,
+    -2.9885538802195777,
+    -0.14855443857278153,
+    1.1695472778560863,
+    1.5488725432680353,
+    0.14268412434104027,
+    -0.8664142783144493,
+    0.33480706484827133,
+    -0.8042230677250732,
+    -0.20642211534024854
+  ],
+  "K": [
+    [
+      0.0870543611921501,
+      0.0870543597577868,
+      0.08705436038379954,
+      0.08705435930263532,
+      0.08705434969647867,
+      0.08705435738850482,
+      0.08705435915595719,
+      0.08705433460090695,
+      0.08705435005900897,
+      0.08705435811971503,
+      0.08705435392543483,
+      0.08705436071032555,
+      0.08705435396496283,
+      0.0870543526068894,
+      0.08705435703944349,
+      0.08705435799499985
+    ],
+    [
+      0.0870543597577868,
+      0.0870543611921501,
+      0.08705435951990917,
+      0.0870543546703669,
+      0.0870543551051427,
+      0.08705435983794245,
+      0.08705435452669362,
+      0.08705434099654678,
+      0.08705434465542587,
+      0.08705435520741557,
+      0.08705435292854515,
+      0.08705435790523798,
+      0.08705435195569816,
+      0.08705434595971448,
+      0.08705436017132982,
+      0.08705435448948638
+    ],
+    [
+      0.08705436038379954,
+      0.08705435951990917,
+      0.0870543611921501,
+      0.08705435842329788,
+      0.08705434708509183,
+      0.08705435547378824,
+      0.08705435683491332,
+      0.08705434226083415,
+      0.0870543534810253,
+      0.08705435417357842,
+      0.08705434854224672,
+      0.08705436031030088,
+      0.08705435768439146,
+      0.08705435416133704,
+      0.08705435838729439,
+      0.08705435948803737
+    ],
+    [
+      0.08705435930263532,
+      0.0870543546703669,
+      0.08705435842329788,
+      0.0870543611921501,
+      0.08705433899043111,
+      0.08705435046374738,
+      0.08705436049996378,
+      0.08705432658081022,
+      0.08705435448364608,
+      0.08705435680990747,
+      0.08705434979708289,
+      0.08705436060535601,
+      0.08705435446199808,
+      0.08705435780948294,
+      0.08705435052893315,
+      0.08705435943536431
+    ],
+    [
+      0.08705434969647867,
+      0.0870543551051427,
+      0.08705434708509183,
+      0.08705433899043111,
+      0.0870543611921501,
+      0.08705435911423061,
+      0.0870543418866501,
+      0.08705432723909168,
+      0.0870543185322775,
+      0.08705434908614981,
+      0.08705435329048182,
+      0.08705434451216698,
+      0.08705433132884109,
+      0.08705432152371935,
+      0.08705435380945079,
+      0.08705433584921117
+    ],
+    [
+      0.08705435738850482,
+      0.08705435983794245,
+      0.08705435547378824,
+      0.08705435046374738,
+      0.08705435911423061,
+      0.0870543611921501,
+      0.08705435212377295,
+      0.08705433276055963,
+      0.08705433460908969,
+      0.0870543558703892,
+      0.08705435654268363,
+      0.08705435420006734,
+      0.08705434358194339,
+      0.08705433749817706,
+      0.08705435785780993,
+      0.08705434799680964
+    ],
+    [
+      0.08705435915595719,
+      0.08705435452669362,
+      0.08705435683491332,
+      0.08705436049996378,
+      0.0870543418866501,
+      0.08705435212377295,
+      0.0870543611921501,
+      0.08705431981176709,
+      0.08705434951593402,
+      0.08705435939115588,
+      0.08705435412483728,
+      0.08705435980384084,
+      0.08705434986061351,
+      0.08705435439506151,
+      0.08705434918955196,
+      0.08705435668292798
+    ],
+    [
+      0.08705433460090695,
+      0.08705434099654678,
+      0.08705434226083415,
+      0.08705432658081022,
+      0.08705432723909168,
+      0.08705433276055963,
+      0.08705431981176709,
+      0.0870543611921501,
+      0.0870543357177072,
+      0.08705431442075547,
+      0.08705430709600004,
+      0.08705433350834635,
+      0.08705434715285737,
+      0.08705432741895476,
+      0.08705434865332569,
+      0.08705433822605602
+    ],
+    [
+      0.08705435005900897,
+      0.08705434465542587,
+      0.0870543534810253,
+      0.08705435448364608,
+      0.0870543185322775,
+      0.08705433460908969,
+      0.08705434951593402,
+      0.0870543357177072,
+      0.0870543611921501,
+      0.08705433953637831,
+      0.08705432662162217,
+      0.08705435374841952,
+      0.08705435913443708,
+      0.08705436004853365,
+      0.08705434375640235,
+      0.0870543587918325
+    ],
+    [
+      0.08705435811971503,
+      0.08705435520741557,
+      0.08705435417357842,
+      0.08705435680990747,
+      0.08705434908614981,
+      0.0870543558703892,
+      0.08705435939115588,
+      0.08705431442075547,
+      0.08705433953637831,
+      0.0870543611921501,
+      0.08705435945193785,
+      0.0870543570561353,
+      0.08705434240744199,
+      0.08705434579035065,
+      0.08705434925326683,
+      0.08705435085713441
+    ],
+    [
+      0.08705435392543483,
+      0.08705435292854515,
+      0.08705434854224672,
+      0.08705434979708289,
+      0.08705435329048182,
+      0.08705435654268363,
+      0.08705435412483728,
+      0.08705430709600004,
+      0.08705432662162217,
+      0.08705435945193785,
+      0.0870543611921501,
+      0.08705435112312751,
+      0.08705433221570606,
+      0.08705433400443607,
+      0.08705434659811616,
+      0.0870543419988043
+    ],
+    [
+      0.08705436071032555,
+      0.08705435790523798,
+      0.08705436031030088,
+      0.08705436060535601,
+      0.08705434451216698,
+      0.08705435420006734,
+      0.08705435980384084,
+      0.08705433350834635,
+      0.08705435374841952,
+      0.0870543570561353,
+      0.08705435112312751,
+      0.0870543611921501,
+      0.08705435586085222,
+      0.08705435615679537,
+      0.08705435494119872,
+      0.08705435973229435
+    ],
+    [
+      0.08705435396496283,
+      0.08705435195569816,
+      0.08705435768439146,
+      0.08705435446199808,
+      0.08705433132884109,
+      0.08705434358194339,
+      0.08705434986061351,
+      0.08705434715285737,
+      0.08705435913443708,
+      0.08705434240744199,
+      0.08705433221570606,
+      0.08705435586085222,
+      0.0870543611921501,
+      0.08705435692646299,
+      0.08705435275189308,
+      0.08705435956354188
+    ],
+    [
+      0.0870543526068894,
+      0.08705434595971448,
+      0.08705435416133704,
+      0.08705435780948294,
+      0.08705432152371935,
+      0.08705433749817706,
+      0.08705435439506151,
+      0.08705432741895476,
+      0.08705436004853365,
+      0.08705434579035065,
+      0.08705433400443607,
+      0.08705435615679537,
+      0.08705435692646299,
+      0.0870543611921501,
+      0.08705434297942767,
+      0.08705435931291791
+    ],
+    [
+      0.08705435703944349,
+      0.08705436017132982,
+      0.08705435838729439,
+      0.08705435052893315,
+      0.08705435380945079,
+      0.08705435785780993,
+      0.08705434918955196,
+      0.08705434865332569,
+      0.08705434375640235,
+      0.08705434925326683,
+      0.08705434659811616,
+      0.08705435494119872,
+      0.08705435275189308,
+      0.08705434297942767,
+      0.0870543611921501,
+      0.08705435279843572
+    ],
+    [
+      0.08705435799499985,
+      0.08705435448948638,
+      0.08705435948803737,
+      0.08705435943536431,
+      0.08705433584921117,
+      0.08705434799680964,
+      0.08705435668292798,
+      0.08705433822605602,
+      0.0870543587918325,
+      0.08705435085713441,
+      0.0870543419988043,
+      0.08705435973229435,
+      0.08705435956354188,
+      0.08705435931291791,
+      0.08705435279843572,
+      0.0870543611921501
+    ]
+  ],
+  "invK": [
+    [
+      16241664353827.59,
+      -6050915989649.598,
+      -2302135961461.145,
+      4249014847311.3613,
+      100659144259.096,
+      -228543702081.90787,
+      -909484327601.7565,
+      -75592823150.17882,
+      -205754257686.56348,
+      -1730004120426.8606,
+      561341098127.199,
+      -14375478978921.844,
+      14841760729.967985,
+      -337992433425.9679,
+      2338619049184.947,
+      2709762329967.2773
+    ],
+    [
+      -6050237812079.732,
+      10796303065995.383,
+      -2537189368926.702,
+      -1102351443732.2751,
+      878089729399.0824,
+      -4228704137185.871,
+      373943148293.1185,
+      179977258847.58704,
+      -360306893458.1258,
+      296097549394.6848,
+      179067283464.2488,
+      4348379158162.045,
+      518886807572.1892,
+      122206472102.34926,
+      -3630132631500.983,
+      215971832246.19745
+    ],
+    [
+      -2303031985609.4526,
+      -2537113207784.958,
+      8778855304379.168,
+      2534577134970.359,
+      -36378639811.69621,
+      1652433963425.0015,
+      -137864988982.21365,
+      98169593619.33722,
+      1016748991390.1915,
+      744542253078.5204,
+      -453291727882.4206,
+      -4435725602684.818,
+      -1291693494772.5027,
+      -316389154731.6004,
+      -1055156177355.6976,
+      -2258682250168.2974
+    ],
+    [
+      4245654759862.307,
+      -1101810988100.5164,
+      2532319759065.7944,
+      15174638272546.7,
+      111893172937.86835,
+      -161508285342.41428,
+      -8110764146168.349,
+      -54750815454.26472,
+      1412889166672.827,
+      2392865605207.43,
+      -450844929119.29913,
+      -11601090199103.07,
+      139321653114.82993,
+      -2526139722101.705,
+      124189923651.57172,
+      -2126863238106.5537
+    ],
+    [
+      100532458818.39163,
+      878142474118.3217,
+      -36716492656.80326,
+      111626530618.22438,
+      538773882118.93915,
+      -1110382698401.1003,
+      -196199224411.95673,
+      -13642633294.196943,
+      -31498411662.322926,
+      440696666768.25824,
+      -233798075990.503,
+      -136458748701.9127,
+      131522638122.20988,
+      -2561768766.2961597,
+      -368093046116.629,
+      -71943538418.50806
+    ],
+    [
+      -228570737301.45532,
+      -4228722758205.697,
+      1653294185829.4902,
+      -160403855216.8577,
+      -1110304718484.3535,
+      4036494814989.325,
+      558992462654.4534,
+      25140608776.2763,
+      5861429098.591412,
+      -441547090366.3657,
+      -232979123101.87576,
+      -252677895158.63992,
+      -142691882283.86346,
+      58960603501.51838,
+      676087312077.8412,
+      -216933381538.79816
+    ],
+    [
+      -906979535360.1405,
+      372962802218.9742,
+      -134376944336.62527,
+      -8107593464125.881,
+      -196217598281.44553,
+      559655951190.9119,
+      8144338234939.487,
+      26007570475.80743,
+      7539779356.651939,
+      -4092389032912.7646,
+      964738345387.2794,
+      1837776162985.029,
+      -434930371973.38385,
+      117003466679.9884,
+      -253137579282.4747,
+      2095602226492.9158
+    ],
+    [
+      -75466781150.35135,
+      179955127676.6642,
+      98231656197.73634,
+      -54568537444.91087,
+      -13632922013.854237,
+      25126057830.19457,
+      25937092805.652027,
+      71004764687.61581,
+      6199640033.877273,
+      -25872599481.0543,
+      12062469352.16412,
+      -18559339582.20144,
+      -166720892551.00122,
+      12732213523.597101,
+      -219408067487.67337,
+      142980124872.64856
+    ],
+    [
+      -205942795810.7945,
+      -360118666848.5641,
+      1016651209629.9337,
+      1412818001631.8696,
+      -31493208085.052444,
+      5684884896.521638,
+      7578672389.370087,
+      6191026029.496145,
+      2498600540245.1045,
+      11129605.391776623,
+      12441348282.64579,
+      -1187242709442.0334,
+      -1778200115403.5342,
+      -2282388708835.445,
+      352379706472.1124,
+      533029695252.1991
+    ],
+    [
+      -1731520306253.6523,
+      297108544449.7195,
+      742128725543.9752,
+      2390432315347.7007,
+      440715867679.4757,
+      -442089499745.55725,
+      -4091759425927.9077,
+      -25884869491.18776,
+      290309735.2019776,
+      4444201633526.221,
+      -1790921055312.9985,
+      417091145362.95966,
+      81877798309.81337,
+      66457833403.935165,
+      -171028507681.39957,
+      -627100518142.712
+    ],
+    [
+      561897562883.9614,
+      178680603917.49857,
+      -452635119269.2968,
+      -450293589088.4009,
+      -233829739232.2957,
+      -232746330338.08508,
+      964652080442.8279,
+      12066237824.538212,
+      12250701089.95892,
+      -1790986223736.3423,
+      1068475071190.7122,
+      57157262200.35277,
+      -89467622052.84668,
+      -5666066377.441927,
+      234754108364.3006,
+      165691073509.48492
+    ],
+    [
+      -14374639806353.266,
+      4349007307714.7476,
+      -4437388226058.621,
+      -11608520956471.662,
+      -137041499065.57808,
+      -251626104206.60187,
+      1844493307315.5566,
+      -18315309084.677486,
+      -1187812202617.4285,
+      413034486450.6136,
+      58392047913.3203,
+      25850256796227.543,
+      1459451706379.309,
+      2589142690287.2476,
+      -436493556132.42975,
+      -4111940680064.098
+    ],
+    [
+      14050643073.314228,
+      518890195610.077,
+      -1291948888107.4956,
+      138631263529.8665,
+      131504126042.86641,
+      -142606072325.4539,
+      -434988883108.746,
+      -166725431616.8063,
+      -1778266383267.5637,
+      82232100509.5853,
+      -89615514741.87062,
+      1460805157124.1921,
+      2559500854972.6187,
+      1436661118654.6824,
+      -259584913854.131,
+      -2178539385031.7747
+    ],
+    [
+      -337829262177.6747,
+      122043988608.7019,
+      -316517686415.0094,
+      -2526419862853.809,
+      -2587416381.5660105,
+      59155191909.541,
+      117029016362.06055,
+      12752355370.474905,
+      -2282460103493.7944,
+      66740824468.51818,
+      -5849841967.931138,
+      2588851651622.814,
+      1436541408858.5034,
+      2824952855085.785,
+      -253493445138.5159,
+      -1502909665880.1562
+    ],
+    [
+      2338369269616.1504,
+      -3630081012421.8774,
+      -1055470587398.7864,
+      123073324841.6875,
+      -368204809864.61896,
+      676330433977.194,
+      -252256017015.82983,
+      -219397516490.49957,
+      352351634794.76605,
+      -171455472670.5973,
+      234858996076.55853,
+      -435952592402.31476,
+      -259677556415.15768,
+      -253482646880.8744,
+      2597142763613.8447,
+      323851775140.5803
+    ],
+    [
+      2712049963021.502,
+      215668531289.7399,
+      -2257101554936.3296,
+      -2124659992293.244,
+      -71945359072.7441,
+      -216674493322.02383,
+      2096353011459.8677,
+      142999990219.58853,
+      533366069775.2094,
+      -628167718608.7301,
+      165923619651.5378,
+      -4117131265456.6353,
+      -2178562705141.2976,
+      -1503496744138.76,
+      323355047687.4344,
+      6908023587185.115
+    ]
+  ],
+  "meanfunction": -3.7900643790119855,
+  "matern": 3,
+  "sf2": 0.0870543611921501,
+  "ell": [
+    1921.947488860192,
+    1911.5196672684963
+  ],
+  "problemLowerBound": [
+    0.018789800436355142,
+    0.06022547162926983
+  ],
+  "problemUpperBound": [
+    0.9883738380592262,
+    0.9446689170495839
+  ],
+  "stdOfOutput": 0.27904683367496114,
+  "meanOfOutput": 1.0576054643875523
+}
\ No newline at end of file
diff --git a/examples/09_MultifidelityGaussianProcess/modelData/lowGpData.json b/examples/09_MultifidelityGaussianProcess/modelData/lowGpData.json
new file mode 100644
index 0000000..9afa966
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/modelData/lowGpData.json
@@ -0,0 +1,2366 @@
+{
+  "nX": 32,
+  "DX": 2,
+  "DY": 1,
+  "X": [
+    [
+      0.5466506078116019,
+      0.7405379033951585
+    ],
+    [
+      0.6022928936278866,
+      0.5479804433818865
+    ],
+    [
+      0.41756566031672404,
+      0.6621889104046206
+    ],
+    [
+      0.4319351335992524,
+      0.9401929919415408
+    ],
+    [
+      0.9745137331068474,
+      0.3654456922826828
+    ],
+    [
+      0.7971823046317001,
+      0.5299032409029939
+    ],
+    [
+      0.566484945445456,
+      0.9784358413693042
+    ],
+    [
+      0.053885228855070605,
+      0.030418935446443793
+    ],
+    [
+      0.0014734122557061372,
+      0.8733112082159229
+    ],
+    [
+      0.783188378776568,
+      0.9155889851529335
+    ],
+    [
+      0.989938473151456,
+      0.8354780584487125
+    ],
+    [
+      0.4565767841041593,
+      0.8144146563434316
+    ],
+    [
+      0.1026054695335997,
+      0.655435407091253
+    ],
+    [
+      0.1284710578343302,
+      1.0
+    ],
+    [
+      0.5188395247791672,
+      0.40074520332141184
+    ],
+    [
+      0.25347551334571866,
+      0.8072966355306401
+    ],
+    [
+      0.4510805817848137,
+      0.5746082238168013
+    ],
+    [
+      0.0,
+      0.6302381778426875
+    ],
+    [
+      0.6119179970626107,
+      0.6294450234530513
+    ],
+    [
+      0.9539743252642535,
+      0.7028090158764341
+    ],
+    [
+      0.351406465985939,
+      0.4260379610716679
+    ],
+    [
+      0.7001367278644819,
+      0.0
+    ],
+    [
+      0.6683040250930258,
+      0.6901655511719048
+    ],
+    [
+      0.19760304749572163,
+      0.0776769010854445
+    ],
+    [
+      0.3059441358121957,
+      0.34313703254268274
+    ],
+    [
+      0.5687046698225445,
+      0.4278125908358503
+    ],
+    [
+      1.0,
+      0.04728322577921806
+    ],
+    [
+      0.19605000524195476,
+      0.1142911361705985
+    ],
+    [
+      0.6542171698537879,
+      0.21829109810267344
+    ],
+    [
+      0.46155975661185406,
+      0.2082667030052956
+    ],
+    [
+      0.14457723907341058,
+      0.05670195171292458
+    ],
+    [
+      0.6575394852745043,
+      0.08814297864155263
+    ]
+  ],
+  "Y": [
+    0.503772439854271,
+    0.1872685867096385,
+    0.04458829725506552,
+    0.8305948086383758,
+    0.9864303392196728,
+    0.6839493470081153,
+    1.1602654896732443,
+    -2.303803702595444,
+    0.2595867304029469,
+    1.4493085592400978,
+    1.7916884703388605,
+    0.5224593686667744,
+    -0.38835531438862536,
+    0.6958700040471044,
+    -0.3322213758027246,
+    0.20735522400534212,
+    -0.11058312161525664,
+    -0.5051950084956299,
+    0.3883763879485756,
+    1.4387638760342378,
+    -0.6902890598636653,
+    -0.21235068964825268,
+    0.6610291818214974,
+    -1.8258608159896854,
+    -0.9908165746244808,
+    -0.1442291726754745,
+    0.8315874480336799,
+    -1.7647728996437204,
+    -0.21135818706802814,
+    -0.8305191198057609,
+    -2.015199145387314,
+    -0.3173403712934294
+  ],
+  "K": [
+    [
+      277.73537263117913,
+      277.6846005320716,
+      277.6927192671536,
+      277.6752156599048,
+      277.57870975527095,
+      277.6449533518036,
+      277.67569814685123,
+      277.5066148485825,
+      277.57192842306364,
+      277.6533175164575,
+      277.6030880169555,
+      277.70312752570186,
+      277.6032863141427,
+      277.5965662349211,
+      277.6501574383007,
+      277.6476942897422,
+      277.6853381728577,
+      277.5725463555118,
+      277.70166018235653,
+      277.6154137986053,
+      277.6381635458298,
+      277.5451330359733,
+      277.69750148933156,
+      277.540772971048,
+      277.6135761180834,
+      277.6570373916554,
+      277.51709620846736,
+      277.5482270551247,
+      277.6012439648274,
+      277.60018454119677,
+      277.5278664190713,
+      277.5693156573492
+    ],
+    [
+      277.6846005320716,
+      277.73537263117913,
+      277.67409483806154,
+      277.62543179930253,
+      277.61697165827945,
+      277.67796978132293,
+      277.62740859360946,
+      277.52897125272955,
+      277.54120534914404,
+      277.6293474416823,
+      277.600828562025,
+      277.65628865079753,
+      277.5862424418863,
+      277.5562741191456,
+      277.6911958225855,
+      277.6142201162946,
+      277.69047644143546,
+      277.55737240638575,
+      277.71483866607224,
+      277.62512249061336,
+      277.65566614322825,
+      277.59560892629503,
+      277.6949283906751,
+      277.56835762336397,
+      277.6344499740066,
+      277.7037923512606,
+      277.56434849858715,
+      277.57431016003335,
+      277.65167129714627,
+      277.64103938876343,
+      277.5534663425554,
+      277.61944854771497
+    ],
+    [
+      277.6927192671536,
+      277.67409483806154,
+      277.73537263117913,
+      277.6658438872909,
+      277.55587954972617,
+      277.619129292494,
+      277.6451281290628,
+      277.5449494202669,
+      277.60233052960456,
+      277.61077860274753,
+      277.56186522969847,
+      277.6956802331189,
+      277.6428816679303,
+      277.6157293881639,
+      277.663651489856,
+      277.6750924161409,
+      277.71139454240785,
+      277.61251855709656,
+      277.6777227069082,
+      277.5775699342522,
+      277.6733012450114,
+      277.55044985854187,
+      277.66142025392344,
+      277.5758269236295,
+      277.6492477667048,
+      277.66193784068935,
+      277.5056346552213,
+      277.58394106094534,
+      277.60458910206995,
+      277.6213312658598,
+      277.5643128324425,
+      277.5757084326281
+    ],
+    [
+      277.6752156599048,
+      277.62543179930253,
+      277.6658438872909,
+      277.73537263117913,
+      277.52102932211267,
+      277.58709606619215,
+      277.6947265089757,
+      277.4826654551469,
+      277.60789465384596,
+      277.6320603044252,
+      277.5694867690955,
+      277.70314846933144,
+      277.6153672048152,
+      277.64502993364056,
+      277.5983259837194,
+      277.6733525291251,
+      277.64393912072774,
+      277.58682738139044,
+      277.6415116745521,
+      277.57106170293343,
+      277.60487414972624,
+      277.4878843521705,
+      277.64203512995357,
+      277.50939256576766,
+      277.58182519978135,
+      277.60132220812983,
+      277.4570751848831,
+      277.5179308299253,
+      277.54374543845296,
+      277.5524858283034,
+      277.499301513622,
+      277.51265306344294
+    ],
+    [
+      277.57870975527095,
+      277.61697165827945,
+      277.55587954972617,
+      277.52102932211267,
+      277.73537263117913,
+      277.6690650694518,
+      277.5410697375576,
+      277.4525213117442,
+      277.4229358931199,
+      277.5870111173566,
+      277.61795706011543,
+      277.546496171818,
+      277.4694163379982,
+      277.440865711103,
+      277.6013021023311,
+      277.49672118869563,
+      277.5730803660485,
+      277.44181578985365,
+      277.61017147873537,
+      277.6509402622981,
+      277.5518277475976,
+      277.6136743644495,
+      277.6143261024674,
+      277.4962829705933,
+      277.53903137352086,
+      277.6152160254442,
+      277.6555966478744,
+      277.49842649127027,
+      277.6344119973091,
+      277.579754680917,
+      277.47987194096504,
+      277.61938946623326
+    ],
+    [
+      277.6449533518036,
+      277.67796978132293,
+      277.619129292494,
+      277.58709606619215,
+      277.6690650694518,
+      277.7353726254634,
+      277.60452086119403,
+      277.4840979789957,
+      277.4865834460798,
+      277.6390075198529,
+      277.64039050551077,
+      277.61272036220913,
+      277.52908639944945,
+      277.506691883884,
+      277.64751756170915,
+      277.56138898086436,
+      277.6331444176253,
+      277.5000358736715,
+      277.6755667681196,
+      277.67226407401677,
+      277.6019546455777,
+      277.6000700753062,
+      277.6803021492913,
+      277.52628770177887,
+      277.5838081378482,
+      277.66360884523795,
+      277.60099331265894,
+      277.53068106952094,
+      277.6469816597632,
+      277.60827033346806,
+      277.5103298756722,
+      277.6177266410997
+    ],
+    [
+      277.67569814685123,
+      277.62740859360946,
+      277.6451281290628,
+      277.6947265089757,
+      277.5410697375576,
+      277.60452086119403,
+      277.73537263117913,
+      277.45501106460614,
+      277.5674394187285,
+      277.66983745690595,
+      277.6060306982601,
+      277.68323626762543,
+      277.57711435768977,
+      277.6066629708338,
+      277.5905013188554,
+      277.63402715162124,
+      277.62902610846044,
+      277.54773646839465,
+      277.64723851624103,
+      277.602424219131,
+      277.5837225226264,
+      277.48806386415396,
+      277.6574473558055,
+      277.4858628709398,
+      277.55932460185545,
+      277.59793096082484,
+      277.4704440975691,
+      277.4938540799914,
+      277.5439125569218,
+      277.54069967700065,
+      277.474133706826,
+      277.5115808611078
+    ],
+    [
+      277.5066148485825,
+      277.52897125272955,
+      277.5449494202669,
+      277.4826654551469,
+      277.4525213117442,
+      277.4840979789957,
+      277.45501106460614,
+      277.73537263117913,
+      277.5244457164709,
+      277.42779549368663,
+      277.3950521561059,
+      277.5067785608455,
+      277.5787144269084,
+      277.4924147344725,
+      277.5705233961232,
+      277.5328212553832,
+      277.55636340021937,
+      277.5848228521997,
+      277.5136014947585,
+      277.42242438319505,
+      277.60353336939,
+      277.545507870329,
+      277.4911702902419,
+      277.6915537392648,
+      277.62780724444485,
+      277.5546002716169,
+      277.4576442509854,
+      277.68867114049385,
+      277.55300603326936,
+      277.6077152024672,
+      277.7079449149607,
+      277.5575759776086
+    ],
+    [
+      277.57192842306364,
+      277.54120534914404,
+      277.60233052960456,
+      277.60789465384596,
+      277.4229358931199,
+      277.4865834460798,
+      277.5674394187285,
+      277.5244457164709,
+      277.73537263117913,
+      277.50566722766,
+      277.44509878912766,
+      277.6009532885706,
+      277.6734034688352,
+      277.68647573107273,
+      277.54307723688623,
+      277.65956700679243,
+      277.5837761848878,
+      277.6746896593685,
+      277.5461166508097,
+      277.4525851379867,
+      277.58365704321574,
+      277.43614186443017,
+      277.5343565188284,
+      277.528622449813,
+      277.57568215043506,
+      277.53514986466644,
+      277.37711467240774,
+      277.53751163447924,
+      277.4835189464643,
+      277.52138924017396,
+      277.52728187281303,
+      277.46065083681503
+    ],
+    [
+      277.6533175164575,
+      277.6293474416823,
+      277.61077860274753,
+      277.6320603044252,
+      277.5870111173566,
+      277.6390075198529,
+      277.66983745690595,
+      277.42779549368663,
+      277.50566722766,
+      277.7353726254634,
+      277.67145617858546,
+      277.63620720740295,
+      277.5253029697028,
+      277.54202450394564,
+      277.5852499909994,
+      277.57753014877585,
+      277.6059462275056,
+      277.49470464763596,
+      277.6480164612341,
+      277.6623236650996,
+      277.5593129322958,
+      277.50557523932866,
+      277.66976192963335,
+      277.4646976164713,
+      277.53527345152884,
+      277.598299693747,
+      277.50951851096494,
+      277.47139168291056,
+      277.5572633458382,
+      277.5351769181549,
+      277.4506452570594,
+      277.52559416200506
+    ],
+    [
+      277.6030880169555,
+      277.600828562025,
+      277.56186522969847,
+      277.5694867690955,
+      277.61795706011543,
+      277.64039050551077,
+      277.6060306982601,
+      277.3950521561059,
+      277.44509878912766,
+      277.67145617858546,
+      277.73537263117913,
+      277.5787019383024,
+      277.4710760276832,
+      277.4791998099031,
+      277.5595886982467,
+      277.519073256799,
+      277.5643049094398,
+      277.4403431051342,
+      277.6130510818403,
+      277.70060837770654,
+      277.5218891139869,
+      277.51017767538815,
+      277.63421183676763,
+      277.43564252855276,
+      277.4999829716693,
+      277.5752281541715,
+      277.53863151091775,
+      277.4409578320549,
+      277.55250058092577,
+      277.51501069654176,
+      277.42022165531904,
+      277.5248749057824
+    ],
+    [
+      277.70312752570186,
+      277.65628865079753,
+      277.6956802331189,
+      277.70314846933144,
+      277.546496171818,
+      277.61272036220913,
+      277.68323626762543,
+      277.5067785608455,
+      277.6009532885706,
+      277.63620720740295,
+      277.5787019383024,
+      277.73537263117913,
+      277.6241274100757,
+      277.62847961276935,
+      277.63050560874814,
+      277.675709986186,
+      277.6754848499498,
+      277.5936647025325,
+      277.67046745337217,
+      277.58671291892034,
+      277.6336256174771,
+      277.5199087181629,
+      277.6658965388947,
+      277.5364011371358,
+      277.609697039591,
+      277.63340656940534,
+      277.4861857922086,
+      277.5446288673188,
+      277.5756683211121,
+      277.5840697847588,
+      277.52525486916653,
+      277.54474809096814
+    ],
+    [
+      277.6032863141427,
+      277.5862424418863,
+      277.6428816679303,
+      277.6153672048152,
+      277.4694163379982,
+      277.52908639944945,
+      277.57711435768977,
+      277.5787144269084,
+      277.6734034688352,
+      277.5253029697028,
+      277.4710760276832,
+      277.6241274100757,
+      277.73537263117913,
+      277.64902391858664,
+      277.59762465219177,
+      277.6770654423195,
+      277.6310884561096,
+      277.7045935474521,
+      277.58570789420395,
+      277.48519334663365,
+      277.64255260732153,
+      277.49554116019436,
+      277.56907363136537,
+      277.58848969013644,
+      277.6371804113119,
+      277.5872085449977,
+      277.4313980990226,
+      277.5975408053444,
+      277.54011750939895,
+      277.58187076672414,
+      277.5854200382947,
+      277.51954635169426
+    ],
+    [
+      277.5965662349211,
+      277.5562741191456,
+      277.6157293881639,
+      277.64502993364056,
+      277.440865711103,
+      277.506691883884,
+      277.6066629708338,
+      277.4924147344725,
+      277.68647573107273,
+      277.54202450394564,
+      277.4791998099031,
+      277.62847961276935,
+      277.64902391858664,
+      277.73537263117913,
+      277.5469526091829,
+      277.67486211703886,
+      277.5930882962495,
+      277.6356608819131,
+      277.5659710369015,
+      277.48197011953425,
+      277.57787000289863,
+      277.43467485614974,
+      277.55903470989404,
+      277.50429918958207,
+      277.5633450720418,
+      277.5427702664729,
+      277.3861911296898,
+      277.5134376680894,
+      277.4866318975023,
+      277.51491095783103,
+      277.4999117234087,
+      277.45988427606164
+    ],
+    [
+      277.6501574383007,
+      277.6911958225855,
+      277.663651489856,
+      277.5983259837194,
+      277.6013021023311,
+      277.64751756170915,
+      277.5905013188554,
+      277.5705233961232,
+      277.54307723688623,
+      277.5852499909994,
+      277.5595886982467,
+      277.63050560874814,
+      277.59762465219177,
+      277.5469526091829,
+      277.73537263117913,
+      277.60743506591234,
+      277.68762507922304,
+      277.57264069937037,
+      277.67207529948973,
+      277.5870353669895,
+      277.6858049152982,
+      277.62205875153325,
+      277.6508400904023,
+      277.6112833424161,
+      277.6712281747343,
+      277.71924555845686,
+      277.56883092537356,
+      277.61665399454836,
+      277.67491799672626,
+      277.68446238922877,
+      277.5959171883886,
+      277.64735036152683
+    ],
+    [
+      277.6476942897422,
+      277.6142201162946,
+      277.6750924161409,
+      277.6733525291251,
+      277.49672118869563,
+      277.56138898086436,
+      277.63402715162124,
+      277.5328212553832,
+      277.65956700679243,
+      277.57753014877585,
+      277.519073256799,
+      277.675709986186,
+      277.6770654423195,
+      277.67486211703886,
+      277.60743506591234,
+      277.73537263117913,
+      277.6532727549011,
+      277.64881347080575,
+      277.6211534065966,
+      277.5280944276469,
+      277.6359521847253,
+      277.4949977525964,
+      277.6101215615163,
+      277.5525312194418,
+      277.61849066991294,
+      277.60294301295795,
+      277.4455839958973,
+      277.5615844431697,
+      277.54708914685875,
+      277.57385824610407,
+      277.5453277127616,
+      277.5202395154829
+    ],
+    [
+      277.6853381728577,
+      277.69047644143546,
+      277.71139454240785,
+      277.64393912072774,
+      277.5730803660485,
+      277.6331444176253,
+      277.62902610846044,
+      277.55636340021937,
+      277.5837761848878,
+      277.6059462275056,
+      277.5643049094398,
+      277.6754848499498,
+      277.6310884561096,
+      277.5930882962495,
+      277.68762507922304,
+      277.6532727549011,
+      277.73537263117913,
+      277.6022143780915,
+      277.68620125561955,
+      277.5843054159508,
+      277.68812542955163,
+      277.57438949703516,
+      277.665370621391,
+      277.59072509894156,
+      277.66357403918477,
+      277.6850148457449,
+      277.5273218759057,
+      277.59823093985574,
+      277.6282827660678,
+      277.64387144213975,
+      277.577869459828,
+      277.5996584649268
+    ],
+    [
+      277.5725463555118,
+      277.55737240638575,
+      277.61251855709656,
+      277.58682738139044,
+      277.44181578985365,
+      277.5000358736715,
+      277.54773646839465,
+      277.5848228521997,
+      277.6746896593685,
+      277.49470464763596,
+      277.4403431051342,
+      277.5936647025325,
+      277.7045935474521,
+      277.6356608819131,
+      277.57264069937037,
+      277.64881347080575,
+      277.6022143780915,
+      277.73537263117913,
+      277.5557352115381,
+      277.4547856784249,
+      277.6202956890692,
+      277.4765886906126,
+      277.5386191273001,
+      277.58574779289165,
+      277.62046194728856,
+      277.56094228138704,
+      277.40781670969335,
+      277.5943119585788,
+      277.51754244769694,
+      277.5637549364324,
+      277.586056466544,
+      277.4996698021263
+    ],
+    [
+      277.70166018235653,
+      277.71483866607224,
+      277.6777227069082,
+      277.6415116745521,
+      277.61017147873537,
+      277.6755667681196,
+      277.64723851624103,
+      277.5136014947585,
+      277.5461166508097,
+      277.6480164612341,
+      277.6130510818403,
+      277.67046745337217,
+      277.58570789420395,
+      277.5659710369015,
+      277.67207529948973,
+      277.6211534065966,
+      277.68620125561955,
+      277.5557352115381,
+      277.73537263117913,
+      277.6332869794448,
+      277.6435641603294,
+      277.57614374331297,
+      277.7129234756288,
+      277.5516379433333,
+      277.620578466145,
+      277.68346109857094,
+      277.55073448969205,
+      277.55806839427424,
+      277.63199024307295,
+      277.6213465428125,
+      277.53724489492623,
+      277.59959650192025
+    ],
+    [
+      277.6154137986053,
+      277.62512249061336,
+      277.5775699342522,
+      277.57106170293343,
+      277.6509402622981,
+      277.67226407401677,
+      277.602424219131,
+      277.42242438319505,
+      277.4525851379867,
+      277.6623236650996,
+      277.70060837770654,
+      277.58671291892034,
+      277.48519334663365,
+      277.48197011953425,
+      277.5870353669895,
+      277.5280944276469,
+      277.5843054159508,
+      277.4547856784249,
+      277.6332869794448,
+      277.73537263117913,
+      277.54547390754584,
+      277.5447909174927,
+      277.65143619721545,
+      277.4640365721209,
+      277.52502881751207,
+      277.6030629828326,
+      277.57119886688486,
+      277.4688021658162,
+      277.585805727971,
+      277.5452924626357,
+      277.44826308085,
+      277.55899464356713
+    ],
+    [
+      277.6381635458298,
+      277.65566614322825,
+      277.6733012450114,
+      277.60487414972624,
+      277.5518277475976,
+      277.6019546455777,
+      277.5837225226264,
+      277.60353336939,
+      277.58365704321574,
+      277.5593129322958,
+      277.5218891139869,
+      277.6336256174771,
+      277.64255260732153,
+      277.57787000289863,
+      277.6858049152982,
+      277.6359521847253,
+      277.68812542955163,
+      277.6202956890692,
+      277.6435641603294,
+      277.54547390754584,
+      277.73537263117913,
+      277.5877577994878,
+      277.6213396572882,
+      277.6373865621532,
+      277.7107437327498,
+      277.67156677815444,
+      277.5228054335556,
+      277.6451683063571,
+      277.632446863575,
+      277.67211400640537,
+      277.6249767190219,
+      277.61211662116244
+    ],
+    [
+      277.5451330359733,
+      277.59560892629503,
+      277.55044985854187,
+      277.4878843521705,
+      277.6136743644495,
+      277.6000700753062,
+      277.48806386415396,
+      277.545507870329,
+      277.43614186443017,
+      277.50557523932866,
+      277.51017767538815,
+      277.5199087181629,
+      277.49554116019436,
+      277.43467485614974,
+      277.62205875153325,
+      277.4949977525964,
+      277.57438949703516,
+      277.4765886906126,
+      277.57614374331297,
+      277.5447909174927,
+      277.5877577994878,
+      277.73537263117913,
+      277.56285917571256,
+      277.5865699401868,
+      277.5913977407546,
+      277.62182440219897,
+      277.646541399913,
+      277.5846585610725,
+      277.6792341215518,
+      277.6481381751893,
+      277.5716626023523,
+      277.7100603444154
+    ],
+    [
+      277.69750148933156,
+      277.6949283906751,
+      277.66142025392344,
+      277.64203512995357,
+      277.6143261024674,
+      277.6803021492913,
+      277.6574473558055,
+      277.4911702902419,
+      277.5343565188284,
+      277.66976192963335,
+      277.63421183676763,
+      277.6658965388947,
+      277.56907363136537,
+      277.55903470989404,
+      277.6508400904023,
+      277.6101215615163,
+      277.665370621391,
+      277.5386191273001,
+      277.7129234756288,
+      277.65143619721545,
+      277.6213396572882,
+      277.56285917571256,
+      277.73537263117913,
+      277.52931588569294,
+      277.59818367254917,
+      277.66364674186525,
+      277.54768404902154,
+      277.5356822741293,
+      277.6175121160646,
+      277.60063935681876,
+      277.51485378259235,
+      277.58507306109203
+    ],
+    [
+      277.540772971048,
+      277.56835762336397,
+      277.5758269236295,
+      277.50939256576766,
+      277.4962829705933,
+      277.52628770177887,
+      277.4858628709398,
+      277.6915537392648,
+      277.528622449813,
+      277.4646976164713,
+      277.43564252855276,
+      277.5364011371358,
+      277.58848969013644,
+      277.50429918958207,
+      277.6112833424161,
+      277.5525312194418,
+      277.59072509894156,
+      277.58574779289165,
+      277.5516379433333,
+      277.4640365721209,
+      277.6373865621532,
+      277.5865699401868,
+      277.52931588569294,
+      277.73537263117913,
+      277.66186421268384,
+      277.5957007040319,
+      277.49971915072393,
+      277.72621993406773,
+      277.5967985129474,
+      277.65129395693236,
+      277.7189445871621,
+      277.6003155780303
+    ],
+    [
+      277.6135761180834,
+      277.6344499740066,
+      277.6492477667048,
+      277.58182519978135,
+      277.53903137352086,
+      277.5838081378482,
+      277.55932460185545,
+      277.62780724444485,
+      277.57568215043506,
+      277.53527345152884,
+      277.4999829716693,
+      277.609697039591,
+      277.6371804113119,
+      277.5633450720418,
+      277.6712281747343,
+      277.61849066991294,
+      277.66357403918477,
+      277.62046194728856,
+      277.620578466145,
+      277.52502881751207,
+      277.7107437327498,
+      277.5913977407546,
+      277.59818367254917,
+      277.66186421268384,
+      277.73537263117913,
+      277.65537836079363,
+      277.51866903379147,
+      277.6697605323291,
+      277.6284751005402,
+      277.6786141655923,
+      277.649596555998,
+      277.6140996422051
+    ],
+    [
+      277.6570373916554,
+      277.7037923512606,
+      277.66193784068935,
+      277.60132220812983,
+      277.6152160254442,
+      277.66360884523795,
+      277.59793096082484,
+      277.5546002716169,
+      277.53514986466644,
+      277.598299693747,
+      277.5752281541715,
+      277.63340656940534,
+      277.5872085449977,
+      277.5427702664729,
+      277.71924555845686,
+      277.60294301295795,
+      277.6850148457449,
+      277.56094228138704,
+      277.68346109857094,
+      277.6030629828326,
+      277.67156677815444,
+      277.62182440219897,
+      277.66364674186525,
+      277.5957007040319,
+      277.65537836079363,
+      277.73537263117913,
+      277.5770905566869,
+      277.6008579315926,
+      277.6773523536707,
+      277.6721772238332,
+      277.5801825123616,
+      277.646659774984
+    ],
+    [
+      277.51709620846736,
+      277.56434849858715,
+      277.5056346552213,
+      277.4570751848831,
+      277.6555966478744,
+      277.60099331265894,
+      277.4704440975691,
+      277.4576442509854,
+      277.37711467240774,
+      277.50951851096494,
+      277.53863151091775,
+      277.4861857922086,
+      277.4313980990226,
+      277.3861911296898,
+      277.56883092537356,
+      277.4455839958973,
+      277.5273218759057,
+      277.40781670969335,
+      277.55073448969205,
+      277.57119886688486,
+      277.5228054335556,
+      277.646541399913,
+      277.54768404902154,
+      277.49971915072393,
+      277.51866903379147,
+      277.5770905566869,
+      277.73537263117913,
+      277.4987940087497,
+      277.6252411269608,
+      277.5722741017723,
+      277.4842723269909,
+      277.6343082059112
+    ],
+    [
+      277.5482270551247,
+      277.57431016003335,
+      277.58394106094534,
+      277.5179308299253,
+      277.49842649127027,
+      277.53068106952094,
+      277.4938540799914,
+      277.68867114049385,
+      277.53751163447924,
+      277.47139168291056,
+      277.4409578320549,
+      277.5446288673188,
+      277.5975408053444,
+      277.5134376680894,
+      277.61665399454836,
+      277.5615844431697,
+      277.59823093985574,
+      277.5943119585788,
+      277.55806839427424,
+      277.4688021658162,
+      277.6451683063571,
+      277.5846585610725,
+      277.5356822741293,
+      277.72621993406773,
+      277.6697605323291,
+      277.6008579315926,
+      277.4987940087497,
+      277.73537263117913,
+      277.5983787291985,
+      277.6539613693171,
+      277.7145116684346,
+      277.599727919207
+    ],
+    [
+      277.6012439648274,
+      277.65167129714627,
+      277.60458910206995,
+      277.54374543845296,
+      277.6344119973091,
+      277.6469816597632,
+      277.5439125569218,
+      277.55300603326936,
+      277.4835189464643,
+      277.5572633458382,
+      277.55250058092577,
+      277.5756683211121,
+      277.54011750939895,
+      277.4866318975023,
+      277.67491799672626,
+      277.54708914685875,
+      277.6282827660678,
+      277.51754244769694,
+      277.63199024307295,
+      277.585805727971,
+      277.632446863575,
+      277.6792341215518,
+      277.6175121160646,
+      277.5967985129474,
+      277.6284751005402,
+      277.6773523536707,
+      277.6252411269608,
+      277.5983787291985,
+      277.73537263117913,
+      277.6787474251358,
+      277.5804129481284,
+      277.70286580073986
+    ],
+    [
+      277.60018454119677,
+      277.64103938876343,
+      277.6213312658598,
+      277.5524858283034,
+      277.579754680917,
+      277.60827033346806,
+      277.54069967700065,
+      277.6077152024672,
+      277.52138924017396,
+      277.5351769181549,
+      277.51501069654176,
+      277.5840697847588,
+      277.58187076672414,
+      277.51491095783103,
+      277.68446238922877,
+      277.57385824610407,
+      277.64387144213975,
+      277.5637549364324,
+      277.6213465428125,
+      277.5452924626357,
+      277.67211400640537,
+      277.6481381751893,
+      277.60063935681876,
+      277.65129395693236,
+      277.6786141655923,
+      277.6721772238332,
+      277.5722741017723,
+      277.6539613693171,
+      277.6787474251358,
+      277.73537263117913,
+      277.63490822628296,
+      277.67048316076034
+    ],
+    [
+      277.5278664190713,
+      277.5534663425554,
+      277.5643128324425,
+      277.499301513622,
+      277.47987194096504,
+      277.5103298756722,
+      277.474133706826,
+      277.7079449149607,
+      277.52728187281303,
+      277.4506452570594,
+      277.42022165531904,
+      277.52525486916653,
+      277.5854200382947,
+      277.4999117234087,
+      277.5959171883886,
+      277.5453277127616,
+      277.577869459828,
+      277.586056466544,
+      277.53724489492623,
+      277.44826308085,
+      277.6249767190219,
+      277.5716626023523,
+      277.51485378259235,
+      277.7189445871621,
+      277.649596555998,
+      277.5801825123616,
+      277.4842723269909,
+      277.7145116684346,
+      277.5804129481284,
+      277.63490822628296,
+      277.73537263117913,
+      277.5845730389323
+    ],
+    [
+      277.5693156573492,
+      277.61944854771497,
+      277.5757084326281,
+      277.51265306344294,
+      277.61938946623326,
+      277.6177266410997,
+      277.5115808611078,
+      277.5575759776086,
+      277.46065083681503,
+      277.52559416200506,
+      277.5248749057824,
+      277.54474809096814,
+      277.51954635169426,
+      277.45988427606164,
+      277.64735036152683,
+      277.5202395154829,
+      277.5996584649268,
+      277.4996698021263,
+      277.59959650192025,
+      277.55899464356713,
+      277.61211662116244,
+      277.7100603444154,
+      277.58507306109203,
+      277.6003155780303,
+      277.6140996422051,
+      277.646659774984,
+      277.6343082059112,
+      277.599727919207,
+      277.70286580073986,
+      277.67048316076034,
+      277.5845730389323,
+      277.73537263117913
+    ]
+  ],
+  "invK": [
+    [
+      34.16836736640087,
+      0.3769165889420147,
+      -4.605317351895734,
+      0.6876369310332905,
+      0.03959234403453284,
+      1.0916855155457053,
+      -3.129865261458831,
+      0.004591717766771723,
+      -0.005213668842559347,
+      -0.9545298354292049,
+      0.3448508334212382,
+      -12.360666375866483,
+      0.20535340391168902,
+      0.37826293600702704,
+      0.1193541749255853,
+      0.9951926045296986,
+      -2.407512435238127,
+      -0.00028422500804375765,
+      -9.246208777225636,
+      0.13812163170770345,
+      0.6511949167960995,
+      -0.005073291425750486,
+      -7.046221608251989,
+      -0.011444436910890053,
+      0.06383474806325089,
+      0.33761702763322254,
+      0.017172877845886288,
+      0.012174637563447556,
+      0.13282376096086085,
+      0.013780903133368112,
+      0.0005015892879026505,
+      -0.006816336112724005
+    ],
+    [
+      0.3769165888825261,
+      42.02222375255551,
+      0.19646308171430563,
+      0.07440713422601304,
+      0.121275352013681,
+      -4.000673605493213,
+      0.30346332497018513,
+      0.023413119999463508,
+      -0.003245847341445549,
+      0.3590875655429742,
+      0.08989518030954355,
+      0.2307478171758389,
+      0.12141529046049393,
+      0.000944309753363766,
+      -0.20221227894753524,
+      0.18033299082955057,
+      -4.882207702902492,
+      0.013384048665706352,
+      -22.22629763805963,
+      0.33447972744302795,
+      0.3267043488253857,
+      0.05130237501131356,
+      -0.39405764261642795,
+      0.020767881280920903,
+      0.20232738517121746,
+      -13.793645223331469,
+      0.06364543783915275,
+      0.023726863550364272,
+      -0.3716044318530504,
+      0.5882666040054819,
+      0.005646603055794991,
+      0.14305923147743982
+    ],
+    [
+      -4.6053173518671455,
+      0.19646308169541754,
+      35.295627992645684,
+      0.4493356582615334,
+      0.012341762399792178,
+      0.148925192430366,
+      1.0210212366240978,
+      0.06480449258798705,
+      0.3474404002249324,
+      0.29927041339711946,
+      0.030791855456904237,
+      -8.639579816392837,
+      -1.4088957891268497,
+      0.5595422609298183,
+      0.787065559724806,
+      -4.974048541467477,
+      -18.749724678885332,
+      0.24331069911083442,
+      -0.7373191895501878,
+      0.02484484917533712,
+      -2.075636763205094,
+      0.0201775838593343,
+      0.8061916242864775,
+      0.05240767223185616,
+      0.0029475739690710684,
+      0.45071660829690385,
+      0.01530321859162447,
+      0.018547854340380934,
+      0.040773324452418505,
+      0.296419124522337,
+      -0.0004644812494445749,
+      0.006624480621272222
+    ],
+    [
+      0.687636931025369,
+      0.07440713427665882,
+      0.4493356582697713,
+      26.441355864969385,
+      0.01779295061609543,
+      0.06809660943546998,
+      -10.505952376067201,
+      0.06578650732283997,
+      0.43629526033188637,
+      0.35030999847060085,
+      -0.10605783462298436,
+      -12.350740792267755,
+      0.6097487423604857,
+      -3.528885543272216,
+      0.014708095917192243,
+      -4.271695662011423,
+      0.36890206807760645,
+      0.15514682573476243,
+      0.20646787831621724,
+      0.1101477117353961,
+      0.15637537852713126,
+      0.029360474491744167,
+      0.3591677323330609,
+      0.004013557229178262,
+      0.06816771967324427,
+      0.018998920039738083,
+      0.03153438118662748,
+      0.019324653093922096,
+      0.0047408552750963125,
+      0.002044295532475155,
+      0.009799849307737194,
+      0.0038057238094052364
+    ],
+    [
+      0.039592344012565915,
+      0.1212753519940925,
+      0.012341762381709597,
+      0.017792950625147175,
+      14.560415327302403,
+      -5.296579449482943,
+      0.058971199630096297,
+      0.13536696801045203,
+      0.03228051181307671,
+      0.5908208120810068,
+      -0.6884504273239346,
+      0.016670859806334586,
+      -0.008272738028389631,
+      0.021506085901164047,
+      0.1522300095063843,
+      0.004741956551616222,
+      0.061801240260084815,
+      0.02758520131288391,
+      0.1749342748565268,
+      -3.711130017870059,
+      0.03313976020170302,
+      0.12215155374882206,
+      0.6351655943719245,
+      0.14621752119120904,
+      0.007180650677809233,
+      -0.22377170603200697,
+      -5.5989453564360385,
+      -0.03398601846570464,
+      -1.6940090109575012,
+      0.415132177765647,
+      0.03676137649118241,
+      -0.1688099989528341
+    ],
+    [
+      1.0916855155422067,
+      -4.00067360549702,
+      0.148925192401855,
+      0.06809660942560375,
+      -5.296579449471729,
+      20.859271168428368,
+      0.3683674103120812,
+      0.04596777151744645,
+      0.015152829320062726,
+      -0.42372250032743614,
+      0.9885819379018398,
+      0.058722767285757656,
+      -0.013480503292940971,
+      0.07421727148311424,
+      0.6526264267412408,
+      -0.014568043666306813,
+      0.8075951546033854,
+      -0.0011501260766127014,
+      -0.9683781648558092,
+      -5.480838876547201,
+      0.15490444946333823,
+      0.08541822259258294,
+      -5.382832198748312,
+      0.08588633577019829,
+      0.0401545576607434,
+      -2.4393855078305178,
+      0.45413477271400093,
+      -0.008420966947674134,
+      -2.4806952797402784,
+      0.3604924978926271,
+      0.016571277776087617,
+      0.13361678699561416
+    ],
+    [
+      -3.1298652614396505,
+      0.3034633249592609,
+      1.0210212366289588,
+      -10.505952376057225,
+      0.058971199632319164,
+      0.3683674103028291,
+      20.507892561141375,
+      0.06225746483935168,
+      -0.008948992243539415,
+      -6.7780144553598385,
+      -0.3966059767109308,
+      -2.1385399083577634,
+      0.19024864412246026,
+      -0.9825512571165248,
+      0.017081765362204654,
+      0.9780898650259615,
+      0.2660482089958286,
+      0.049326013188016715,
+      0.49179067022026185,
+      0.5060229221915616,
+      0.056916917702012265,
+      0.05530754534124176,
+      -1.2191629792764684,
+      0.020833102729940003,
+      0.029997885547245553,
+      0.06210303649127233,
+      0.043546027681172245,
+      0.004649604922745094,
+      0.027945740538493847,
+      0.01594888098231387,
+      0.013448372196508466,
+      0.008744615593354673
+    ],
+    [
+      0.004591717777310703,
+      0.023413120013374002,
+      0.0648044925937425,
+      0.06578650727777863,
+      0.13536696802377624,
+      0.04596777146972472,
+      0.062257464859351935,
+      19.277992626008377,
+      -0.4013507543853807,
+      0.05493875617417725,
+      0.1096392250681711,
+      0.01985305078217608,
+      0.1701406290638668,
+      0.07763603680298,
+      0.1468259204453356,
+      0.29359466332040407,
+      0.06889763493689487,
+      -2.2414609392060894,
+      0.008133245864371277,
+      0.018217761662589912,
+      0.1303537673831563,
+      -0.557125980711677,
+      -0.0008759569881204546,
+      0.8381235051578164,
+      -0.12957669234590904,
+      0.04229938370915875,
+      -0.18562251611480377,
+      -0.6932883977664829,
+      0.18437469062245881,
+      0.3621094876076435,
+      -18.038289418481014,
+      0.043490440289429895
+    ],
+    [
+      -0.005213668826684825,
+      -0.003245847319210029,
+      0.34744040022412737,
+      0.43629526033398913,
+      0.03228051178497655,
+      0.015152829351563729,
+      -0.008948992264277266,
+      -0.40135075439974577,
+      17.414860019822527,
+      -0.009408271534745353,
+      -0.004424568025466264,
+      0.22909574796184476,
+      -2.335349385345539,
+      -9.592139441460457,
+      -0.026593058642083122,
+      -0.9431989479362627,
+      0.0795070535264984,
+      -6.376743023534379,
+      -0.004402627274149256,
+      0.034733779804858,
+      0.32387465449947855,
+      0.027346183282596255,
+      0.02744785610242222,
+      -0.0004995018339669742,
+      0.37870357132574783,
+      0.0036798653272089956,
+      0.06624058587147169,
+      0.19771035790751118,
+      0.005434761754093427,
+      0.0007188644721115539,
+      0.08242217993113769,
+      0.009319495245193885
+    ],
+    [
+      -0.9545298354128624,
+      0.35908756557514676,
+      0.2992704133850858,
+      0.35030999848133365,
+      0.5908208120846286,
+      -0.423722500342284,
+      -6.778014455354232,
+      0.05493875619053009,
+      -0.009408271559183836,
+      17.236455525723585,
+      -6.287464323277687,
+      0.3059292314758668,
+      0.06323848292807378,
+      -0.21761540754665634,
+      0.023747777184394574,
+      0.20272523451794477,
+      0.1717426317927504,
+      0.03188312390799591,
+      0.6940540804079648,
+      -1.5470633915584302,
+      0.025149311907133962,
+      0.04584663043782622,
+      -4.696540630832852,
+      0.017807520218220733,
+      0.015347599992085471,
+      0.14273416803198338,
+      0.163835313313972,
+      -0.001386053413111053,
+      0.0932726081211609,
+      0.014892183532056355,
+      0.009392692662157675,
+      0.003469357986508271
+    ],
+    [
+      0.34485083341495504,
+      0.08989518024582036,
+      0.030791855411795226,
+      -0.10605783464791402,
+      -0.6884504273186347,
+      0.9885819379254374,
+      -0.3966059767054537,
+      0.10963922510922458,
+      -0.004424568018636035,
+      -6.287464323250516,
+      18.26479702013923,
+      0.2417400012207336,
+      0.059805634781097086,
+      -0.2831536185223515,
+      0.005924983983433139,
+      0.09368700447215449,
+      0.008800812421839305,
+      0.06481827474263414,
+      0.076267405254209,
+      -13.23007475545255,
+      0.022563132920083762,
+      0.14460487673947983,
+      0.5114051313154995,
+      0.023784282954111502,
+      0.01934779768532046,
+      0.09006778636704184,
+      -0.5119006355154253,
+      0.0019001369448871258,
+      0.21576699533793808,
+      0.014910403858656234,
+      0.012550307738398723,
+      0.07267860612478882
+    ],
+    [
+      -12.360666375875944,
+      0.23074781703893044,
+      -8.639579816351755,
+      -12.350740792276277,
+      0.016670859810002128,
+      0.05872276728523269,
+      -2.138539908310779,
+      0.019853050761798375,
+      0.2290957479650275,
+      0.30592923150964674,
+      0.24174000117999653,
+      34.659882957749105,
+      0.19367715135946523,
+      0.6814938653498842,
+      0.12946006946187616,
+      -3.5708677417897987,
+      0.817298470286308,
+      0.08241714912938787,
+      0.6826396902801083,
+      -0.010306265050097945,
+      0.30255514036250053,
+      -0.006369914573645478,
+      0.24554911747385555,
+      -0.008744785980831442,
+      0.05544546351079221,
+      0.0900871122833371,
+      0.00939785698423156,
+      0.018251914242192222,
+      0.007436887867468509,
+      0.007576995391593521,
+      -3.863087009346519e-05,
+      -0.0002606377658936053
+    ],
+    [
+      0.20535340400698246,
+      0.12141529051010744,
+      -1.408895789187373,
+      0.6097487423909829,
+      -0.00827273804459493,
+      -0.013480503242178565,
+      0.1902486441279014,
+      0.17014062908215075,
+      -2.335349385338484,
+      0.06323848293957647,
+      0.059805634762634195,
+      0.19367715127380447,
+      26.022887606862326,
+      0.14083388566758445,
+      0.3414711777794286,
+      -6.618551971964536,
+      -0.29680140738580996,
+      -14.292049954303511,
+      0.10749101997410151,
+      -0.018628398004746905,
+      -1.9319782851666178,
+      0.06401436127698606,
+      -0.026128517187635265,
+      0.2990128655169401,
+      -1.5096757390309046,
+      0.05150212006535014,
+      0.014410414455525785,
+      -0.5380577650896954,
+      -0.00037858625395821306,
+      0.3989348578820246,
+      -0.07469930652989322,
+      0.01832563469166148
+    ],
+    [
+      0.37826293601438843,
+      0.000944309734339746,
+      0.5595422609268715,
+      -3.5288855432710893,
+      0.021506085907398328,
+      0.07421727147579169,
+      -0.9825512570889713,
+      0.07763603682363299,
+      -9.59213944146413,
+      -0.21761540756102538,
+      -0.28315361852771137,
+      0.6814938653347548,
+      0.14083388569393468,
+      16.02836719812613,
+      -0.00746631178101655,
+      -5.118184660140621,
+      0.11632240693072177,
+      0.6152731812247386,
+      0.0011768973572306224,
+      0.13139028608120443,
+      0.23953831979422013,
+      0.06414039061224061,
+      0.23624739136528367,
+      0.005521800322764523,
+      0.15656947813161848,
+      0.008900487332928277,
+      0.06783571842638042,
+      0.0737203221342567,
+      0.006225862365485616,
+      0.0021394065220293945,
+      0.036290962144815954,
+      0.006616723308891282
+    ],
+    [
+      0.11935417490285281,
+      -0.2022122790127773,
+      0.7870655596835786,
+      0.014708095876531902,
+      0.1522300094890774,
+      0.6526264267717643,
+      0.017081765321906004,
+      0.14682592051092544,
+      -0.02659305869099218,
+      0.02374777723904361,
+      0.005924983979840055,
+      0.12946006960256254,
+      0.3414711777762512,
+      -0.007466311807339668,
+      44.34210594596317,
+      0.18248929715047604,
+      -4.850675546295601,
+      0.13529278531930708,
+      0.23377090866437542,
+      0.006614979123688654,
+      -5.867188914947581,
+      0.3816950518402252,
+      0.29499465524538243,
+      0.20883940096725725,
+      -0.7432671247847923,
+      -28.880882631854973,
+      0.13272777562203983,
+      0.2927744964750964,
+      -2.110425686342807,
+      -6.279990979406995,
+      0.06511705493957802,
+      0.3017388612954482
+    ],
+    [
+      0.9951926044747796,
+      0.18033299087506413,
+      -4.974048541457378,
+      -4.271695662022829,
+      0.004741956566025454,
+      -0.014568043685476885,
+      0.9780898649796199,
+      0.29359466327198686,
+      -0.9431989479486838,
+      0.20272523451405672,
+      0.09368700448523717,
+      -3.5708677416961523,
+      -6.618551972004098,
+      -5.118184660122086,
+      0.18248929711762057,
+      21.59991207837016,
+      0.1846009805203175,
+      1.0851659547481374,
+      0.21216594778415662,
+      -0.014792829410262375,
+      -0.8453570541289841,
+      0.004459050583378814,
+      0.09919456177591715,
+      -0.016388408531988388,
+      -0.015401128882121888,
+      0.07103356411044658,
+      0.0032406885510610356,
+      0.08449896751965863,
+      0.004265186182259236,
+      0.11812413081767544,
+      0.004686141467615122,
+      0.0004861183109466349
+    ],
+    [
+      -2.407512435254943,
+      -4.882207702849305,
+      -18.749724678902012,
+      0.3689020680887216,
+      0.06180124023644653,
+      0.8075951545622909,
+      0.26604820901855925,
+      0.06889763498347735,
+      0.07950705350970033,
+      0.17174263173902451,
+      0.008800812374618308,
+      0.8172984703242931,
+      -0.29680140750578865,
+      0.11632240694944604,
+      -4.850675546314799,
+      0.1846009805183182,
+      36.28679055975007,
+      0.12376778379516916,
+      -2.6866465294184456,
+      0.027213163113958747,
+      -7.235247173707308,
+      0.017243546774808514,
+      1.0894213946321862,
+      0.03438751653298458,
+      0.7260807548446818,
+      -1.6059993917628472,
+      0.015634173296684546,
+      0.1396626092259109,
+      0.7466186463055093,
+      0.5130582931892916,
+      0.009295253393507577,
+      0.034084533370994145
+    ],
+    [
+      -0.00028422508727561543,
+      0.013384048583546356,
+      0.2433106991512976,
+      0.1551468257177641,
+      0.02758520134803658,
+      -0.0011501261442221037,
+      0.0493260131925463,
+      -2.241460939205863,
+      -6.376743023529144,
+      0.03188312389333944,
+      0.06481827475785358,
+      0.08241714917162724,
+      -14.292049954291004,
+      0.6152731812315255,
+      0.1352927852378615,
+      1.0851659547267434,
+      0.12376778368018446,
+      20.90852234132254,
+      0.005392319251028009,
+      0.014747108065970509,
+      -0.015893092019559227,
+      0.11723036167642731,
+      0.0028342636515606237,
+      0.707097066310028,
+      -0.8997272589143047,
+      0.008463292123069474,
+      0.07947525705671532,
+      -0.9828654476343213,
+      0.00028683836599817315,
+      0.346686643236719,
+      -0.06546425780041046,
+      0.05799700958825402
+    ],
+    [
+      -9.246208777164599,
+      -22.226297638134678,
+      -0.7373191895198187,
+      0.20646787835093441,
+      0.1749342748259006,
+      -0.9683781648664624,
+      0.49179067021270834,
+      0.008133245854664854,
+      -0.00440262728174376,
+      0.6940540804540107,
+      0.07626740520701877,
+      0.682639690116894,
+      0.10749102010788186,
+      0.0011768973408689057,
+      0.23377090869753625,
+      0.2121659478410161,
+      -2.68664652945939,
+      0.005392319130397846,
+      49.553183732582816,
+      0.2860369800295627,
+      0.4207004471488332,
+      0.013940804873353068,
+      -18.498802600498568,
+      -0.002181991166470167,
+      0.05471199801934638,
+      0.8248884088918952,
+      0.025317672280002094,
+      0.008547672409093883,
+      0.19920442593218,
+      0.0745542321209647,
+      0.0017549964365529613,
+      0.01309880350006634
+    ],
+    [
+      0.13812163170818037,
+      0.3344797274989944,
+      0.024844849265701758,
+      0.11014771175040258,
+      -3.7111300178740256,
+      -5.480838876559093,
+      0.5060229221772513,
+      0.018217761591923558,
+      0.03473377980165436,
+      -1.5470633915909437,
+      -13.23007475543101,
+      -0.010306265059750755,
+      -0.018628398009758046,
+      0.13139028607711276,
+      0.006614979183770691,
+      -0.014792829407615326,
+      0.027213162974366524,
+      0.014747108073605398,
+      0.28603698001768063,
+      23.255211654269186,
+      -0.0007264100819065659,
+      0.13934619393951306,
+      -1.823252377324116,
+      -0.0005799141281443392,
+      0.002657407662486444,
+      0.32409164594333145,
+      0.008034076580326443,
+      0.0005418914986498662,
+      0.4178344521108715,
+      -0.01058529962659784,
+      0.0005412049825246421,
+      0.0670740425952909
+    ],
+    [
+      0.6511949168014316,
+      0.3267043488509933,
+      -2.075636763263619,
+      0.15637537849569788,
+      0.033139760203815496,
+      0.15490444947294127,
+      0.05691691773689672,
+      0.13035376738688853,
+      0.32387465455354025,
+      0.02514931191126595,
+      0.022563132944343024,
+      0.3025551403085861,
+      -1.9319782851377736,
+      0.2395383197560989,
+      -5.867188914818391,
+      -0.845357054069157,
+      -7.2352471735971084,
+      -0.015893092131090945,
+      0.4207004471077539,
+      -0.0007264101172120653,
+      33.09984308933997,
+      0.1531411990002841,
+      0.038096293818161056,
+      0.3326996177669332,
+      -19.01951529336146,
+      0.6891624662545361,
+      0.038830421788371774,
+      0.3646524799012439,
+      0.3639344262670217,
+      -1.1556155835757893,
+      0.023282088502525604,
+      0.19943337440260825
+    ],
+    [
+      -0.00507329139467485,
+      0.051302375049095954,
+      0.0201775838377023,
+      0.029360474494315725,
+      0.12215155375627935,
+      0.08541822261730583,
+      0.05530754533699817,
+      -0.5571259807536345,
+      0.02734618327929528,
+      0.0458466304407605,
+      0.14460487673280242,
+      -0.0063699145589103095,
+      0.06401436118657441,
+      0.06414039064578836,
+      0.38169505181627167,
+      0.004459050541776521,
+      0.017243546816554912,
+      0.11723036176163316,
+      0.013940804855817578,
+      0.13934619393483444,
+      0.1531411990018868,
+      23.649149141809346,
+      0.018928906518046573,
+      -1.1991641461834497,
+      0.24925657085899985,
+      0.24696935760729954,
+      -4.89214943879828,
+      0.4302723367529579,
+      0.4475677132610649,
+      -0.6348061383978036,
+      -0.28250173888839836,
+      -19.001224464232155
+    ],
+    [
+      -7.046221608286355,
+      -0.3940576425693805,
+      0.8061916242397077,
+      0.3591677323113675,
+      0.6351655943490786,
+      -5.382832198731615,
+      -1.2191629792826386,
+      -0.0008759569800568857,
+      0.027447856146643967,
+      -4.69654063084364,
+      0.5114051313644338,
+      0.24554911758161696,
+      -0.02612851715803858,
+      0.23624739136600748,
+      0.2949946552193057,
+      0.09919456171631737,
+      1.0894213947207156,
+      0.0028342635932676625,
+      -18.49880260057833,
+      -1.8232523773607492,
+      0.03809629376451707,
+      0.018928906572325654,
+      34.03261959147859,
+      -0.0006062962747811488,
+      0.004725188135633432,
+      0.323889196705871,
+      0.16595489045152867,
+      0.001669626162299152,
+      0.15920085952841684,
+      0.014718208226459284,
+      -0.001030947744084312,
+      0.02184332313983005
+    ],
+    [
+      -0.01144443692084046,
+      0.020767881159037226,
+      0.05240767221686132,
+      0.004013557246328274,
+      0.14621752127555648,
+      0.0858863356418859,
+      0.020833102684399654,
+      0.838123505262838,
+      -0.0004995017023341203,
+      0.0178075201596911,
+      0.023784282894333857,
+      -0.008744786074781267,
+      0.29901286562518153,
+      0.005521800161089416,
+      0.2088394009510694,
+      -0.01638840828180482,
+      0.03438751621672467,
+      0.7070970661100584,
+      -0.00218199097042177,
+      -0.0005799140745602877,
+      0.3326996184358932,
+      -1.1991641461279432,
+      -0.0006062960827628429,
+      74.20879508967647,
+      0.41605115845060087,
+      0.1274712913064976,
+      -0.1329221128116405,
+      -48.35070002738685,
+      0.3846338550374649,
+      -2.788803279723697,
+      -24.852219109708102,
+      -0.5698956684628049
+    ],
+    [
+      0.06383474805829442,
+      0.20232738516833773,
+      0.0029475740773615812,
+      0.06816771968325215,
+      0.007180650647697161,
+      0.04015455764881519,
+      0.029997885541142504,
+      -0.12957669237364672,
+      0.3787035712959988,
+      0.015347599976252266,
+      0.019347797669084423,
+      0.05544546352214508,
+      -1.5096757390390652,
+      0.156569478156593,
+      -0.7432671248855973,
+      -0.015401128916567452,
+      0.7260807546945043,
+      -0.8997272588534819,
+      0.05471199806364673,
+      0.002657407706141641,
+      -19.019515293330368,
+      0.2492565708461346,
+      0.004725188086023341,
+      0.41605115898242956,
+      29.81119860033506,
+      0.4640933360053847,
+      0.09909576503996405,
+      -6.563245051059285,
+      0.35120747108649036,
+      -4.927466336844037,
+      0.33777807979049185,
+      0.25078337065423584
+    ],
+    [
+      0.33761702768054475,
+      -13.793645223284148,
+      0.45071660835137123,
+      0.018998920133521818,
+      -0.22377170600521593,
+      -2.4393855078507665,
+      0.062103036491938324,
+      0.042299383643915466,
+      0.0036798653947254564,
+      0.14273416801212774,
+      0.09006778635003376,
+      0.09008711208862624,
+      0.051502120090863725,
+      0.00890048734289466,
+      -28.88088263190829,
+      0.07103356408347081,
+      -1.6059993918004043,
+      0.008463292009571752,
+      0.824888408891125,
+      0.32409164598565415,
+      0.6891624664240007,
+      0.2469693576186818,
+      0.3238891967192276,
+      0.12747129133613036,
+      0.4640933358737489,
+      46.81546069031178,
+      0.11106089947438239,
+      0.07363716309347781,
+      -4.8608005010714175,
+      -0.01926736644754598,
+      0.0075541306212432,
+      0.43719222800736246
+    ],
+    [
+      0.01717287785707872,
+      0.06364543784011613,
+      0.01530321859863732,
+      0.031534381189169874,
+      -5.598945356430825,
+      0.45413477271316177,
+      0.04354602767888284,
+      -0.18562251610008873,
+      0.06624058585905056,
+      0.16383531331968998,
+      -0.5119006354970054,
+      0.009397856979257475,
+      0.014410414454644188,
+      0.06783571841830846,
+      0.13272777560570495,
+      0.003240688560320262,
+      0.015634173286956755,
+      0.07947525707535236,
+      0.02531767226400688,
+      0.008034076561510896,
+      0.03883042182010318,
+      -4.892149438783021,
+      0.16595489044551412,
+      -0.1329221127786722,
+      0.09909576498689081,
+      0.11106089949705442,
+      9.57466928185595,
+      0.1739586003537069,
+      -0.46032661610778736,
+      0.43269245287156854,
+      -0.06046331489507645,
+      0.035704946475937915
+    ],
+    [
+      0.012174637632649362,
+      0.023726863615537008,
+      0.01854785426177614,
+      0.0193246530890013,
+      -0.03398601853126324,
+      -0.008420966883234375,
+      0.0046496049552806114,
+      -0.6932883978860346,
+      0.1977103577566982,
+      -0.0013860533877801929,
+      0.0019001368849704797,
+      0.018251914298031236,
+      -0.5380577650886409,
+      0.07372032229755031,
+      0.2927744963360971,
+      0.0844989673484082,
+      0.13966260960106378,
+      -0.982865447551755,
+      0.008547672243587613,
+      0.0005418916337245036,
+      0.3646524792838861,
+      0.43027233675541104,
+      0.001669625948754526,
+      -48.35070002755681,
+      -6.563245050515709,
+      0.0736371632370579,
+      0.17395860035775337,
+      63.82011216996837,
+      0.095481858222061,
+      -1.5794706040566013,
+      -7.175379573995493,
+      0.07065620426730754
+    ],
+    [
+      0.1328237609991423,
+      -0.37160443190048575,
+      0.04077332443527903,
+      0.004740855245851422,
+      -1.6940090109869217,
+      -2.4806952796972777,
+      0.02794574053885174,
+      0.18437469060472442,
+      0.005434761737717588,
+      0.0932726081008556,
+      0.21576699533207802,
+      0.007436887917180503,
+      -0.00037858627463522324,
+      0.00622586236426647,
+      -2.110425686470626,
+      0.004265186208461054,
+      0.7466186462827918,
+      0.0002868383923723862,
+      0.1992044259579776,
+      0.417834452149771,
+      0.36393442628073114,
+      0.44756771324605604,
+      0.15920085943908552,
+      0.38463385501905195,
+      0.35120747112603856,
+      -4.860800500921872,
+      -0.4603266160980839,
+      0.09548185817141436,
+      25.962955983462397,
+      -4.173843831712814,
+      0.0644521750536219,
+      -13.76465499633967
+    ],
+    [
+      0.01378090310529414,
+      0.5882666040296382,
+      0.29641912449401714,
+      0.0020442955281089366,
+      0.41513217780825884,
+      0.3604924978751366,
+      0.015948880981553316,
+      0.362109487603198,
+      0.0007188644987193126,
+      0.01489218356188006,
+      0.014910403874695612,
+      0.007576995418036969,
+      0.3989348578520237,
+      0.0021394065001170163,
+      -6.279990979314435,
+      0.11812413078419806,
+      0.5130582932173582,
+      0.34668664327291193,
+      0.07455423212351728,
+      -0.010585299673822816,
+      -1.1556155835036803,
+      -0.6348061383771417,
+      0.014718208249067487,
+      -2.7888032796828055,
+      -4.927466336939254,
+      -0.019267366567050602,
+      0.43269245284048946,
+      -1.579470604056403,
+      -4.173843831693329,
+      21.012693663987786,
+      0.3902871945370184,
+      -3.8263769187850905
+    ],
+    [
+      0.0005015892314036279,
+      0.005646603091608314,
+      -0.0004644811972489109,
+      0.009799849344997785,
+      0.0367613764585554,
+      0.016571277899357802,
+      0.013448372185395869,
+      -18.038289418462206,
+      0.08242217992019862,
+      0.009392692703582629,
+      0.012550307895480114,
+      -3.863084670675148e-05,
+      -0.07469930660567357,
+      0.036290962178077965,
+      0.0651170551706695,
+      0.00468614133902637,
+      0.009295253440396107,
+      -0.06546425769710407,
+      0.0017549963890393149,
+      0.000541204733353655,
+      0.02328208839343388,
+      -0.282501738971784,
+      -0.0010309477283296387,
+      -24.852219109504954,
+      0.3377780798080446,
+      0.007554130425234687,
+      -0.06046331485690194,
+      -7.175379574226507,
+      0.06445217499020715,
+      0.3902871945544694,
+      49.456444958948744,
+      -0.03400718664131071
+    ],
+    [
+      -0.006816336153596065,
+      0.14305923147834107,
+      0.0066244806696647745,
+      0.003805723821836318,
+      -0.16880999896668966,
+      0.13361678695194235,
+      0.008744615608113846,
+      0.04349044034131767,
+      0.009319495247191766,
+      0.0034693579819663105,
+      0.07267860610763532,
+      -0.00026063783631040605,
+      0.018325634807002087,
+      0.00661672329831108,
+      0.30173886136831995,
+      0.00048611835160430693,
+      0.0340845333455258,
+      0.05799700945532136,
+      0.013098803477862025,
+      0.06707404262051704,
+      0.19943337431592298,
+      -19.001224464253063,
+      0.021843323243795777,
+      -0.5698956684772086,
+      0.25078337069819295,
+      0.43719222796576174,
+      0.035704946501957754,
+      0.07065620435610567,
+      -13.764654996363966,
+      -3.826376918763405,
+      -0.034007186740623765,
+      35.432049373405924
+    ]
+  ],
+  "meanfunction": -2.7037899129865552,
+  "matern": 1,
+  "sf2": 277.73537263117913,
+  "ell": [
+    945.7740420992449,
+    1112.40957359551
+  ],
+  "problemLowerBound": [
+    0.018789800436355142,
+    0.06022547162926983
+  ],
+  "problemUpperBound": [
+    0.9883738380592262,
+    0.9446689170495839
+  ],
+  "stdOfOutput": 0.28105279548681705,
+  "meanOfOutput": 0.7599077134539292
+}
\ No newline at end of file
diff --git a/examples/09_MultifidelityGaussianProcess/modelData/rho.json b/examples/09_MultifidelityGaussianProcess/modelData/rho.json
new file mode 100644
index 0000000..daef599
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/modelData/rho.json
@@ -0,0 +1,3 @@
+{
+  "rho": 1.1000004380679567
+}
\ No newline at end of file
diff --git a/examples/09_MultifidelityGaussianProcess/multifidelityGP.py b/examples/09_MultifidelityGaussianProcess/multifidelityGP.py
new file mode 100644
index 0000000..680cfbe
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/multifidelityGP.py
@@ -0,0 +1,41 @@
+from pathlib import Path
+
+from maingopy import *
+from maingopy.melonpy import *
+
+folderpath = Path(__file__).parent.resolve() / "modelData"
+
+
+#%% Define model
+
+class Model(MAiNGOmodel):
+
+    def get_variables(self):
+        return [OptimizationVariable(Bounds(0.0, 1.0), VT_CONTINUOUS, "x"),
+                OptimizationVariable(Bounds(0.0, 1.0), VT_CONTINUOUS, "y")]
+
+    def evaluate(self,vars):
+        
+        mf_gp = MulfilGp(folderpath.as_posix())
+        
+        mean_low = mf_gp.calculate_low_prediction_reduced_space(vars)
+        std_low = sqrt(mf_gp.calculate_low_variance_reduced_space(vars))
+        mean_high = mf_gp.calculate_high_prediction_reduced_space(vars)
+        std_high = sqrt(mf_gp.calculate_high_variance_reduced_space(vars))
+
+        result = EvaluationContainer()
+        result.objective = mean_high
+        
+        result.output = [OutputVariable("mean_low", mean_low),
+                         OutputVariable("std_low", std_low),
+                         OutputVariable("mean_high", mean_high),
+                         OutputVariable("std_high", std_high)]
+                         
+        return result
+    
+    
+#%% Solve optimization problem
+
+myModel = Model()
+myMAiNGO = MAiNGO(myModel)
+myMAiNGO.solve()
diff --git a/examples/09_MultifidelityGaussianProcess/problemMulfilGpReducedSpace.h b/examples/09_MultifidelityGaussianProcess/problemMulfilGpReducedSpace.h
new file mode 100644
index 0000000..47a8985
--- /dev/null
+++ b/examples/09_MultifidelityGaussianProcess/problemMulfilGpReducedSpace.h
@@ -0,0 +1,93 @@
+/**********************************************************************************
+ * Copyright (c) 2019 Process Systems Engineering (AVT.SVT), RWTH Aachen University
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ **********************************************************************************/
+
+#pragma once
+
+#include "MAiNGOmodel.h"
+#include "mulfilGp.h"
+
+
+/**
+* @class Model
+* @brief Class defining the actual model implemented by the user
+*
+* This class is used by the user to implement the model
+*/
+class Model: public maingo::MAiNGOmodel {
+
+  public:
+    Model();
+
+    maingo::EvaluationContainer evaluate(const std::vector<Var> &optVars);
+    std::vector<maingo::OptimizationVariable> get_variables();
+    std::vector<double> get_initial_point();
+
+  private:
+    melon::MulfilGp<Var> _mulfilGp;
+};
+
+
+//////////////////////////////////////////////////////////////////////////
+// function for providing optimization variable data to the Branch-and-Bound solver
+std::vector<maingo::OptimizationVariable>
+Model::get_variables()
+{
+    std::vector<maingo::OptimizationVariable> variables;
+
+    variables.push_back(maingo::OptimizationVariable(maingo::Bounds(0.0, 1.0), maingo::VT_CONTINUOUS, "x"));
+    variables.push_back(maingo::OptimizationVariable(maingo::Bounds(0.0, 1.0), maingo::VT_CONTINUOUS, "y"));
+
+    return variables;
+}
+
+
+//////////////////////////////////////////////////////////////////////////
+// function for providing initial point data to the Branch-and-Bound solver
+std::vector<double>
+Model::get_initial_point()
+{
+    std::vector<double> initialPoint;
+    return initialPoint;
+}
+
+
+Model::Model()
+{
+
+    // load GP from file
+    const std::string folderPath = "modelData"; // Define a folder path where the multifidelity GP data is stored.
+    _mulfilGp.load_model(folderPath, "", melon::MODEL_FILE_TYPE::JSON);
+}
+
+//////////////////////////////////////////////////////////////////////////
+// function for constructing the optimization problem and defining outputs
+maingo::EvaluationContainer
+Model::evaluate(const std::vector<Var> &optVars)
+{
+    std::vector<Var> X = optVars;
+
+    Var meanLow, stdLow, meanHigh, stdHigh;
+    meanLow = _mulfilGp.calculate_low_prediction_reduced_space(X);
+    stdLow   = sqrt(_mulfilGp.calculate_low_variance_reduced_space(X));
+    meanHigh = _mulfilGp.calculate_high_prediction_reduced_space(X);
+    stdHigh  = sqrt(_mulfilGp.calculate_high_variance_reduced_space(X));
+    
+    maingo::EvaluationContainer result;
+
+    result.objective = meanHigh;
+
+    result.output.push_back(maingo::OutputVariable("meanLow: ", meanLow));
+    result.output.push_back(maingo::OutputVariable("stdLow: ", stdLow));
+    result.output.push_back(maingo::OutputVariable("meanHigh: ", meanHigh));
+    result.output.push_back(maingo::OutputVariable("stdHigh: ", stdHigh));
+
+    return result;
+}
\ No newline at end of file
diff --git a/examples/MAiNGOSettings.txt b/examples/MAiNGOSettings.txt
index 0310c93..bc15d1b 100644
--- a/examples/MAiNGOSettings.txt
+++ b/examples/MAiNGOSettings.txt
@@ -228,7 +228,7 @@
 #size of new dataset to be added when augmenting relative to number of points of the full dataset    (default: 0.25)
 #growing_augmentPercentage              0.25
 
-#rule when to augment the dataset: AUG_RULE_CONST = 0, AUG_RULE_SCALING = 1, AUG_RULE_VALID = 2, AUG_RULE_COMBI = 3, AUG_RULE_TOL = 4, AUG_RULE_SCALCST = 5, AUG_RULE_VALCST = 6, AUG_RULE_COMBICST = 7, AUG_RULE_TOLCST = 8    (default: 8)
+#rule when to augment the dataset: AUG_RULE_CONST = 0, AUG_RULE_SCALING = 1, AUG_RULE_OOS = 2, AUG_RULE_COMBI = 3, AUG_RULE_TOL = 4, AUG_RULE_SCALCST = 5, AUG_RULE_OOSCST = 6, AUG_RULE_COMBICST = 7, AUG_RULE_TOLCST = 8    (default: 8)
 #when using GROW_APPR_MSEHEURISTIC rules including SCAL(ING) cannot be used
 #growing_augmentRule                    8
 
diff --git a/examples/mainCppApi.cpp b/examples/mainCppApi.cpp
index b0c556c..dc64641 100644
--- a/examples/mainCppApi.cpp
+++ b/examples/mainCppApi.cpp
@@ -34,6 +34,8 @@
 // #include "06_BayesianOptimization/problemBayesianOptimizationReducedSpace.h"
 // #include "06_BayesianOptimization/problemBayesianOptimizationFullspace.h"
 
+// #include "09_MultifidelityGaussianProcess/problemMulfilGpReducedSpace.h"
+
 /**
  * The following example requires that the CMake flag MAiNGO_use_growing_datasets is set to true.
  */
diff --git a/inc/TwoStageModel.h b/inc/TwoStageModel.h
index cac235e..9caaa13 100644
--- a/inc/TwoStageModel.h
+++ b/inc/TwoStageModel.h
@@ -239,7 +239,7 @@ class TwoStageModel: public MAiNGOmodel {
         result.eqRelaxationOnly.push_back(lhs.first, lhs.second);
       }
 
-      for (auto s = 0; s < Ns; s++) {
+      for (unsigned int s = 0; s < Ns; s++) {
         auto s_string = std::to_string(s + 1);
 
         const auto &result_s = evaluate(optVars, s);
diff --git a/inc/bab.h b/inc/bab.h
index 8e88b1b..b7567f8 100644
--- a/inc/bab.h
+++ b/inc/bab.h
@@ -286,65 +286,65 @@ class BranchAndBound : public babBase::FathomObserver {
 
 #ifdef HAVE_GROWING_DATASETS
     /**
-        * @brief Auxiliary function for calling augmentation rule CONST
-        *
-        * @param[in] depth is the depth of the node calling the augmentation rule
-        * @param[out] boolean indicating whether to augment (true) or branch (false)
-        */
+    * @brief Auxiliary function for calling augmentation rule CONST
+    *
+    * @param[in] depth is the depth of the node calling the augmentation rule
+    * @param[out] boolean indicating whether to augment (true) or branch (false)
+    */
     bool _call_augmentation_rule_const(const int depth);
 
     /**
-        * @brief Auxiliary function for calling augmentation rule SCALING
-        *
-        * @param[in] indexDataset is the index of the the dataset of the node calling the augmentation rule
-        * @param[in] currentLBD is the current lower bound used for pruning
-        * @param[out] boolean indicating whether to augment (true) or branch (false)
-        */
+    * @brief Auxiliary function for calling augmentation rule SCALING
+    *
+    * @param[in] indexDataset is the index of the the dataset of the node calling the augmentation rule
+    * @param[in] currentLBD is the current lower bound used for pruning
+    * @param[out] boolean indicating whether to augment (true) or branch (false)
+    */
     bool _call_augmentation_rule_scaling(const int indexDataset, const double currentLBD);
 
     /**
-        * @brief Function for evaluating solution point of lower bounding problem with validation set
-        *
-        * @param[in] currentNode is the node to be processed
-        * @param[in] lbpSolutionPoint is the solution point of the LBP of the current node
-        * @param[in] currentLBD is the objective value of the LBP of the current node
-        */
+    * @brief Function for evaluating solution point of lower bounding problem with validation set, i.e., out-of-sample evaluation
+    *
+    * @param[in] currentNode is the node to be processed
+    * @param[in] lbpSolutionPoint is the solution point of the LBP of the current node
+    * @param[in] currentLBD is the objective value of the LBP of the current node
+    */
     double _evaluate_lower_bound_for_validation_set(const babBase::BabNode& currentNode, const std::vector<double>& lbpSolutionPoint, const double currentLBD);
 
     /**
-        * @brief Function for calculating approximated lower bound as combination of reduced and validated lower bound
-        *
-        * @param[in] currentLBD is the objective value of the LBP of the current node
-        * @param[in] validatedLBD is the evaluation of the LBP with the validation dataset at the optimal lower bounding point
-        * @param[in] indexDataset is the index of the dataset of the current node
-        */
-    double _calculate_combined_lower_bound(const double currentLBD, const double validatedLBD, const unsigned int indexDataset);
+    * @brief Function for calculating approximated lower bound as combination of reduced and out-of-sample lower bound
+    *
+    * @param[in] currentLBD is the objective value of the LBP of the current node
+    * @param[in] oosLBD is the out-of-sample evaluation of the LBP with the validation dataset at the optimal lower bounding point
+    * @param[in] indexDataset is the index of the dataset of the current node
+    */
+    double _calculate_combined_lower_bound(const double currentLBD, const double oosLBD, const unsigned int indexDataset);
 
     /**
-        * @brief Auxiliary function for calling augmentation rule VALID
-        *
-        * @param[in] validatedLBD is the evaluation of the LBP with the validation dataset at the optimal lower bounding point
-        * @param[out] boolean indicating whether to augment (true) or branch (false)
-        */
-    bool _call_augmentation_rule_valid(const double validatedLBD);
+    * @brief Auxiliary function for calling augmentation rule OOS
+    *
+    * @param[in] oosLBD is the out-of-sample evaluation of the LBP with the validation dataset at the optimal lower bounding point
+    * @param[out] boolean indicating whether to augment (true) or branch (false)
+    */
+    bool _call_augmentation_rule_oos(const double oosLBD);
 
     /**
-        * @brief Auxiliary function for calling augmentation rule COMBI
-        *
-        * @param[in] currentLBD is the objective value of the LBP of the current node
-        * @param[in] validatedLBD is the evaluation of the LBP with the validation dataset at the optimal lower bounding point
-        * @param[in] indexDataset is the index of the dataset of the current node
-        */
-    bool _call_augmentation_rule_combi(const double currentLBD, const double validatedLBD, const unsigned int indexDataset);
+    * @brief Auxiliary function for calling augmentation rule COMBI
+    *
+    * @param[in] currentLBD is the objective value of the LBP of the current node
+    * @param[in] oosLBD is the out-of-sample evaluation of the LBP with the validation dataset at the optimal lower bounding point
+    * @param[in] indexDataset is the index of the dataset of the current node
+    */
+    bool _call_augmentation_rule_combi(const double currentLBD, const double LBD, const unsigned int indexDataset);
 
     /**
-        * @brief Auxiliary function for calling augmentation rule TOL
-        *
-        * @param[in] currentLBD is the objective value of the LBP of the current node
-        * @param[in] validatedLBD is the evaluation of the LBP with the validation dataset at the optimal lower bounding point
-        * @param[in] indexDataset is the index of the dataset of the current node
-        */
-    bool _call_augmentation_rule_tol(const double currentLBD, const double validatedLBD, const unsigned int indexDataset);
+    * @brief Auxiliary function for calling augmentation rule TOL
+    *
+    * @param[in] currentLBD is the objective value of the LBP of the current node
+    * @param[in] oosLBD is the out-of-sample evaluation of the LBP with the validation dataset at the optimal lower bounding point
+    * @param[in] indexDataset is the index of the dataset of the current node
+    */
+    bool _call_augmentation_rule_tol(const double currentLBD, const double oosLBD, const unsigned int indexDataset);
 
     /**
     * @brief Function which checks whether to augment the dataset
@@ -352,9 +352,9 @@ class BranchAndBound : public babBase::FathomObserver {
     * @param[in] currentNode is the node to be processed
     * @param[in] lbpSolutionPoint is the solution point of the LBP of the current node
     * @param[in] currentLBD is the objective value of the LBP of the current node
-    * @param[in] validatedLBD is the evaluation of the LBP with the validation dataset at the optimal lower bounding point
+    * @param[in] oosLBD is the out-of-sample evaluation of the LBP with the validation dataset at the optimal lower bounding point
     */
-    bool _check_whether_to_augment(const babBase::BabNode &currentNode, const std::vector<double> &lbpSolutionPoint, const double currentLBD, const double validatedLBD);
+    bool _check_whether_to_augment(const babBase::BabNode &currentNode, const std::vector<double> &lbpSolutionPoint, const double currentLBD, const double oosLBD);
 
     /**
      * @brief Function for augmenting dataset of node
@@ -399,7 +399,7 @@ class BranchAndBound : public babBase::FathomObserver {
 	 * @param[in] currentNodeLbdFull is the lower bound calculated based on the full dataset in the current node
 	 * @param[in] currentNodeUbdFull is the upper bound of the current node
 	 * @param[in] lbpSolutionPoint is the solution point of the lower bound calculated und used in the current node
-	 * @param[in] lbpSolutionPointFullis the solution point of the lower bound calculated based on the full dataset in the current node
+	 * @param[in] lbpSolutionPointFull is the solution point of the lower bound calculated based on the full dataset in the current node
 	 */
     void _log_nodes(const babBase::BabNode &currentNode, const double currentNodeLbd, const double currentNodeLbdFull, const double currentNodeUbdFull, const std::vector<double> lbpSolutionPoint, const std::vector<double> lbpSolutionPointFull);
 #endif
@@ -579,7 +579,7 @@ class BranchAndBound : public babBase::FathomObserver {
     std::shared_ptr<lbp::LowerBoundingSolver> _LBSFull; /*!< pointer to lower bounding solver using the full dataset only */
     double _currentLBDFull;                         /*!< lower bound of the current node when using the full dataset */
     std::vector<double> _lbpSolutionPointFull;      /*!< solution point of the LBP in the current node when using the full dataset */
-    double _currentLBDValid;                        /*!< lower bound of the current node when using the evaluation called for augmentation rule VALID */
+    double _currentLBDValid;                        /*!< lower bound of the current node when using the evaluation called for augmentation rule OOS */
 #endif
 
     std::shared_ptr<Settings> _maingoSettings; /*!< pointer to object storing settings */
diff --git a/inc/settings.h b/inc/settings.h
index 77d9b0e..c21e6ee 100644
--- a/inc/settings.h
+++ b/inc/settings.h
@@ -140,11 +140,11 @@ enum WRITING_LANGUAGE {
 enum AUGMENTATION_RULE {
     AUG_RULE_CONST = 0,    //!< (=0): Augment every growing_augmentFreq by growing_augmentPercentage data points
     AUG_RULE_SCALING,      //!< (=1): Augment if linear scaling of reduced LB to full LB suggests pruning
-    AUG_RULE_VALID,        //!< (=2): Augment if UB is smaller than validated LB
-    AUG_RULE_COMBI,        //!< (=3): Augment if UB is smaller than approximated LB which is a combination of reduced and validated LB
+    AUG_RULE_OOS,          //!< (=2): Augment if UB is smaller than out-of-sample LB
+    AUG_RULE_COMBI,        //!< (=3): Augment if UB is smaller than approximated LB which is a combination of reduced and out-of-sample LB
     AUG_RULE_TOL,          //!< (=4): Augment if UB is within tolerance of the lower bound used for pruning. Currently the same value is used for the absolute and relative tolerance
     AUG_RULE_SCALCST,      //!< (=5): Augment if SCALING or CONST is triggered
-    AUG_RULE_VALCST,       //!< (=6): Augment if VALID or CONST is triggered
+    AUG_RULE_OOSCST,       //!< (=6): Augment if OOS or CONST is triggered
     AUG_RULE_COMBICST,     //!< (=7): Augment if COMBI or CONST is triggered
     AUG_RULE_TOLCST        //!< (=8): Augment if TOL or CONST is triggered
 };
diff --git a/maingopy/_maingopy.cpp b/maingopy/_maingopy.cpp
index b624d84..1616799 100644
--- a/maingopy/_maingopy.cpp
+++ b/maingopy/_maingopy.cpp
@@ -283,11 +283,11 @@ PYBIND11_MODULE(_maingopy, m)
     py::enum_<maingo::AUGMENTATION_RULE>(m, "AUGMENTATION_RULE")
         .value("AUG_RULE_CONST", maingo::AUGMENTATION_RULE::AUG_RULE_CONST)
         .value("AUG_RULE_SCALING", maingo::AUGMENTATION_RULE::AUG_RULE_SCALING)
-        .value("AUG_RULE_VALID", maingo::AUGMENTATION_RULE::AUG_RULE_VALID)
+        .value("AUG_RULE_OOS", maingo::AUGMENTATION_RULE::AUG_RULE_OOS)
         .value("AUG_RULE_COMBI", maingo::AUGMENTATION_RULE::AUG_RULE_COMBI)
         .value("AUG_RULE_TOL", maingo::AUGMENTATION_RULE::AUG_RULE_TOL)
         .value("AUG_RULE_SCALCST", maingo::AUGMENTATION_RULE::AUG_RULE_SCALCST)
-        .value("AUG_RULE_VALCST", maingo::AUGMENTATION_RULE::AUG_RULE_VALCST)
+        .value("AUG_RULE_OOSCST", maingo::AUGMENTATION_RULE::AUG_RULE_OOSCST)
         .value("AUG_RULE_COMBICST", maingo::AUGMENTATION_RULE::AUG_RULE_COMBICST)
         .value("AUG_RULE_TOLCST", maingo::AUGMENTATION_RULE::AUG_RULE_TOLCST)
         .export_values();
diff --git a/maingopy/tests/individualPythonTests/testSolver.py b/maingopy/tests/individualPythonTests/testSolver.py
index 667e44a..49462d9 100644
--- a/maingopy/tests/individualPythonTests/testSolver.py
+++ b/maingopy/tests/individualPythonTests/testSolver.py
@@ -284,11 +284,11 @@ class TestMAiNGOgrowingDatasets(unittest.TestCase):
         try:
             myRetCode = AUG_RULE_CONST
             myRetCode = AUG_RULE_SCALING
-            myRetCode = AUG_RULE_VALID
+            myRetCode = AUG_RULE_OOS
             myRetCode = AUG_RULE_COMBI
             myRetCode = AUG_RULE_TOL
             myRetCode = AUG_RULE_SCALCST
-            myRetCode = AUG_RULE_VALCST
+            myRetCode = AUG_RULE_OOSCST
             myRetCode = AUG_RULE_COMBICST
             myRetCode = AUG_RULE_TOLCST
         except:
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..e996833
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,7 @@
+[build-system]
+requires = [
+    "setuptools>=42",
+    "wheel",
+    "scikit-build",
+    "cmake>=3.19",]
+build-backend = "setuptools.build_meta"
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 3aa34f1..874c0b3 100644
--- a/setup.py
+++ b/setup.py
@@ -1,12 +1,6 @@
-import re, sys
-try:
-    from setuptools import find_packages
-except:
-    raise ImportError('Error during setup of maingopy: maingopy requires setuptools, which is not available.')
-try:
-    from skbuild import setup
-except:
-    raise ImportError('Error during setup of maingopy: maingopy requires scikit-build, which is not available.')
+import re
+from setuptools import find_packages
+from skbuild import setup
 
 
 with open('maingopy/Readme.md', 'r') as fh:
@@ -16,7 +10,7 @@ with open('maingopy/Readme.md', 'r') as fh:
 with open('cmake/MAiNGOversion.cmake', 'r') as versionFile:
     lines = versionFile.readlines()
     MAiNGOversion = lines[1].rstrip()
-    p = re.compile("^[0-9]\.[0-9]\.[0-9](\.[0-9])?$")
+    p = re.compile(r"^[0-9]\.[0-9]\.[0-9](\.[0-9])?$")
     if not(p.match(MAiNGOversion)):
         raise ValueError("Error reading MAiNGO version. Found invalid string {}".format(MAiNGOversion))
 
@@ -47,12 +41,12 @@ setup(
         'Topic :: Scientific/Engineering',
         'License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)',
         'Programming Language :: C++',
-        'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: 3.10',
         'Programming Language :: Python :: 3.11',
         'Programming Language :: Python :: 3.12',
+        'Programming Language :: Python :: 3.13',
         'Operating System :: Microsoft :: Windows',
         'Operating System :: POSIX :: Linux',
         'Operating System :: MacOS :: MacOS X',
diff --git a/src/MAiNGO.cpp b/src/MAiNGO.cpp
index f22b771..fdba4ec 100644
--- a/src/MAiNGO.cpp
+++ b/src/MAiNGO.cpp
@@ -2946,12 +2946,14 @@ MAiNGO::_set_constraint_and_variable_properties()
         }
     }
 
-    // If the model should be solved as a two-stage problem, were done
-    if (_myTwoStageFFVARmodel && (_maingoSettings->TS_useLowerBoundingSubsolvers || _maingoSettings->TS_useUpperBoundingSubsolvers))
+    // If the model should be solved as a two-stage problem, we are done
+    if (_myTwoStageFFVARmodel && (_maingoSettings->TS_useLowerBoundingSubsolvers || _maingoSettings->TS_useUpperBoundingSubsolvers)) {
         return;
-    // Set branching priorities on linear variables to zero to avoid branching on them
+    }
+
+    // Set branching priorities on continuous variables occurring only linearly to zero to avoid branching on them
     for (size_t i = 0; i < _nvarLbd; i++) {
-        if (_variableIsLinear[i]) {
+        if (_variableIsLinear[i] && (_variablesLbd[i].get_variable_type() == VT_CONTINUOUS)) {
             _variablesLbd[i].set_branching_priority(0.);
         }
     }
diff --git a/src/MAiNGOsetOption.cpp b/src/MAiNGOsetOption.cpp
index 0af40f4..48992d3 100644
--- a/src/MAiNGOsetOption.cpp
+++ b/src/MAiNGOsetOption.cpp
@@ -938,7 +938,7 @@ MAiNGO::set_option(const std::string& option, const double value)
                 _maingoSettings->growing_augmentRule = AUG_RULE_SCALING;
             }
             else if ((int)value == 2) {
-                _maingoSettings->growing_augmentRule = AUG_RULE_VALID;
+                _maingoSettings->growing_augmentRule = AUG_RULE_OOS;
             }
             else if ((int)value == 3) {
                 _maingoSettings->growing_augmentRule = AUG_RULE_COMBI;
@@ -950,7 +950,7 @@ MAiNGO::set_option(const std::string& option, const double value)
                 _maingoSettings->growing_augmentRule = AUG_RULE_SCALCST;
             }
             else if ((int)value == 6) {
-                _maingoSettings->growing_augmentRule = AUG_RULE_VALCST;
+                _maingoSettings->growing_augmentRule = AUG_RULE_OOSCST;
             }
             else if ((int)value == 7) {
                 _maingoSettings->growing_augmentRule = AUG_RULE_COMBICST;
@@ -968,7 +968,7 @@ MAiNGO::set_option(const std::string& option, const double value)
     else if (option == "growing_augmentFreq") {
 #ifdef HAVE_GROWING_DATASETS
         if (_maingoSettings->growing_augmentRule == AUG_RULE_CONST
-            || _maingoSettings->growing_augmentRule == AUG_RULE_SCALCST  || _maingoSettings->growing_augmentRule == AUG_RULE_VALCST
+            || _maingoSettings->growing_augmentRule == AUG_RULE_SCALCST  || _maingoSettings->growing_augmentRule == AUG_RULE_OOSCST
             || _maingoSettings->growing_augmentRule == AUG_RULE_COMBICST || _maingoSettings->growing_augmentRule == AUG_RULE_TOLCST) {
             if (value < 1.) {
                 _logger->save_setting(GROWING_AUGMENTFREQ, "growing_augmentFreq has to be at least 1, setting it to default (10)");
diff --git a/src/MAiNGOwritingFunctions.cpp b/src/MAiNGOwritingFunctions.cpp
index 32ca63a..852e765 100644
--- a/src/MAiNGOwritingFunctions.cpp
+++ b/src/MAiNGOwritingFunctions.cpp
@@ -303,42 +303,48 @@ MAiNGO::_write_json_file()
     jsonFile.open(_jsonFileName, std::ios::out);
 
     jsonFile << "{" << std::endl;
-    jsonFile << "  \"MAiNGOversion\" : \"" << get_version() << "\"," << std::endl;
+    jsonFile << "  \"MAiNGOversion\" : \"" << get_version() << "\"";
+
+    jsonFile << "," << std::endl;
     jsonFile << "  \"ProblemType\" : \"";
     switch (_problemStructure) {
         case LP:
-            jsonFile << "LP\"," << std::endl;
+            jsonFile << "LP\"";
             break;
         case QP:
-            jsonFile << "QP\"," << std::endl;
+            jsonFile << "QP\"";
             break;
         case MIP:
-            jsonFile << "MIP\"," << std::endl;
+            jsonFile << "MIP\"";
             break;
         case MIQP:
-            jsonFile << "MIQP\"," << std::endl;
+            jsonFile << "MIQP\"";
             break;
         case NLP:
-            jsonFile << "NLP\"," << std::endl;
+            jsonFile << "NLP\"";
             break;
         case DNLP:
-            jsonFile << "DNLP\"," << std::endl;
+            jsonFile << "DNLP\"";
             break;
         case MINLP:
-            jsonFile << "MINLP\"," << std::endl;
+            jsonFile << "MINLP\"";
             break;
         default:    // GCOVR_EXCL_LINE
             throw MAiNGOException("Error writing json file: unknown problem structure " + std::to_string(_problemStructure)); // GCOVR_EXCL_LINE
     }
+
     if (!_maingoSettings->PRE_pureMultistart && _problemStructure > MIQP) {
+        jsonFile << "," << std::endl;
         jsonFile << "  \"SolutionStatistics\" : {" << std::endl;
         jsonFile << "    \"NumberOfIterations\" : " << _myBaB->get_iterations() << "," << std::endl;
         jsonFile << "    \"LBDProblemsSolved\" : " << _myBaB->get_LBP_count() << "," << std::endl;
         jsonFile << "    \"UBPProblemsSolved\" : " << _myBaB->get_UBP_count() << "," << std::endl;
         jsonFile << "    \"MaximumNodesInMemory\" : " << _myBaB->get_max_nodes_in_memory() << "," << std::endl;
         jsonFile << "    \"NumberOfNodesLeft\" : " << _myBaB->get_nodes_left() << std::endl;
-        jsonFile << "  }," << std::endl;
+        jsonFile << "  }";
     }
+
+    jsonFile << "," << std::endl;
     jsonFile << "  \"Timing\" : {" << std::endl;
     jsonFile << "    \"PreProcessingCPU\" : " << _preprocessTime << "," << std::endl;
     jsonFile << "    \"PreProcessingWall\" : " << _preprocessTimeWallClock << "," << std::endl;
@@ -346,32 +352,34 @@ MAiNGO::_write_json_file()
     jsonFile << "    \"BranchAndBoundWall\" : " << _solutionTimeWallClock - _preprocessTimeWallClock << "," << std::endl;
     jsonFile << "    \"TotalCPU\" : " << _solutionTime << "," << std::endl;
     jsonFile << "    \"TotalWall\" : " << _solutionTimeWallClock << std::endl;
-    jsonFile << "  }," << std::endl;
-    std::string str = (!_solutionPoint.empty()) ? "true" : "false";
+    jsonFile << "  }";
+
+    jsonFile << "," << std::endl;
     jsonFile << "  \"Solution\" : {" << std::endl;
+    const std::string str = (!_solutionPoint.empty()) ? "true" : "false";
     jsonFile << "    \"FoundFeasiblePoint\" : " << str << "," << std::endl;
     jsonFile << "    \"MAiNGOstatus\" : ";
     switch (_maingoStatus) {
         case GLOBALLY_OPTIMAL:
-            jsonFile << "\"Globally optimal\"," << std::endl;
+            jsonFile << "\"Globally optimal\"";
             break;
         case INFEASIBLE:
-            jsonFile << "\"Infeasible\"," << std::endl;
+            jsonFile << "\"Infeasible\"";
             break;
         case FEASIBLE_POINT:
-            jsonFile << "\"Feasible point\"," << std::endl;
+            jsonFile << "\"Feasible point\"";
             break;
         case NO_FEASIBLE_POINT_FOUND:
-            jsonFile << "\"No feasible point found\"," << std::endl;
+            jsonFile << "\"No feasible point found\"";
             break;
         case BOUND_TARGETS:
-            jsonFile << "\"Reached target bound\"," << std::endl;
+            jsonFile << "\"Reached target bound\"";
             break;
         case NOT_SOLVED_YET: // GCOVR_EXCL_START
-            jsonFile << "\"Not solved yet\"," << std::endl;
+            jsonFile << "\"Not solved yet\"";
             break;
         case JUST_A_WORKER_DONT_ASK_ME:
-            jsonFile << "\"Just a worker\"," << std::endl;
+            jsonFile << "\"Just a worker\"";
             break;
         default:
             throw MAiNGOException("Error writing json file: unknown status " + std::to_string(_maingoStatus));
@@ -380,6 +388,7 @@ MAiNGO::_write_json_file()
 
 
     if (!_solutionPoint.empty()) {
+        jsonFile << "," << std::endl;
         jsonFile << "    \"BestSolutionValue\" : " << _solutionValue << "," << std::endl;
         if (!_maingoSettings->PRE_pureMultistart && _problemStructure > MIQP) {
             jsonFile << "    \"FoundAtNode\" : " << _myBaB->get_first_found() << "," << std::endl;
@@ -416,8 +425,8 @@ MAiNGO::_write_json_file()
         }
         jsonFile << "    ]" << std::endl;
     }
-    jsonFile << "  }" << std::endl;
-    jsonFile << "}";
+    jsonFile << std::endl << "  }";
+    jsonFile << std::endl << "}";
 
     jsonFile.close();
 }
diff --git a/src/bab.cpp b/src/bab.cpp
index 407cef2..4f87a39 100644
--- a/src/bab.cpp
+++ b/src/bab.cpp
@@ -508,18 +508,18 @@ BranchAndBound::solve(babBase::BabNode &rootNodeIn, double &solutionValue, std::
                     // -----------------------------------
                     // After getting the currentLBD from workers
                     // Before augmenting and pruning
-                    double validatedLBD = -_maingoSettings->infinity;
+                    double oosLBD = -_maingoSettings->infinity;
 
                     if ((_maingoSettings->growing_approach > GROW_APPR_DETERMINISTIC) && (currentNode.get_index_dataset() > 0)) {
                         // Validation set is only defined for reduced dataset
-                        validatedLBD = _evaluate_lower_bound_for_validation_set(currentNode, lbpSolutionPoint, currentLBD);
+                        oosLBD = _evaluate_lower_bound_for_validation_set(currentNode, lbpSolutionPoint, currentLBD);
                     }
 
                     // -----------------------------------
                     // B&B algorithm with growing datasets: Augmenting
                     // -----------------------------------
                     if (nodeProvenInfeasible == false) {
-                        currentNode.set_augment_data(_check_whether_to_augment(currentNode, lbpSolutionPoint, currentLBD, validatedLBD));
+                        currentNode.set_augment_data(_check_whether_to_augment(currentNode, lbpSolutionPoint, currentLBD, oosLBD));
                         if (currentNode.get_augment_data()) {
                             unsigned int newDataIndex = _augment_dataset(currentNode);
                             if ((nodeConverged == false) || (currentNode.get_index_dataset() > 0)) {
@@ -630,7 +630,7 @@ BranchAndBound::solve(babBase::BabNode &rootNodeIn, double &solutionValue, std::
                             if ((_maingoSettings->growing_approach > GROW_APPR_DETERMINISTIC) && (currentNode.get_index_dataset() > 0)) {
                                 // Pruning based on combined lower bound
                                 // For full dataset, we have combinedLBD = fullLBD = currentLBD and, thus, nothing to do
-                                currentLBD = _calculate_combined_lower_bound(currentLBD, validatedLBD, currentNode.get_index_dataset());
+                                currentLBD = _calculate_combined_lower_bound(currentLBD, oosLBD, currentNode.get_index_dataset());
                             }
 #endif    // HAVE_GROWING_DATASETS
                         currentNode.set_pruning_score(currentLBD);
@@ -1693,6 +1693,7 @@ BranchAndBound::_call_augmentation_rule_scaling(const int indexDataset, const do
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // function for evaluating the lower bounding solution point for the validation set
+// i.e., for calculating the out-of-sample lower bound
 double
 BranchAndBound::_evaluate_lower_bound_for_validation_set(const babBase::BabNode& currentNode, const std::vector<double>& lbpSolutionPoint, const double currentLBD)
 {
@@ -1703,37 +1704,37 @@ BranchAndBound::_evaluate_lower_bound_for_validation_set(const babBase::BabNode&
         throw MAiNGOException(errmsg.str());
     }
 
-    double validatedLBD = _maingoSettings->infinity;
+    double oosLBD = _maingoSettings->infinity;
 
     // Evaluate validation set
     _LBS->change_growing_objective(-currentNode.get_index_dataset());
-    _LBS->evaluate_LBP(currentNode, lbpSolutionPoint, validatedLBD);
+    _LBS->evaluate_LBP(currentNode, lbpSolutionPoint, oosLBD);
 
     // Reset current dataset to former training set
     _LBS->change_growing_objective(currentNode.get_index_dataset());
 
-    return validatedLBD;
+    return oosLBD;
 }
 
 
 ////////////////////////////////////////////////////////////////////////////////////////
-// function for calculating approximated lower bound as combination of reduced and validated lower bound
+// function for calculating approximated lower bound as combination of reduced and out-of-sample lower bound
 double
-BranchAndBound::_calculate_combined_lower_bound(const double currentLBD, const double validatedLBD, const unsigned int indexDataset)
+BranchAndBound::_calculate_combined_lower_bound(const double currentLBD, const double oosLBD, const unsigned int indexDataset)
 {
     double combiLBD;
 
-    // approximate lower bound by convex combination of currentLBD and validated LBD
+    // approximate lower bound by convex combination of currentLBD and out-of-sample LBD
     if (_maingoSettings->growing_approach == GROW_APPR_MSEHEURISTIC) {
         // objective of LBP is mean squared error
-        // Thus, use dataRatio * reduced LBD + (1-dataRatio) * validated LBD
+        // Thus, use dataRatio * reduced LBD + (1-dataRatio) * out-of-sample LBD
         double dataRatio = (double)(*_datasets)[indexDataset].size() / (double)(*_datasets)[0].size();
-        combiLBD = dataRatio * currentLBD + (1 - dataRatio) * validatedLBD;
+        combiLBD = dataRatio * currentLBD + (1 - dataRatio) * oosLBD;
     }
     else {
         // objective of LBP is summed squared error
-        // Thus, use reduced LBD + validated LBD
-        combiLBD = currentLBD + validatedLBD;
+        // Thus, use reduced LBD + out-of-sample LBD
+        combiLBD = currentLBD + oosLBD;
     }
 
     return combiLBD;
@@ -1741,22 +1742,22 @@ BranchAndBound::_calculate_combined_lower_bound(const double currentLBD, const d
 
 
 ////////////////////////////////////////////////////////////////////////////////////////
-// auxiliary function calling augmentation rule VALID
+// auxiliary function calling augmentation rule OOS
 bool
-BranchAndBound::_call_augmentation_rule_valid(const double validatedLBD)
+BranchAndBound::_call_augmentation_rule_oos(const double oosLBD)
 {
-    // Augment if validated LB suggests pruning
-    return babBase::larger_or_equal_within_rel_and_abs_tolerance(validatedLBD, _ubd, _maingoSettings->epsilonR, _maingoSettings->epsilonA);
+    // Augment if out-of-sample LB suggests pruning
+    return babBase::larger_or_equal_within_rel_and_abs_tolerance(oosLBD, _ubd, _maingoSettings->epsilonR, _maingoSettings->epsilonA);
 }
 
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // auxiliary function calling augmentation rule COMBI
 bool
-BranchAndBound::_call_augmentation_rule_combi(const double currentLBD, const double validatedLBD, const unsigned int indexDataset)
+BranchAndBound::_call_augmentation_rule_combi(const double currentLBD, const double oosLBD, const unsigned int indexDataset)
 {
     // Augment if combined LB suggests pruning
-    double combiLBD = _calculate_combined_lower_bound(currentLBD, validatedLBD, indexDataset);
+    double combiLBD = _calculate_combined_lower_bound(currentLBD, oosLBD, indexDataset);
     return babBase::larger_or_equal_within_rel_and_abs_tolerance(combiLBD, _ubd, _maingoSettings->epsilonR, _maingoSettings->epsilonA);
 }
 
@@ -1764,12 +1765,12 @@ BranchAndBound::_call_augmentation_rule_combi(const double currentLBD, const dou
 ////////////////////////////////////////////////////////////////////////////////////////
 // auxiliary function calling augmentation rule TOL
 bool
-BranchAndBound::_call_augmentation_rule_tol(const double currentLBD, const double validatedLBD, const unsigned int indexDataset)
+BranchAndBound::_call_augmentation_rule_tol(const double currentLBD, const double oosLBD, const unsigned int indexDataset)
 {
     // Augment if upper bound is smaller than the lower bound used for pruning plus an additional absolute or relative tolerance
     if (_maingoSettings->growing_approach > GROW_APPR_DETERMINISTIC) {
         // Combined lower bound used for pruning
-        double combiLBD = _calculate_combined_lower_bound(currentLBD, validatedLBD, indexDataset);
+        double combiLBD = _calculate_combined_lower_bound(currentLBD, oosLBD, indexDataset);
         return babBase::larger_or_equal_within_rel_and_abs_tolerance(combiLBD, _ubd, _maingoSettings->growing_augmentTol, _maingoSettings->growing_augmentTol);
     }
     else {
@@ -1782,7 +1783,7 @@ BranchAndBound::_call_augmentation_rule_tol(const double currentLBD, const doubl
 ////////////////////////////////////////////////////////////////////////////////////////
 // function which checks whether to augment the dataset
 bool
-BranchAndBound::_check_whether_to_augment(const babBase::BabNode &currentNode, const std::vector<double> &lbpSolutionPoint, const double currentLBD, const double validatedLBD)
+BranchAndBound::_check_whether_to_augment(const babBase::BabNode &currentNode, const std::vector<double> &lbpSolutionPoint, const double currentLBD, const double oosLBD)
 {
     bool augment = false;
 
@@ -1798,16 +1799,16 @@ BranchAndBound::_check_whether_to_augment(const babBase::BabNode &currentNode, c
                 augment = _call_augmentation_rule_scaling(currentNode.get_index_dataset(), currentLBD);
                 break;
             }
-            case AUG_RULE_VALID: {
-                augment = _call_augmentation_rule_valid(validatedLBD);
+            case AUG_RULE_OOS: {
+                augment = _call_augmentation_rule_oos(oosLBD);
                 break;
             }
             case AUG_RULE_COMBI: {
-                augment = _call_augmentation_rule_combi(currentLBD, validatedLBD, currentNode.get_index_dataset());
+                augment = _call_augmentation_rule_combi(currentLBD, oosLBD, currentNode.get_index_dataset());
                 break;
             }
             case AUG_RULE_TOL: {
-                augment = _call_augmentation_rule_tol(currentLBD, validatedLBD, currentNode.get_index_dataset());
+                augment = _call_augmentation_rule_tol(currentLBD, oosLBD, currentNode.get_index_dataset());
                 break;
             }
             case AUG_RULE_SCALCST: {
@@ -1815,19 +1816,19 @@ BranchAndBound::_check_whether_to_augment(const babBase::BabNode &currentNode, c
                           || _call_augmentation_rule_scaling(currentNode.get_index_dataset(), currentLBD);
                 break;
             }
-            case AUG_RULE_VALCST: {// Augment if VALID or CONST is triggered
+            case AUG_RULE_OOSCST: {// Augment if OOS or CONST is triggered
                 augment = _call_augmentation_rule_const(currentNode.get_depth())
-                          || _call_augmentation_rule_valid(validatedLBD);
+                          || _call_augmentation_rule_oos(oosLBD);
                 break;
             }
             case AUG_RULE_COMBICST: {
                 augment = _call_augmentation_rule_const(currentNode.get_depth())
-                    || _call_augmentation_rule_combi(currentLBD, validatedLBD, currentNode.get_index_dataset());
+                    || _call_augmentation_rule_combi(currentLBD, oosLBD, currentNode.get_index_dataset());
                 break;
             }
-            case AUG_RULE_TOLCST: {// Augment if VALID or CONST is triggered
-                augment = _call_augmentation_rule_const(validatedLBD)
-                    || _call_augmentation_rule_tol(currentLBD, validatedLBD, currentNode.get_index_dataset());
+            case AUG_RULE_TOLCST: {// Augment if TOL or CONST is triggered
+                augment = _call_augmentation_rule_const(oosLBD)
+                    || _call_augmentation_rule_tol(currentLBD, oosLBD, currentNode.get_index_dataset());
                 break;
             }
             default: {
diff --git a/src/lbpLinearizationStrats.cpp b/src/lbpLinearizationStrats.cpp
index 6ac9da3..5509081 100644
--- a/src/lbpLinearizationStrats.cpp
+++ b/src/lbpLinearizationStrats.cpp
@@ -49,7 +49,7 @@ LowerBoundingSolver::_linearize_model_at_incumbent_or_at_midpoint(const std::vec
     PROFILE_FUNCTION()
 
     _logger->print_message("  Checking if node contains incumbent.", VERB_ALL, LBP_VERBOSITY);
-    if (point_is_within_node_bounds(_incumbent, lowerVarBounds, upperVarBounds)) {
+    if (!_incumbent.empty() && point_is_within_node_bounds(_incumbent, lowerVarBounds, upperVarBounds)) {
         _logger->print_message("  Node contains incumbent, linearizing there.", VERB_ALL, LBP_VERBOSITY);
 
         _linearize_functions_at_linpoint(_DAGobj->resultRelaxation, _incumbent, lowerVarBounds, upperVarBounds, _DAGobj->subgraph, _DAGobj->functions);
diff --git a/src/pointIsWithinNodeBounds.cpp b/src/pointIsWithinNodeBounds.cpp
index 2fa9c86..ad3fdf0 100644
--- a/src/pointIsWithinNodeBounds.cpp
+++ b/src/pointIsWithinNodeBounds.cpp
@@ -23,6 +23,7 @@ namespace maingo {
 bool
 point_is_within_node_bounds(const std::vector<double>& point, const std::vector<double>& lowerBounds, const std::vector<double>& upperBounds)
 {
+    //if(point.empty()) return false;
     assert(lowerBounds.size() == upperBounds.size());
     assert(lowerBounds.size() == point.size());
 
diff --git a/src/ubp.cpp b/src/ubp.cpp
index f47b4df..0bd7aa7 100644
--- a/src/ubp.cpp
+++ b/src/ubp.cpp
@@ -825,8 +825,13 @@ UpperBoundingSolver::_check_ineq_squash(const std::vector<double> &modelOutput)
 SUBSOLVER_RETCODE
 UpperBoundingSolver::_check_bounds(const std::vector<double> &currentPoint) const
 {
+
     _logger->print_message("  Checking feasibility with respect to original variable bounds.\n", VERB_ALL, UBP_VERBOSITY);
-    if (point_is_within_node_bounds(currentPoint, _originalLowerBounds, _originalUpperBounds)) {
+    if (currentPoint.empty()) {
+        _logger->print_message("  No feasible point found for UBP. Point empty.\n", VERB_ALL, UBP_VERBOSITY);
+        return SUBSOLVER_INFEASIBLE;
+    }
+    else if (point_is_within_node_bounds(currentPoint, _originalLowerBounds, _originalUpperBounds)) {
         return SUBSOLVER_FEASIBLE;
     }
     else {
-- 
GitLab