Storm 1.11.1.1
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
51 virtual void check(Environment const& env, std::vector<ValueType> weightVector) = 0;
52
63 virtual std::vector<ValueType> getAchievablePoint() const = 0;
64
72 virtual ValueType getOptimalWeightedSum() const = 0;
73
79
86 void setWeightedPrecision(ValueType const& value);
87
91 ValueType const& getWeightedPrecision() const;
92
98 virtual bool smallPrecisionsAreChallenging() const;
99
100 protected:
106 boost::optional<ValueType> computeWeightedResultBound(bool lower, std::vector<ValueType> const& weightVector,
107 storm::storage::BitVector const& objectiveFilter) const;
108
109 // The (preprocessed) objectives
110 std::vector<Objective<ValueType>> objectives;
111
112 private:
113 // The precision of this weight vector checker.
114 std::optional<ValueType> weightedPrecision;
115};
116
117template<typename ModelType>
118std::unique_ptr<PcaaWeightVectorChecker<ModelType>> createWeightVectorChecker(
120
121} // namespace multiobjective
122} // namespace modelchecker
123} // namespace storm
virtual std::vector< ValueType > getAchievablePoint() const =0
Retrieves the result of the individual objectives at the initial state of the given model.
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 ValueType getOptimalWeightedSum() const =0
Retrieves the optimal weighted sum of the objective values (or an upper bound thereof).
virtual bool smallPrecisionsAreChallenging() const
Returns whether achieving precise values (i.e.
void setWeightedPrecision(ValueType const &value)
Sets the precision of this weight vector checker.
ValueType const & getWeightedPrecision() const
Returns the current precision of this weight vector checker as specified by setWeightedPrecision().
virtual storm::storage::Scheduler< ValueType > computeScheduler() const
Retrieves a scheduler that induces the current values (if such a scheduler was generated).
virtual void check(Environment const &env, std::vector< ValueType > weightVector)=0
Solves the Weighted Sum Optimization Problem for the given weight vector.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
This class defines which action is chosen in a particular state of a non-deterministic model.
Definition Scheduler.h:18
std::unique_ptr< PcaaWeightVectorChecker< ModelType > > createWeightVectorChecker(preprocessing::SparseMultiObjectivePreprocessorResult< ModelType > const &preprocessorResult)