Browse Source
added export of constraints and resultfile
added export of constraints and resultfile
Former-commit-id: 9389adfeae
tempestpy_adaptions
sjunges
10 years ago
11 changed files with 307 additions and 23 deletions
-
3src/adapters/extendedCarl.h
-
63src/modelchecker/reachability/CollectConstraints.h
-
2src/modelchecker/reachability/DirectEncoding.h
-
8src/settings/Option.h
-
43src/settings/modules/ParametricSettings.cpp
-
47src/settings/modules/ParametricSettings.h
-
5src/storage/parameters.h
-
48src/stormParametric.cpp
-
8src/utility/cli.h
-
52src/utility/constants.h
-
51src/utility/export.h
@ -0,0 +1,63 @@ |
|||||
|
/** |
||||
|
* @file: CollectConstraints.h |
||||
|
* @author: Sebastian Junges |
||||
|
* |
||||
|
* @since October 8, 2014 |
||||
|
*/ |
||||
|
|
||||
|
#pragma once |
||||
|
#include "src/models/Dtmc.h" |
||||
|
|
||||
|
|
||||
|
namespace storm { |
||||
|
namespace modelchecker { |
||||
|
namespace reachability { |
||||
|
template<typename ValueType> |
||||
|
class CollectConstraints |
||||
|
{ |
||||
|
private: |
||||
|
std::unordered_set<carl::Constraint<ValueType>> wellformedConstraintSet; |
||||
|
std::unordered_set<carl::Constraint<ValueType>> graphPreservingConstraintSet; |
||||
|
|
||||
|
public: |
||||
|
std::unordered_set<carl::Constraint<ValueType>> const& wellformedConstraints() const { |
||||
|
return this->wellformedConstraintSet; |
||||
|
} |
||||
|
|
||||
|
std::unordered_set<carl::Constraint<ValueType>> const& graphPreservingConstraints() const { |
||||
|
return this->graphPreservingConstraintSet; |
||||
|
} |
||||
|
|
||||
|
void process(storm::models::Dtmc<ValueType> const& dtmc) |
||||
|
{ |
||||
|
for(uint_fast64_t state = 0; state < dtmc.getNumberOfStates(); ++state) |
||||
|
{ |
||||
|
ValueType sum; |
||||
|
assert(storm::utility::isZero(sum)); |
||||
|
for(auto const& transition : dtmc.getRows(state)) |
||||
|
{ |
||||
|
sum += transition.getValue(); |
||||
|
if(!transition.getValue().isConstant()) |
||||
|
{ |
||||
|
wellformedConstraintSet.emplace(transition.getValue() - 1, storm::CompareRelation::LEQ); |
||||
|
wellformedConstraintSet.emplace(transition.getValue(), storm::CompareRelation::GEQ); |
||||
|
graphPreservingConstraintSet.emplace(transition.getValue(), storm::CompareRelation::GT); |
||||
|
} |
||||
|
} |
||||
|
assert(!sum.isConstant() || storm::utility::isOne(sum)); |
||||
|
if(!sum.isConstant()) { |
||||
|
wellformedConstraintSet.emplace(sum - 1, storm::CompareRelation::EQ); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void operator()(storm::models::Dtmc<ValueType> const& dtmc) |
||||
|
{ |
||||
|
process(dtmc); |
||||
|
} |
||||
|
|
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,51 @@ |
|||||
|
/** |
||||
|
* @file: export.h |
||||
|
* @author: Sebastian Junges |
||||
|
* |
||||
|
* @since October 7, 2014 |
||||
|
*/ |
||||
|
|
||||
|
#ifndef STORM_UTILITY_EXPORT_H_ |
||||
|
#define STORM_UTILITY_EXPORT_H_ |
||||
|
|
||||
|
#include <iostream> |
||||
|
|
||||
|
#include "src/storage/parameters.h" |
||||
|
#include "src/settings/modules/ParametricSettings.h" |
||||
|
#include "src/modelchecker/reachability/CollectConstraints.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace utility { |
||||
|
|
||||
|
template<typename ValueType> |
||||
|
void exportParametricMcResult(const ValueType& mcresult, storm::modelchecker::reachability::CollectConstraints<storm::RationalFunction> const& constraintCollector) { |
||||
|
std::string path = storm::settings::parametricSettings().exportResultPath(); |
||||
|
std::ofstream filestream; |
||||
|
filestream.open(path); |
||||
|
// todo add checks. |
||||
|
filestream << "!Parameters: "; |
||||
|
std::set<storm::Variable> vars = mcresult.gatherVariables(); |
||||
|
std::copy(vars.begin(), vars.end(), std::ostream_iterator<storm::Variable>(filestream, " ")); |
||||
|
filestream << std::endl; |
||||
|
filestream << "!Result: " << mcresult << std::endl; |
||||
|
filestream << "!Well-formed Constraints: " << std::endl; |
||||
|
std::copy(constraintCollector.wellformedConstraints().begin(), constraintCollector.wellformedConstraints().end(), std::ostream_iterator<carl::Constraint<ValueType>>(filestream, "\n")); |
||||
|
filestream << "!Graph-preserving Constraints: " << std::endl; |
||||
|
std::copy(constraintCollector.graphPreservingConstraints().begin(), constraintCollector.graphPreservingConstraints().end(), std::ostream_iterator<carl::Constraint<ValueType>>(filestream, "\n")); |
||||
|
filestream.close(); |
||||
|
} |
||||
|
|
||||
|
void exportStringStreamToFile(std::stringstream& stream, std::string filepath) { |
||||
|
// todo add checks. |
||||
|
std::ofstream filestream; |
||||
|
filestream.open(filepath); |
||||
|
filestream << stream.str(); |
||||
|
filestream.close(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
#endif |
Write
Preview
Loading…
Cancel
Save
Reference in new issue