15 #ifndef CORE_MULTI_SIMULATION_EXPERIMENT_H_
16 #define CORE_MULTI_SIMULATION_EXPERIMENT_H_
30 namespace experimental {
40 const TimeSeries&>* post_simulation =
nullptr) {
43 bool use_real_data =
true;
49 use_real_data =
false;
54 std::vector<TimeSeries> results(iterations);
55 for (
size_t i = 0; i < iterations; i++) {
56 Param param_copy = *param;
57 simulation(¶m_copy, &results[i]);
63 [](
const std::vector<real_t> all_y_values,
real_t* y,
66 TMath::Mean(all_y_values.begin(), all_y_values.end());
71 if (post_simulation) {
72 (*post_simulation)(results, simulated, *real_ts);
static Database * GetInstance()
static void Merge(TimeSeries *merged, const std::vector< TimeSeries > &time_series, const std::function< void(const std::vector< real_t > &, real_t *, real_t *, real_t *)> &merger)
static real_t ComputeError(const TimeSeries &ts1, const TimeSeries &ts2)
Computes the mean squared error between ts1 and ts2
real_t Experiment(Functor< void, Param *, TimeSeries * > &simulation, size_t iterations, const Param *param, TimeSeries *real_ts=nullptr, Functor< void, const std::vector< TimeSeries > &, const TimeSeries &, const TimeSeries & > *post_simulation=nullptr)