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