Storm
A Modern Probabilistic Model Checker
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BEProbability.h
Go to the documentation of this file.
1#pragma once
2
3#include "DFTBE.h"
4
5namespace storm::dft {
6namespace storage {
7namespace elements {
8
12template<typename ValueType>
13class BEProbability : public DFTBE<ValueType> {
14 public:
22 BEProbability(size_t id, std::string const& name, ValueType failureProbability, ValueType dormancyFactor)
23 : DFTBE<ValueType>(id, name), mActiveFailureProbability(failureProbability), mPassiveFailureProbability(dormancyFactor * failureProbability) {
24 // Intentionally empty
25 }
26
27 std::shared_ptr<DFTElement<ValueType>> clone() const override {
28 return std::shared_ptr<DFTElement<ValueType>>(
29 new BEProbability<ValueType>(this->id(), this->name(), this->activeFailureProbability(), this->dormancyFactor()));
30 }
31
35
36 bool canFail() const override {
37 STORM_LOG_ASSERT(!storm::utility::isZero(this->activeFailureProbability()), "BE CONST should have failure probability > 0.");
38 return true;
39 }
40
45 ValueType const& activeFailureProbability() const {
46 return mActiveFailureProbability;
47 }
48
53 ValueType const& passiveFailureProbability() const {
54 return mPassiveFailureProbability;
55 }
56
61 ValueType dormancyFactor() const {
62 STORM_LOG_ASSERT(!storm::utility::isZero<ValueType>(this->activeFailureProbability()), "Active failure probability should not be zero.");
64 }
65
66 ValueType getUnreliability(ValueType time) const override;
67
68 std::string distributionString() const override {
69 std::stringstream stream;
70 stream << "prob " << this->activeFailureProbability() << ", " << this->passiveFailureProbability();
71 return stream.str();
72 }
73
74 private:
75 ValueType mActiveFailureProbability;
76 ValueType mPassiveFailureProbability;
77};
78
79} // namespace elements
80} // namespace storage
81} // namespace storm::dft
BE with constant (Bernoulli) failure probability distribution.
std::shared_ptr< DFTElement< ValueType > > clone() const override
Create a shallow copy of the element.
ValueType const & activeFailureProbability() const
Return failure probability in active state.
ValueType getUnreliability(ValueType time) const override
Return the unreliability of the BE up to the given time point.
bool canFail() const override
Return whether the BE can fail.
ValueType dormancyFactor() const
Return dormancy factor given by passive_failure_rate / active_failure_rate.
storm::dft::storage::elements::BEType beType() const override
Get type of BE (constant, exponential, etc.).
std::string distributionString() const override
Print information about failure distribution to string.
ValueType const & passiveFailureProbability() const
Return failure probability in passive state.
BEProbability(size_t id, std::string const &name, ValueType failureProbability, ValueType dormancyFactor)
Constructor.
Abstract base class for basic events (BEs) in DFTs.
Definition DFTBE.h:14
virtual size_t id() const
Get id.
Definition DFTElement.h:73
virtual std::string const & name() const
Get name.
Definition DFTElement.h:89
#define STORM_LOG_ASSERT(cond, message)
Definition macros.h:11
bool isZero(ValueType const &a)
Definition constants.cpp:41