1 #ifndef HGaussianProcessSupport 2 #define HGaussianProcessSupport 3 4 #include "GaussianProcess.hpp" 5 #include "BlackBoxData.hpp" 6 #include "VectorOperations.hpp" 7 #include <vector> 8 #include <float.h> 9 #include <cmath> 10 #include <iomanip> 11 #include <assert.h> 12 13 class GaussianProcessSupport : protected VectorOperations { 14 private: 15 double *delta; 16 bool do_parameter_estimation = false; 17 int number_processes; 18 int nb_values = 0; 19 std::vector<int> update_at_evaluations; 20 int update_interval_length; 21 int next_update = 0; 22 int last_included = 0; 23 int best_index; 24 double delta_tmp; 25 double variance, mean; 26 double weight; 27 std::vector<double> gaussian_process_values; 28 std::vector<double> gaussian_process_noise; 29 std::vector< std::vector<double> > gaussian_process_nodes; 30 std::vector<int> gaussian_process_active_index; 31 std::vector<std::shared_ptr<GaussianProcess>> gaussian_processes; 32 std::vector<double> rescaled_node; 33 34 std::vector<std::vector<double>> best_index_analytic_information; 35 36 bool use_approx_gaussian_process = false; 37 bool approx_gaussian_process_active = false; 38 bool use_analytic_smoothing = false; 39 const double u_ratio = 0.15; 40 const int min_nb_u = 2; 41 int cur_nb_u_points = 0; 42 double gaussian_process_delta_factor = 3.; 43 std::vector<double> bootstrap_estimate; 44 int smoothing_ctr; 45 46 private: 47 48 int NOEXIT; 49 50 void update_gaussian_processes_for_agp( BlackBoxData&); 51 52 static double fill_width_objective(std::vector<double> const &x, 53 std::vector<double> &grad, 54 void *data); 55 static void ball_constraint(unsigned int m, double* c, unsigned n, const double *x, double *grad, void *data); 56 57 //void do_resample_u(); //TODO check if able to remove this one 58 59 protected: 60 virtual double compute_fill_width(BlackBoxData& evaluations); 61 void update_gaussian_processes ( BlackBoxData& ); 62 void update_gaussian_processes_for_gp (BlackBoxData&); 63 64 public: 65 void initialize ( const int, const int, double&, BlackBoxBaseClass *blackbox, 66 std::vector<int> const&, int , const std::string, const int exitconst, const bool use_analytic_smoothing); 67 68 int smooth_data ( BlackBoxData& ); 69 70 double evaluate_objective ( BlackBoxData const& ); 71 72 void evaluate_gaussian_process_at(const int&, std::vector<double> const&, double&, double&); 73 74 const std::vector<std::vector<double>> &get_nodes_at(const int&) const; 75 76 void get_induced_nodes_at(const int idx, std::vector<std::vector<double>> &induced_nodes); 77 78 void set_constraint_ball_center(const std::vector<double>& center); 79 80 void set_constraint_ball_radius(const double& radius); 81 82 const std::vector<std::vector<double>> &getBest_index_analytic_information() const; 83 84 void set_gaussian_process_delta(double gaussian_process_delta); 85 }; 86 87 #endif 88