1 #include "GaussianProcessSupport.hpp"
2 #include "BlackBoxBaseClass.hpp"
3 #include "BlackBoxData.hpp"
4 #include "gtest/gtest.h"
5 
6 //--------------------------------------------------------------------------------
7 class BlackboxMock_GPSupport : public BlackBoxBaseClass{
evaluate_samples(std::vector<double> const & samples,const unsigned int index,std::vector<double> const & x)8     double evaluate_samples ( std::vector<double> const &samples, const unsigned int index, std::vector<double>const& x ){
9       double mean = 0.;
10       for(const double& sample : samples ){
11         mean += sample;
12       }
13       return mean/samples.size();
14     }
15 };
16 
17 class Wrapper_GaussianProcessSupport : public GaussianProcessSupport
18 {
19     BlackBoxData* evaluations;
20     BlackBoxBaseClass* blackbox;
21 
22   public:
23 
Wrapper_GaussianProcessSupport()24     Wrapper_GaussianProcessSupport ( ) :
25        GaussianProcessSupport ( ) {
26 
27       double delta_input = 1.0;
28       int dim = 1;
29 
30       int nb_of_nodes = 5;
31       std::vector<double> values = {-2.9730, -0.5505, 0.1033, 0, 0.6533};
32       std::vector<double> noise = {0.04, 0.04, 0.04, 0.04, 0.04};
33       std::vector<std::vector<double>> nodes;
34       nodes.resize(nb_of_nodes);
35       for(int i = 0; i < nb_of_nodes; ++i){
36         nodes[i].resize(dim);
37       }
38       nodes[0][0] = -1;
39       nodes[1][0] = -0.45;
40       nodes[2][0] = 0;
41       nodes[3][0] = 0.5;
42       nodes[4][0] = 1;
43 
44       evaluations = new BlackBoxData(1, 1);
45       evaluations->nodes = nodes;
46       evaluations->values.resize(1);
47       evaluations->values[0] = values;
48       evaluations->noise.resize(1);
49       evaluations->noise[0] = noise;
50       evaluations->values_MC.resize(1);
51       evaluations->values_MC[0] = values;
52       evaluations->noise_MC.resize(1);
53       evaluations->noise_MC[0] = noise;
54       evaluations->active_index = {0, 1, 2, 3, 4};
55       evaluations->best_index = 2;
56 
57       int number_processes_input = 1;
58       delta_input = 1;
59       blackbox = new BlackboxMock_GPSupport();
60       std::vector<int> update_at_evaluations_input = {6, 10, 20};
61       int update_interval_length_input = 10;
62       std::string gaussian_process_type = "GP";
63       int exitconst = 0;
64       bool use_analytic_smoothing = true;
65 
66       initialize (dim, number_processes_input, delta_input, blackbox, update_at_evaluations_input,
67                     update_interval_length_input, gaussian_process_type, exitconst, use_analytic_smoothing);
68       update_gaussian_processes(*evaluations);
69       set_gaussian_process_delta(1.);
70     };
71 
test_compute_fill_width()72     int test_compute_fill_width ()
73     {
74       double result = 0.275;
75 
76       double fill_width = compute_fill_width(*evaluations);
77       return (fabs(result - fill_width) < 1e-8);
78     }
79 
80 };
81 //--------------------------------------------------------------------------------
82 
83 
84 //--------------------------------------------------------------------------------
TEST(GaussianProcessSupportTest,test_compute_fill_width)85 TEST ( GaussianProcessSupportTest, test_compute_fill_width )
86 {
87 
88   Wrapper_GaussianProcessSupport W;
89   EXPECT_EQ( 1, W.test_compute_fill_width() );
90 }
91 //--------------------------------------------------------------------------------
92