Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
PcaaWeightVectorChecker.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
10
11namespace storm {
12
13class Environment;
14
15namespace modelchecker {
16namespace multiobjective {
17
24template<typename ModelType>
26 public:
27 typedef typename ModelType::ValueType ValueType;
28
29 /*
30 * Creates a weight vector checker.
31 *
32 * @param objectives The (preprocessed) objectives
33 *
34 */
35
37
38 virtual ~PcaaWeightVectorChecker() = default;
39
40 virtual void check(Environment const& env, std::vector<ValueType> const& weightVector) = 0;
41
48 virtual std::vector<ValueType> getUnderApproximationOfInitialStateResults() const = 0;
49 virtual std::vector<ValueType> getOverApproximationOfInitialStateResults() const = 0;
50
59 void setWeightedPrecision(ValueType const& value);
60
64 ValueType const& getWeightedPrecision() const;
65
71
72 protected:
78 boost::optional<ValueType> computeWeightedResultBound(bool lower, std::vector<ValueType> const& weightVector,
79 storm::storage::BitVector const& objectiveFilter) const;
80
81 // The (preprocessed) objectives
82 std::vector<Objective<ValueType>> objectives;
83 // The precision of this weight vector checker.
85};
86
87template<typename ModelType>
89 public:
90 template<typename VT = typename ModelType::ValueType,
91 typename std::enable_if<std::is_same<ModelType, storm::models::sparse::Mdp<VT>>::value, int>::type = 0>
92 static std::unique_ptr<PcaaWeightVectorChecker<ModelType>> create(
94
95 template<typename VT = typename ModelType::ValueType,
96 typename std::enable_if<std::is_same<ModelType, storm::models::sparse::MarkovAutomaton<VT>>::value, int>::type = 0>
97 static std::unique_ptr<PcaaWeightVectorChecker<ModelType>> create(
99};
100
101} // namespace multiobjective
102} // namespace modelchecker
103} // namespace storm
boost::optional< ValueType > computeWeightedResultBound(bool lower, std::vector< ValueType > const &weightVector, storm::storage::BitVector const &objectiveFilter) const
Computes the weighted lower or upper bounds for the provided set of objectives.
virtual std::vector< ValueType > getOverApproximationOfInitialStateResults() const =0
virtual void check(Environment const &env, std::vector< ValueType > const &weightVector)=0
void setWeightedPrecision(ValueType const &value)
Sets the precision of this weight vector checker.
ValueType const & getWeightedPrecision() const
Returns the precision of this weight vector checker.
virtual storm::storage::Scheduler< ValueType > computeScheduler() const
Retrieves a scheduler that induces the current values (if such a scheduler was generated).
virtual std::vector< ValueType > getUnderApproximationOfInitialStateResults() const =0
Retrieves the results of the individual objectives at the initial state of the given model.
static std::unique_ptr< PcaaWeightVectorChecker< ModelType > > create(preprocessing::SparseMultiObjectivePreprocessorResult< ModelType > const &preprocessorResult)
static std::unique_ptr< PcaaWeightVectorChecker< ModelType > > create(preprocessing::SparseMultiObjectivePreprocessorResult< ModelType > const &preprocessorResult)
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
This class defines which action is chosen in a particular state of a non-deterministic model.
Definition Scheduler.h:18
LabParser.cpp.
Definition cli.cpp:18