parameter_distributions.h Source File
|
CPP API
|
parameter_distributions.h
Go to the documentation of this file.
43 Visitor<class ParameterDistributionNormal, class ParameterDistributionUniform, class ParameterDistributionLogNormal,
52 Visitable<Derived, class ParameterDistribution, ParameterDistributionVisitor, ConstParameterDistributionVisitor>;
72 * Parameter Distribution class representing a generic distribution and contains predefined samples
152 m_predefined_samples; // if these values are set; no real sample will occur but these values will be taken
159 class ParameterDistributionNormal : public VisitableParameterDistribution<ParameterDistributionNormal>
180 ParameterDistributionNormal(ScalarType lower_bound, ScalarType upper_bound, ScalarType mean, ScalarType quantile)
187 // if upper and lower bound are given, the standard deviation is calculated such that [lower_bound, upper_bound] represent the 0.995 quartile]
230 log_warning("Standard deviation reduced to fit 99% of the distribution within [lowerbound,upperbound].");
247 bool adapt_standard_dev(ScalarType& standard_dev, ScalarType upper_bound, ScalarType lower_bound)
299 const ParameterDistributionNormal* PDNormal = dynamic_cast<const ParameterDistributionNormal*>(&other);
423 ScalarType>::max(); // upper bound and lower bound can be given to the constructor instead of stddev
430 void details::SerializationVisitor<IOObj>::visit(const ParameterDistributionNormal& normal_dist)
439 class ParameterDistributionUniform : public VisitableParameterDistribution<ParameterDistributionUniform>
452 const ParameterDistributionUniform* PDUniform = dynamic_cast<const ParameterDistributionUniform*>(&other);
454 return (m_lower_bound < PDUniform->m_lower_bound) && (m_upper_bound < PDUniform->m_upper_bound);
520 static IOResult<ParameterDistributionUniform> deserialize_elements(IOContext& io, IOObject& obj)
557 void details::SerializationVisitor<IOObj>::visit(const ParameterDistributionUniform& uniform_dist)
566 class ParameterDistributionLogNormal : public VisitableParameterDistribution<ParameterDistributionLogNormal>
579 const ParameterDistributionLogNormal* PDLogNorm = dynamic_cast<const ParameterDistributionLogNormal*>(&other);
647 static IOResult<ParameterDistributionLogNormal> deserialize_elements(IOContext& io, IOObject& obj)
684 void details::SerializationVisitor<IOObj>::visit(const ParameterDistributionLogNormal& uniform_dist)
693 class ParameterDistributionExponential : public VisitableParameterDistribution<ParameterDistributionExponential>
768 static IOResult<ParameterDistributionExponential> deserialize_elements(IOContext& io, IOObject& obj)
803 void details::SerializationVisitor<IOObj>::visit(const ParameterDistributionExponential& uniform_dist)
812 class ParameterDistributionConstant : public VisitableParameterDistribution<ParameterDistributionConstant>
823 const ParameterDistributionConstant* PDConstantl = dynamic_cast<const ParameterDistributionConstant*>(&other);
881 static IOResult<ParameterDistributionConstant> deserialize_elements(IOContext& io, IOObject& obj)
915 void details::SerializationVisitor<IOObj>::visit(const ParameterDistributionConstant& uniform_dist)
953 return failure(StatusCode::InvalidValue, "Type of ParameterDistribution " + type.value() + " not valid.");
Definition: parameter_distributions.h:813
ScalarType sample(RNG &)
Definition: parameter_distributions.h:846
ScalarType get_rand_sample(RandomNumberGenerator &rng) override
Definition: parameter_distributions.h:851
void serialize_elements(IOObject &obj) const
Definition: parameter_distributions.h:867
std::vector< ScalarType > params() const override
Definition: parameter_distributions.h:832
ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &rng) override
Definition: parameter_distributions.h:856
void serialize(IOContext &io) const
Definition: parameter_distributions.h:874
ParameterDistribution * clone() const override
Definition: parameter_distributions.h:861
static IOResult< ParameterDistributionConstant > deserialize(IOContext &io)
Definition: parameter_distributions.h:904
static IOResult< ParameterDistributionConstant > deserialize_elements(IOContext &io, IOObject &obj)
Definition: parameter_distributions.h:881
ScalarType get_constant() const
Definition: parameter_distributions.h:837
ParameterDistributionConstant(ScalarType constant)
Definition: parameter_distributions.h:815
bool smaller_impl(const ParameterDistribution &other) const override
Definition: parameter_distributions.h:821
ScalarType m_constant
Definition: parameter_distributions.h:911
Definition: parameter_distributions.h:694
ExponentialDistribution< ScalarType >::ParamType m_distribution
Definition: parameter_distributions.h:799
std::vector< ScalarType > params() const override
Definition: parameter_distributions.h:715
ScalarType get_rate() const
Definition: parameter_distributions.h:720
ParameterDistribution * clone() const override
Definition: parameter_distributions.h:748
ScalarType m_rate
Definition: parameter_distributions.h:798
ParameterDistributionExponential(ScalarType rate)
Definition: parameter_distributions.h:696
ScalarType sample(RNG &rng)
Definition: parameter_distributions.h:729
static IOResult< ParameterDistributionExponential > deserialize_elements(IOContext &io, IOObject &obj)
Definition: parameter_distributions.h:768
void serialize(IOContext &io) const
Definition: parameter_distributions.h:761
bool smaller_impl(const ParameterDistribution &other) const override
Definition: parameter_distributions.h:703
static IOResult< ParameterDistributionExponential > deserialize(IOContext &io)
Definition: parameter_distributions.h:791
ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &rng) override
Definition: parameter_distributions.h:743
ScalarType get_rand_sample(RandomNumberGenerator &rng) override
Definition: parameter_distributions.h:738
void serialize_elements(IOObject &obj) const
Definition: parameter_distributions.h:754
Definition: parameter_distributions.h:567
ParameterDistribution * clone() const override
Definition: parameter_distributions.h:626
void serialize(IOContext &io) const
Definition: parameter_distributions.h:640
ScalarType get_rand_sample(RandomNumberGenerator &rng) override
Definition: parameter_distributions.h:616
std::vector< ScalarType > params() const override
Definition: parameter_distributions.h:588
bool smaller_impl(const ParameterDistribution &other) const override
Definition: parameter_distributions.h:577
LogNormalDistribution< ScalarType >::ParamType m_distribution
Definition: parameter_distributions.h:680
ScalarType get_log_stddev() const
Definition: parameter_distributions.h:598
ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &rng) override
Definition: parameter_distributions.h:621
void serialize_elements(IOObject &obj) const
Definition: parameter_distributions.h:632
ScalarType m_log_mean
Definition: parameter_distributions.h:678
ParameterDistributionLogNormal(ScalarType log_mean, ScalarType log_stddev)
Definition: parameter_distributions.h:569
ScalarType sample(RNG &rng)
Definition: parameter_distributions.h:607
static IOResult< ParameterDistributionLogNormal > deserialize_elements(IOContext &io, IOObject &obj)
Definition: parameter_distributions.h:647
ScalarType m_log_stddev
Definition: parameter_distributions.h:679
ScalarType get_log_mean() const
Definition: parameter_distributions.h:593
static IOResult< ParameterDistributionLogNormal > deserialize(IOContext &io)
Definition: parameter_distributions.h:671
Definition: parameter_distributions.h:160
bool smaller_impl(const ParameterDistribution &other) const override
Definition: parameter_distributions.h:297
ScalarType get_rand_sample(RandomNumberGenerator &rng) override
Definition: parameter_distributions.h:352
ScalarType get_mean() const
Definition: parameter_distributions.h:267
void serialize_elements(IOObject &obj) const
Definition: parameter_distributions.h:363
ScalarType m_standard_dev
Definition: parameter_distributions.h:421
ParameterDistributionNormal(ScalarType mean, ScalarType standard_dev)
Definition: parameter_distributions.h:170
ScalarType m_upper_bound
Definition: parameter_distributions.h:422
ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &rng) override
Definition: parameter_distributions.h:357
ScalarType sample(RNG &rng)
Definition: parameter_distributions.h:320
NormalDistribution< ScalarType >::ParamType m_distribution
Definition: parameter_distributions.h:426
static IOResult< ParameterDistributionNormal > deserialize_elements(IOContext &io, IOObject &obj)
Definition: parameter_distributions.h:381
ScalarType m_lower_bound
Definition: parameter_distributions.h:424
ScalarType m_quantile
Definition: parameter_distributions.h:425
ParameterDistributionNormal()
Definition: parameter_distributions.h:162
ScalarType get_lower_bound() const
Definition: parameter_distributions.h:287
ParameterDistributionNormal(ScalarType lower_bound, ScalarType upper_bound, ScalarType mean, ScalarType quantile)
Definition: parameter_distributions.h:180
bool adapt_mean(ScalarType &mean)
Definition: parameter_distributions.h:236
static IOResult< ParameterDistributionNormal > deserialize(IOContext &io)
Definition: parameter_distributions.h:408
void set_upper_bound(ScalarType upper_bound)
Definition: parameter_distributions.h:282
void set_lower_bound(ScalarType lower_bound)
Definition: parameter_distributions.h:277
void serialize(IOContext &io) const
Definition: parameter_distributions.h:374
ParameterDistribution * clone() const override
Definition: parameter_distributions.h:414
void set_mean(ScalarType mean)
Definition: parameter_distributions.h:206
void set_standard_dev(ScalarType standard_dev)
Definition: parameter_distributions.h:262
bool check_quantiles(ScalarType &mean, ScalarType &standard_dev)
Definition: parameter_distributions.h:220
bool adapt_standard_dev(ScalarType &standard_dev, ScalarType upper_bound, ScalarType lower_bound)
Definition: parameter_distributions.h:247
ScalarType get_upper_bound() const
Definition: parameter_distributions.h:292
std::vector< ScalarType > params() const override
Definition: parameter_distributions.h:308
bool check_quantiles()
Definition: parameter_distributions.h:211
ScalarType get_standard_dev() const
Definition: parameter_distributions.h:272
ParameterDistributionNormal(ScalarType lower_bound, ScalarType upper_bound, ScalarType mean, ScalarType standard_dev, ScalarType quantile)
Definition: parameter_distributions.h:193
Definition: parameter_distributions.h:440
void serialize(IOContext &io) const
Definition: parameter_distributions.h:513
static IOResult< ParameterDistributionUniform > deserialize(IOContext &io)
Definition: parameter_distributions.h:544
bool smaller_impl(const ParameterDistribution &other) const override
Definition: parameter_distributions.h:450
ScalarType sample(RNG &rng)
Definition: parameter_distributions.h:480
ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &rng) override
Definition: parameter_distributions.h:494
ScalarType m_upper_bound
Definition: parameter_distributions.h:551
ScalarType get_rand_sample(RandomNumberGenerator &rng) override
Definition: parameter_distributions.h:489
std::vector< ScalarType > params() const override
Definition: parameter_distributions.h:461
UniformDistribution< ScalarType >::ParamType m_distribution
Definition: parameter_distributions.h:553
ScalarType get_upper_bound() const
Definition: parameter_distributions.h:471
static IOResult< ParameterDistributionUniform > deserialize_elements(IOContext &io, IOObject &obj)
Definition: parameter_distributions.h:520
ScalarType m_lower_bound
Definition: parameter_distributions.h:552
void serialize_elements(IOObject &obj) const
Definition: parameter_distributions.h:505
ParameterDistribution * clone() const override
Definition: parameter_distributions.h:499
ScalarType get_lower_bound() const
Definition: parameter_distributions.h:466
ParameterDistributionUniform(ScalarType lower_bound, ScalarType upper_bound)
Definition: parameter_distributions.h:442
Definition: parameter_distributions.h:75
virtual void accept(ConstParameterDistributionVisitor &visitor) const =0
void remove_predefined_samples()
Definition: parameter_distributions.h:88
const std::vector< ScalarType > & get_predefined_samples() const
Definition: parameter_distributions.h:93
virtual ParameterDistribution * clone() const =0
void serialize(IOContext &io) const
serialize this.
Definition: parameter_distributions.h:122
ParameterDistribution()
Definition: parameter_distributions.h:77
std::vector< ScalarType > m_predefined_samples
Definition: parameter_distributions.h:152
virtual void accept(ParameterDistributionVisitor &visitor)=0
This function implements the visit interface of the visitor pattern.
virtual ScalarType get_rand_sample(RandomNumberGenerator &rng)=0
virtual std::vector< ScalarType > params() const =0
Returns the distribution parameters as vector.
virtual bool smaller_impl(const ParameterDistribution &other) const =0
virtual ScalarType get_rand_sample(abm::PersonalRandomNumberGenerator &)=0
void add_predefined_sample(ScalarType sample)
Definition: parameter_distributions.h:83
virtual ~ParameterDistribution()=default
ScalarType get_sample(RNG &rng)
Definition: parameter_distributions.h:105
Random number generator of individual persons.
Definition: personal_rng.h:50
static min_max_return_type< ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > >::type min(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &a, const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &b)
Definition: ad.hpp:2599
A collection of classes to simplify handling of matrix shapes in meta programming.
Definition: models/abm/analyze_result.h:30
auto failure(const IOStatus &s)
Create an object that is implicitly convertible to an error IOResult<T>.
Definition: io.h:380
@ InvalidValue
boost::outcome_v2::in_place_type_t< T > Tag
Type that is used for overload resolution.
Definition: io.h:407
void log_warning(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:112
details::ApplyResultT< F, T... > apply(IOContext &io, F f, const IOResult< T > &... rs)
Evaluate a function with zero or more unpacked IOResults as arguments.
Definition: io.h:481
auto success()
Create an object that is implicitly convertible to a succesful IOResult<void>.
Definition: io.h:359
auto max(const Eigen::MatrixBase< A > &a, B &&b)
coefficient wise maximum of two matrices.
Definition: eigen_util.h:171
boost::outcome_v2::unchecked< T, IOStatus > IOResult
Value-or-error type for operations that return a value but can fail.
Definition: io.h:353
IOResult< T > deserialize_internal(IOContext &io, Tag< T > tag)
Deserialization implementation for the default serialization feature.
Definition: default_serialize.h:236
Definition: visitor.h:71
Definition: visitor.h:90
Definition: parameter_distributions.h:57
virtual void visit(const ParameterDistributionNormal &normal_dist) final
Definition: parameter_distributions.h:430
SerializationVisitor(IOObj &o)
Definition: parameter_distributions.h:58
Generated by