parameter_studies.h Source File
|
CPP API
|
parameter_studies.h
Go to the documentation of this file.
59 using SimulationT = std::decay_t<std::invoke_result_t<CreateSimulationFunction, Parameters, Time, Step, size_t>>;
62 requires std::is_invocable_v<ProcessSimulationResultFunction, SimulationT<CreateSimulationFunction>, size_t>
64 std::invoke_result_t<ProcessSimulationResultFunction, SimulationT<CreateSimulationFunction>, size_t>>;
68 std::conditional_t<std::is_void_v<ProcessedResultT<CreateSimulationFunction, ProcessSimulationResultFunction>>,
73 // TODO: replacement for "set_params_distributions_normal"? Maybe a special ctor for UncertainParameterSet?
122 std::vector<SimulationT<CreateSimulationFunction>> run_serial(CreateSimulationFunction&& create_simulation)
126 [](SimulationT<CreateSimulationFunction>&& sim, size_t) -> SimulationT<CreateSimulationFunction>&& {
158 run(CreateSimulationFunction&& create_simulation, ProcessSimulationResultFunction&& process_simulation_result)
174 size_t start_run_idx = std::accumulate(run_distribution.begin(), run_distribution.begin() + rank, size_t(0));
290 run_impl(size_t start_run_idx, size_t end_run_idx, CreateSimulationFunction&& create_simulation,
317 create_simulation(std::as_const(m_parameters), std::as_const(m_t0), std::as_const(m_dt), run_idx);
320 [[maybe_unused]] const uint64_t create_counter = (thread_local_rng().get_counter() - run_rng_counter).get();
321 log_debug("ParameterStudy: Generated {} random numbers creating simulation #{}.", create_counter, run_idx);
339 m_rng.set_counter(m_rng.get_counter() + rng_totalsequence_counter<uint64_t>(m_num_runs, Counter<uint32_t>(0)));
384 auto make_sampled_graph_simulation(const Graph<typename Sim::Model, MobilityParameters<FP>>& sampled_graph, FP t0,
const unsigned char * data() const
Get the pointer to the buffer of the stream.
Definition: binary_serializer.h:111
size_t data_size() const
Get the size of the buffer of the stream.
Definition: binary_serializer.h:124
represents the mobility between two nodes.
Definition: metapopulation_mobility_instant.h:298
parameters that influence mobility.
Definition: metapopulation_mobility_instant.h:123
Class used to perform multiple simulation runs with randomly sampled parameters.
Definition: parameter_studies.h:49
size_t get_num_runs() const
Return the number of total runs that the study will make.
Definition: parameter_studies.h:220
Time m_tmax
Start and end time for the simulations.
Definition: parameter_studies.h:371
auto make_ensemble_result()
Return the ensemble result vector, or "void" in form of a char.
Definition: parameter_studies.h:266
ParameterType m_parameters
Stores parameters used to create a simulation for each run.
Definition: parameter_studies.h:369
const Parameters & get_parameters() const
Get the input parameters that each simulation in the study is created from.
Definition: parameter_studies.h:247
RandomNumberGenerator m_rng
The random number generator used by the study.
Definition: parameter_studies.h:373
size_t m_num_runs
Total number of runs (i.e. simulations) to do when calling "run".
Definition: parameter_studies.h:370
Step m_dt
Initial step size of the simulation. Some integrators may adapt their step size during simulation.
Definition: parameter_studies.h:372
ParameterStudy(const Parameters ¶meters, Time t0, Time tmax, Step dt, size_t num_runs)
Create a parameter study with some parameters.
Definition: parameter_studies.h:84
Time get_tmax() const
Return the final time point for simulations.
Definition: parameter_studies.h:226
std::vector< SimulationT< CreateSimulationFunction > > run_serial(CreateSimulationFunction &&create_simulation)
Run all simulations in serial.
Definition: parameter_studies.h:122
RandomNumberGenerator & get_rng()
Access the study's random number generator.
Definition: parameter_studies.h:258
std::decay_t< std::invoke_result_t< ProcessSimulationResultFunction, SimulationT< CreateSimulationFunction >, size_t > > ProcessedResultT
The return type of process_simulation_result. Ensures that the function is invocable.
Definition: parameter_studies.h:64
Parameters & get_parameters()
Get the input parameters that each simulation in the study is created from.
Definition: parameter_studies.h:251
EnsembleResultT< CreateSimulationFunction, ProcessSimulationResultFunction > run(CreateSimulationFunction &&create_simulation, ProcessSimulationResultFunction &&process_simulation_result)
Run all simulations distributed over multiple MPI ranks.
Definition: parameter_studies.h:158
Time get_dt() const
Return the initial step sized used by simulations.
Definition: parameter_studies.h:238
EnsembleResultT< CreateSimulationFunction, ProcessSimulationResultFunction > run_serial(CreateSimulationFunction &&create_simulation, ProcessSimulationResultFunction &&process_simulation_result)
Run all simulations in serial.
Definition: parameter_studies.h:114
Time get_t0() const
Return the initial time point for simulations.
Definition: parameter_studies.h:232
EnsembleResultT< CreateSimulationFunction, ProcessSimulationResultFunction > run_impl(size_t start_run_idx, size_t end_run_idx, CreateSimulationFunction &&create_simulation, ProcessSimulationResultFunction &&process_simulation_result)
Main loop creating and running simulations.
Definition: parameter_studies.h:290
std::conditional_t< std::is_void_v< ProcessedResultT< CreateSimulationFunction, ProcessSimulationResultFunction > >, void, std::vector< ProcessedResultT< CreateSimulationFunction, ProcessSimulationResultFunction > >> EnsembleResultT
Type returned by run functions. Is void if ProcessedResultT is, otherwise a vector of ProcessedResult...
Definition: parameter_studies.h:70
static std::vector< size_t > distribute_runs(size_t num_runs, int num_procs)
Distribute a number of runs over a number of processes.
Definition: parameter_studies.h:354
std::decay_t< std::invoke_result_t< CreateSimulationFunction, Parameters, Time, Step, size_t > > SimulationT
The return type of create_simulation. Ensures that the function is invocable.
Definition: parameter_studies.h:59
int rank(Comm comm)
Return the rank of the calling process on the given communicator.
Definition: miompi.cpp:63
A collection of classes to simplify handling of matrix shapes in meta programming.
Definition: models/abm/analyze_result.h:30
boost::outcome_v2::in_place_type_t< T > Tag
Type that is used for overload resolution.
Definition: io.h:407
IOResult< T > deserialize_binary(ByteStream &stream, Tag< T >, int flags=0)
Deserialize an object from binary format.
Definition: binary_serializer.h:468
requires(!std::is_trivial_v< T >) void BinarySerializerObject
Definition: binary_serializer.h:333
@ info
void log(LogLevel level, spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:128
void log_error(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:100
ByteStream serialize_binary(const T &t, int flags=0)
Serialize an object into binary format.
Definition: binary_serializer.h:452
void log_debug(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:118
auto make_sampled_graph_simulation(const Graph< typename Sim::Model, MobilityParameters< FP >> &sampled_graph, FP t0, FP dt_node_sim, FP dt_graph_sim)
Create a GraphSimulation from a parameter graph.
Definition: parameter_studies.h:384
RandomNumberGenerator & thread_local_rng()
Definition: random_number_generator.cpp:25
constexpr std::tuple_element< I, std::tuple< Index< CategoryTags >... > >::type & get(Index< CategoryTags... > &i) noexcept
Retrieves the Index (by reference) at the Ith position of a MultiIndex.
Definition: index.h:294
boost::outcome_v2::unchecked< T, IOStatus > IOResult
Value-or-error type for operations that return a value but can fail.
Definition: io.h:353
Generated by