14template<storm::dd::DdType DdType,
typename ValueType>
22 !model.isNondeterministicModel(), model.getNondeterminismVariables()),
28template<storm::dd::DdType DdType,
typename ValueType>
40template<storm::dd::DdType DdType,
typename ValueType>
46 auto start = std::chrono::high_resolution_clock::now();
53 std::chrono::milliseconds::rep signatureTime = 0;
54 std::chrono::milliseconds::rep refinementTime = 0;
60 while (signatureIterator.hasNext() && !refined) {
61 auto signatureStart = std::chrono::high_resolution_clock::now();
62 auto signature = signatureIterator.next();
63 auto signatureEnd = std::chrono::high_resolution_clock::now();
65 STORM_LOG_TRACE(
"Signature " <<
refinements <<
"[" << index <<
"] DD has " << signature.getSignatureAdd().getNodeCount() <<
" nodes.");
67 auto refinementStart = std::chrono::high_resolution_clock::now();
69 auto refinementEnd = std::chrono::high_resolution_clock::now();
72 signatureTime += std::chrono::duration_cast<std::chrono::milliseconds>(signatureEnd - signatureStart).count();
73 refinementTime = std::chrono::duration_cast<std::chrono::milliseconds>(refinementEnd - refinementStart).count();
81 auto totalTimeInRefinement = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - start).count();
83 << totalTimeInRefinement <<
"ms (signature: " << signatureTime <<
"ms, refinement: " << refinementTime <<
"ms).");
91template<storm::dd::DdType DdType,
typename ValueType>
96 auto refinementStart = std::chrono::high_resolution_clock::now();
98 auto refinementEnd = std::chrono::high_resolution_clock::now();
105template<storm::dd::DdType DdType,
typename ValueType>
108 "Symbolic bisimulation currently does not support transition rewards.");
120template<storm::dd::DdType DdType,
typename ValueType>
132template<storm::dd::DdType DdType,
typename ValueType>
139template<storm::dd::DdType DdType,
typename ValueType>
144template<storm::dd::DdType DdType,
typename ValueType>
149template<storm::dd::DdType DdType,
typename ValueType>
154template<storm::dd::DdType DdType,
typename ValueType>
159template<storm::dd::DdType DdType,
typename ValueType>
virtual uint_fast64_t getNodeCount() const override
Retrieves the number of nodes necessary to represent the DD.
uint64_t getNumberOfBlocks() const
virtual bool refineWrtStateActionRewards(storm::dd::Add< DdType, ValueType > const &stateActionRewards)
std::chrono::high_resolution_clock::duration getTotalRefinementTime() const
virtual bool refineWrtStateRewards(storm::dd::Add< DdType, ValueType > const &stateRewards)
Signature< DdType, ValueType > getFullSignature() const
Retrieves the full signature of all states wrt.
Partition< DdType, ValueType > const & getStatePartition() const
Retrieves the current state partition in the refinement process.
virtual bool refine(SignatureMode const &mode=SignatureMode::Eager)
Refines the partition.
Status getStatus() const
Retrieves the status of the refinement process.
std::chrono::high_resolution_clock::duration totalSignatureTime
std::chrono::high_resolution_clock::duration totalRefinementTime
bool refineWrtRewardModel(storm::models::symbolic::StandardRewardModel< DdType, ValueType > const &rewardModel)
Refines the partition wrt.
PartitionRefiner(storm::models::symbolic::Model< DdType, ValueType > const &model, Partition< DdType, ValueType > const &initialStatePartition)
Partition< DdType, ValueType > internalRefine(SignatureComputer< DdType, ValueType > &stateSignatureComputer, SignatureRefiner< DdType, ValueType > &signatureRefiner, Partition< DdType, ValueType > const &oldPartition, Partition< DdType, ValueType > const &targetPartition, SignatureMode const &mode=SignatureMode::Eager)
std::chrono::high_resolution_clock::duration getTotalSignatureTime() const
Partition< DdType, ValueType > statePartition
SignatureRefiner< DdType, ValueType > signatureRefiner
SignatureComputer< DdType, ValueType > signatureComputer
storm::dd::Add< DdType, ValueType > const & getSignatureAdd() const
Base class for all symbolic models.
storm::dd::Add< Type, ValueType > const & getStateActionRewardVector() const
Retrieves the state-action rewards of the reward model.
bool hasStateRewards() const
Retrieves whether the reward model has state rewards.
storm::dd::Add< Type, ValueType > const & getStateRewardVector() const
Retrieves the state rewards of the reward model.
bool hasStateActionRewards() const
Retrieves whether the reward model has state-action rewards.
bool hasTransitionRewards() const
Retrieves whether the reward model has transition rewards.
#define STORM_LOG_INFO(message)
#define STORM_LOG_TRACE(message)
#define STORM_LOG_THROW(cond, exception, message)