Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SparsePcaaQuantitativeQuery.h
Go to the documentation of this file.
1#ifndef STORM_MODELCHECKER_MULTIOBJECTIVE_PCAA_SPARSEPCAAQUANTITATIVEQUERY_H_
2#define STORM_MODELCHECKER_MULTIOBJECTIVE_PCAA_SPARSEPCAAQUANTITATIVEQUERY_H_
3
5
6namespace storm {
7namespace modelchecker {
8namespace multiobjective {
9
10/*
11 * This class represents a query for the Pareto curve approximation algorithm (Pcaa).
12 * It implements the necessary computations for the different query types.
13 */
14template<class SparseModelType, typename GeometryValueType>
15class SparsePcaaQuantitativeQuery : public SparsePcaaQuery<SparseModelType, GeometryValueType> {
16 public:
17 // Typedefs for simple geometric objects
18 typedef std::vector<GeometryValueType> Point;
19 typedef std::vector<GeometryValueType> WeightVector;
20
21 /*
22 * Creates a new query for the Pareto curve approximation algorithm (Pcaa)
23 * @param preprocessorResult the result from preprocessing
24 */
26
27 virtual ~SparsePcaaQuantitativeQuery() = default;
28
29 /*
30 * Invokes the computation and retrieves the result
31 */
32 virtual std::unique_ptr<CheckResult> check(Environment const& env) override;
33
34 private:
35 void initializeThresholdData();
36
37 /*
38 * Returns whether the given thresholds are achievable.
39 */
40 bool checkAchievability(Environment const& env);
41
42 /*
43 * Updates the precision of the weightVectorChecker w.r.t. the provided weights
44 */
45 void updateWeightedPrecisionInAchievabilityPhase(WeightVector const& weights);
46 void updateWeightedPrecisionInImprovingPhase(Environment const& env, WeightVector const& weights);
47
48 /*
49 * Given that the thresholds are achievable, this function further refines the approximations and returns the optimized value
50 */
51 GeometryValueType improveSolution(Environment const& env);
52
53 /*
54 * Returns true iff there is one point in the given polytope that satisfies the given thresholds.
55 * It is assumed that the given polytope contains the downward closure of its vertices.
56 */
57 bool checkIfThresholdsAreSatisfied(std::shared_ptr<storm::storage::geometry::Polytope<GeometryValueType>> const& polytope);
58
59 uint_fast64_t indexOfOptimizingObjective;
60
61 Point thresholds;
62 storm::storage::BitVector strictThresholds;
63 std::shared_ptr<storm::storage::geometry::Polytope<GeometryValueType>> thresholdsAsPolytope;
64};
65
66} // namespace multiobjective
67} // namespace modelchecker
68} // namespace storm
69
70#endif /* STORM_MODELCHECKER_MULTIOBJECTIVE_PCAA_SPARSEPCAAQUANTITATIVEQUERY_H_ */
virtual std::unique_ptr< CheckResult > check(Environment const &env) override
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
LabParser.cpp.
Definition cli.cpp:18