|
|
@ -20,7 +20,7 @@ class DFTAnalyser { |
|
|
|
std::chrono::duration<double> totalTime = std::chrono::duration<double>::zero(); |
|
|
|
ValueType checkResult = storm::utility::zero<ValueType>(); |
|
|
|
public: |
|
|
|
void check(storm::storage::DFT<ValueType> dft , std::shared_ptr<const storm::logic::Formula> const& formula, bool symred = true, bool allowModularisation = true) { |
|
|
|
void check(storm::storage::DFT<ValueType> dft , std::shared_ptr<const storm::logic::Formula> const& formula, bool symred = true, bool allowModularisation = true, bool enableDC = true) { |
|
|
|
|
|
|
|
// Building DFT |
|
|
|
std::chrono::high_resolution_clock::time_point totalStart = std::chrono::high_resolution_clock::now(); |
|
|
@ -29,7 +29,7 @@ public: |
|
|
|
// Optimizing DFT |
|
|
|
dft = dft.optimize(); |
|
|
|
std::vector<storm::storage::DFT<ValueType>> dfts; |
|
|
|
checkResult = checkHelper(dft, formula, symred, allowModularisation); |
|
|
|
checkResult = checkHelper(dft, formula, symred, allowModularisation, enableDC); |
|
|
|
totalTime = std::chrono::high_resolution_clock::now() - totalStart; |
|
|
|
|
|
|
|
|
|
|
@ -37,7 +37,7 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
private: |
|
|
|
ValueType checkHelper(storm::storage::DFT<ValueType> const& dft , std::shared_ptr<const storm::logic::Formula> const& formula, bool symred = true, bool allowModularisation = true) { |
|
|
|
ValueType checkHelper(storm::storage::DFT<ValueType> const& dft , std::shared_ptr<const storm::logic::Formula> const& formula, bool symred = true, bool allowModularisation = true, bool enableDC = true) { |
|
|
|
std::cout << "check helper called" << std::endl; |
|
|
|
bool invResults = false; |
|
|
|
std::vector<storm::storage::DFT<ValueType>> dfts = {dft}; |
|
|
@ -67,7 +67,7 @@ private: |
|
|
|
} |
|
|
|
if(res.empty()) { |
|
|
|
// Model based modularisation. |
|
|
|
auto const& models = buildMarkovModels(dfts, formula, symred); |
|
|
|
auto const& models = buildMarkovModels(dfts, formula, symred, enableDC); |
|
|
|
|
|
|
|
|
|
|
|
for (auto const& model : models) { |
|
|
@ -98,7 +98,7 @@ private: |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
std::vector<std::shared_ptr<storm::models::sparse::Model<ValueType>>> buildMarkovModels(std::vector<storm::storage::DFT<ValueType>> const& dfts, std::shared_ptr<const storm::logic::Formula> const& formula, bool symred) { |
|
|
|
std::vector<std::shared_ptr<storm::models::sparse::Model<ValueType>>> buildMarkovModels(std::vector<storm::storage::DFT<ValueType>> const& dfts, std::shared_ptr<const storm::logic::Formula> const& formula, bool symred, bool enableDC) { |
|
|
|
std::vector<std::shared_ptr<storm::models::sparse::Model<ValueType>>> models; |
|
|
|
for(auto& dft : dfts) { |
|
|
|
std::chrono::high_resolution_clock::time_point buildingStart = std::chrono::high_resolution_clock::now(); |
|
|
@ -116,7 +116,7 @@ private: |
|
|
|
|
|
|
|
// Building Markov Automaton |
|
|
|
std::cout << "Building Model..." << std::endl; |
|
|
|
storm::builder::ExplicitDFTModelBuilder<ValueType> builder(dft, symmetries); |
|
|
|
storm::builder::ExplicitDFTModelBuilder<ValueType> builder(dft, symmetries, enableDC); |
|
|
|
typename storm::builder::ExplicitDFTModelBuilder<ValueType>::LabelOptions labeloptions; // TODO initialize this with the formula |
|
|
|
std::shared_ptr<storm::models::sparse::Model<ValueType>> model = builder.buildModel(labeloptions); |
|
|
|
//model->printModelInformationToStream(std::cout); |
|
|
|